@openclaw/signal 2026.9.5 → 2026.9.7

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 (1205) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{accounts-BV6tDOTc.mjs → accounts-DMtj2E-4.mjs} +6 -35
  3. package/dist/.setup/api-DEB0Obj8.mjs +16 -0
  4. package/dist/.setup/{api-Cu01dJRP.mjs → api-DmCb6e7E.mjs} +10 -10
  5. package/dist/.setup/{approval-auth-BBI9BTRm.mjs → approval-auth-CszS7gwf.mjs} +7 -13
  6. package/dist/.setup/{approval-handler.runtime-Clf_1IZj.mjs → approval-handler.runtime-D9ofZcZW.mjs} +10 -29
  7. package/dist/.setup/{approval-reactions-B25QoVJc.mjs → approval-reactions-BKkjIAoi.mjs} +25 -36
  8. package/dist/.setup/{channel-gMpZmqLx.mjs → channel-DrUxv5cf.mjs} +567 -136
  9. package/dist/.setup/{client-BseAt7F7.mjs → client-AXcDteBZ.mjs} +63 -152
  10. package/dist/.setup/client-adapter-c_O1ouxZ.mjs +30 -0
  11. package/dist/.setup/{config-schema-aQwwMGUj.mjs → config-schema-DvxZ18SD.mjs} +3 -13
  12. package/dist/.setup/{doctor-contract-api-Rbq_sRTI.mjs → doctor-contract-api-Db9V9gsY.mjs} +212 -91
  13. package/dist/.setup/{identity-YXPmgFMu.mjs → identity-B3JyPqGO.mjs} +2 -6
  14. package/dist/.setup/{install-signal-cli-bXeTrTyL.mjs → install-signal-cli-ChvjzM6X.mjs} +27 -61
  15. package/dist/.setup/legacy-transport-QIpaMNST.mjs +18 -0
  16. package/dist/.setup/{monitor-DAMQw1pZ.mjs → monitor-BfwQr78f.mjs} +102 -130
  17. package/dist/.setup/{probe-IKCS9D-z.mjs → probe-BYLzra6D.mjs} +9 -9
  18. package/dist/.setup/{reaction-runtime-api-BnQGHcrB.mjs → reaction-runtime-api-DDi5x2wC.mjs} +3 -17
  19. package/dist/.setup/{question-reactions-DSNAD0cd.mjs → reaction-targets-CEdyjtrC.mjs} +11 -8
  20. package/dist/.setup/{rpc-context-CwwADZ1b.mjs → rpc-context-D26RxFIm.mjs} +1 -1
  21. package/dist/.setup/runtime-8sxUF217.mjs +8 -0
  22. package/dist/.setup/{send-CcetN4rk.mjs → send-DEjrbpIC.mjs} +25 -55
  23. package/dist/.setup/{channel.runtime-Dqc18A1e.mjs → setup-surface-Drt-4t3R.mjs} +4 -6
  24. package/dist/.setup/transport-detection-BVUDE42e.mjs +25 -0
  25. package/dist/.setup/{transport-policy-5VSnj5ma.mjs → transport-policy-B6C_LogW.mjs} +19 -1
  26. package/dist/.setup/transport-probes.runtime-DwXEHnXr.mjs +2 -0
  27. package/dist/api.js +10 -10
  28. package/dist/channel-config-api.js +1 -1
  29. package/dist/channel-plugin-api.js +1 -1
  30. package/dist/contract-api.js +2 -2
  31. package/dist/doctor-contract-api.js +1 -1
  32. package/dist/reaction-runtime-api.js +1 -1
  33. package/dist/runtime-api.js +2 -19
  34. package/dist/setup-entry.js +1 -1
  35. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +1289 -0
  36. package/node_modules/@openclaw/fs-safe/LICENSE +22 -0
  37. package/node_modules/@openclaw/fs-safe/README.md +672 -0
  38. package/node_modules/@openclaw/fs-safe/SECURITY.md +45 -0
  39. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts +32 -0
  40. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +323 -0
  41. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +41 -0
  42. package/node_modules/@openclaw/fs-safe/dist/advanced.js +40 -0
  43. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts +1 -0
  44. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +19 -0
  45. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts +11 -0
  46. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +101 -0
  47. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +23 -0
  48. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
  49. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts +13 -0
  50. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +85 -0
  51. package/node_modules/@openclaw/fs-safe/dist/archive-errors.d.ts +12 -0
  52. package/node_modules/@openclaw/fs-safe/dist/archive-errors.js +23 -0
  53. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +20 -0
  54. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +99 -0
  55. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts +18 -0
  56. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +98 -0
  57. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts +7 -0
  58. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +71 -0
  59. package/node_modules/@openclaw/fs-safe/dist/archive-limits.d.ts +56 -0
  60. package/node_modules/@openclaw/fs-safe/dist/archive-limits.js +131 -0
  61. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +22 -0
  62. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +282 -0
  63. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.d.ts +1 -0
  64. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.js +12 -0
  65. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  66. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +85 -0
  67. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +119 -0
  68. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts +5 -0
  69. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +234 -0
  70. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +32 -0
  71. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +308 -0
  72. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +27 -0
  73. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +127 -0
  74. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts +29 -0
  75. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +203 -0
  76. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +7 -0
  77. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +96 -0
  78. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.d.ts +1 -0
  79. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.js +160 -0
  80. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +21 -0
  81. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +267 -0
  82. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +24 -0
  83. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +10 -0
  84. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +4 -0
  85. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +30 -0
  86. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +12 -0
  87. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +150 -0
  88. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +4 -0
  89. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +24 -0
  90. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +17 -0
  91. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +149 -0
  92. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +4 -0
  93. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +21 -0
  94. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +20 -0
  95. package/node_modules/@openclaw/fs-safe/dist/archive.js +332 -0
  96. package/node_modules/@openclaw/fs-safe/dist/async-lock.d.ts +1 -0
  97. package/node_modules/@openclaw/fs-safe/dist/async-lock.js +17 -0
  98. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +6 -0
  99. package/node_modules/@openclaw/fs-safe/dist/atomic.js +4 -0
  100. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.d.ts +2 -0
  101. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.js +15 -0
  102. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +25 -0
  103. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +143 -0
  104. package/node_modules/@openclaw/fs-safe/dist/byte-budget.d.ts +3 -0
  105. package/node_modules/@openclaw/fs-safe/dist/byte-budget.js +9 -0
  106. package/node_modules/@openclaw/fs-safe/dist/byte-view.d.ts +2 -0
  107. package/node_modules/@openclaw/fs-safe/dist/byte-view.js +13 -0
  108. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
  109. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +36 -0
  110. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +2 -0
  111. package/node_modules/@openclaw/fs-safe/dist/config.js +2 -0
  112. package/node_modules/@openclaw/fs-safe/dist/containment.d.ts +1 -0
  113. package/node_modules/@openclaw/fs-safe/dist/containment.js +1 -0
  114. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +21 -0
  115. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
  116. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +2 -0
  117. package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
  118. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +18 -0
  119. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +29 -0
  120. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +8 -0
  121. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +245 -0
  122. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +15 -0
  123. package/node_modules/@openclaw/fs-safe/dist/copy.js +143 -0
  124. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.d.ts +7 -0
  125. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.js +16 -0
  126. package/node_modules/@openclaw/fs-safe/dist/create.d.ts +17 -0
  127. package/node_modules/@openclaw/fs-safe/dist/create.js +388 -0
  128. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.d.ts +60 -0
  129. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.js +371 -0
  130. package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.d.ts +2 -0
  131. package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.js +71 -0
  132. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts +11 -0
  133. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +96 -0
  134. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts +14 -0
  135. package/node_modules/@openclaw/fs-safe/dist/device-path.js +139 -0
  136. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts +43 -0
  137. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +286 -0
  138. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +2 -0
  139. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
  140. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +54 -0
  141. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +176 -0
  142. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +39 -0
  143. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +285 -0
  144. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.d.ts +23 -0
  145. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +121 -0
  146. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +4 -0
  147. package/node_modules/@openclaw/fs-safe/dist/durability.js +3 -0
  148. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +1 -0
  149. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +22 -0
  150. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts +2 -0
  151. package/node_modules/@openclaw/fs-safe/dist/error-detail.js +13 -0
  152. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +15 -0
  153. package/node_modules/@openclaw/fs-safe/dist/errors.js +27 -0
  154. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.d.ts +19 -0
  155. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.js +81 -0
  156. package/node_modules/@openclaw/fs-safe/dist/file-contents.d.ts +5 -0
  157. package/node_modules/@openclaw/fs-safe/dist/file-contents.js +40 -0
  158. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +15 -0
  159. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +190 -0
  160. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +16 -0
  161. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +296 -0
  162. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts +7 -0
  163. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +56 -0
  164. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.d.ts +22 -0
  165. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +98 -0
  166. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.d.ts +17 -0
  167. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +58 -0
  168. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  169. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +303 -0
  170. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +17 -0
  171. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +66 -0
  172. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +25 -0
  173. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +392 -0
  174. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +40 -0
  175. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +209 -0
  176. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.d.ts +16 -0
  177. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.js +275 -0
  178. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +11 -0
  179. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.js +58 -0
  180. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.d.ts +1 -0
  181. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.js +90 -0
  182. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +34 -0
  183. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.js +288 -0
  184. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.d.ts +19 -0
  185. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.js +199 -0
  186. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts +17 -0
  187. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +341 -0
  188. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts +23 -0
  189. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +66 -0
  190. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +8 -0
  191. package/node_modules/@openclaw/fs-safe/dist/file-observation.js +22 -0
  192. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +34 -0
  193. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +174 -0
  194. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts +11 -0
  195. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +110 -0
  196. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +15 -0
  197. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +319 -0
  198. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +9 -0
  199. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +128 -0
  200. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +62 -0
  201. package/node_modules/@openclaw/fs-safe/dist/file-store.js +360 -0
  202. package/node_modules/@openclaw/fs-safe/dist/file-sync.d.ts +4 -0
  203. package/node_modules/@openclaw/fs-safe/dist/file-sync.js +19 -0
  204. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +8 -0
  205. package/node_modules/@openclaw/fs-safe/dist/filename.js +138 -0
  206. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts +12 -0
  207. package/node_modules/@openclaw/fs-safe/dist/fs.js +30 -0
  208. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +25 -0
  209. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +281 -0
  210. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +32 -0
  211. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +81 -0
  212. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +1 -0
  213. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +68 -0
  214. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +3 -0
  215. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +127 -0
  216. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +8 -0
  217. package/node_modules/@openclaw/fs-safe/dist/guest.js +433 -0
  218. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts +11 -0
  219. package/node_modules/@openclaw/fs-safe/dist/home-dir.js +149 -0
  220. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +9 -0
  221. package/node_modules/@openclaw/fs-safe/dist/index.js +5 -0
  222. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +25 -0
  223. package/node_modules/@openclaw/fs-safe/dist/install-path.js +136 -0
  224. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +32 -0
  225. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +105 -0
  226. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.d.ts +14 -0
  227. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +154 -0
  228. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +19 -0
  229. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +355 -0
  230. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +5 -0
  231. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +65 -0
  232. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +44 -0
  233. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +210 -0
  234. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts +8 -0
  235. package/node_modules/@openclaw/fs-safe/dist/json-store.js +15 -0
  236. package/node_modules/@openclaw/fs-safe/dist/json-stringify.d.ts +1 -0
  237. package/node_modules/@openclaw/fs-safe/dist/json-stringify.js +7 -0
  238. package/node_modules/@openclaw/fs-safe/dist/json.d.ts +49 -0
  239. package/node_modules/@openclaw/fs-safe/dist/json.js +323 -0
  240. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts +8 -0
  241. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +81 -0
  242. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +13 -0
  243. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
  244. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +20 -0
  245. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +160 -0
  246. package/node_modules/@openclaw/fs-safe/dist/lock-config.d.ts +9 -0
  247. package/node_modules/@openclaw/fs-safe/dist/lock-config.js +12 -0
  248. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +30 -0
  249. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +224 -0
  250. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +7 -0
  251. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
  252. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts +20 -0
  253. package/node_modules/@openclaw/fs-safe/dist/move-path.js +390 -0
  254. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +8 -0
  255. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +41 -0
  256. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +199 -0
  257. package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -0
  258. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +16 -0
  259. package/node_modules/@openclaw/fs-safe/dist/native-config.js +71 -0
  260. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +16 -0
  261. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
  262. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.d.ts +3 -0
  263. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.js +11 -0
  264. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +15 -0
  265. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +111 -0
  266. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +34 -0
  267. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +147 -0
  268. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +6 -0
  269. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +252 -0
  270. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +4 -0
  271. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +478 -0
  272. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.d.ts +11 -0
  273. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.js +61 -0
  274. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.d.ts +13 -0
  275. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.js +209 -0
  276. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.d.ts +3 -0
  277. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +8 -0
  278. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +45 -0
  279. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +442 -0
  280. package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.d.ts +13 -0
  281. package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.js +303 -0
  282. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +13 -0
  283. package/node_modules/@openclaw/fs-safe/dist/native.js +209 -0
  284. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +7 -0
  285. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +46 -0
  286. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts +15 -0
  287. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +102 -0
  288. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +16 -0
  289. package/node_modules/@openclaw/fs-safe/dist/output.js +139 -0
  290. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +7 -0
  291. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
  292. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.d.ts +1 -0
  293. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.js +54 -0
  294. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.d.ts +5 -0
  295. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.js +64 -0
  296. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +32 -0
  297. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +39 -0
  298. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +6 -0
  299. package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
  300. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts +24 -0
  301. package/node_modules/@openclaw/fs-safe/dist/path-policy.js +49 -0
  302. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +6 -0
  303. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +104 -0
  304. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +13 -0
  305. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
  306. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +6 -0
  307. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
  308. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +11 -0
  309. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +394 -0
  310. package/node_modules/@openclaw/fs-safe/dist/path.d.ts +20 -0
  311. package/node_modules/@openclaw/fs-safe/dist/path.js +185 -0
  312. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +32 -0
  313. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +194 -0
  314. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +5 -0
  315. package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +4 -0
  316. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +48 -0
  317. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +319 -0
  318. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +52 -0
  319. package/node_modules/@openclaw/fs-safe/dist/permissions.js +131 -0
  320. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +23 -0
  321. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +421 -0
  322. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +38 -0
  323. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +205 -0
  324. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +18 -0
  325. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
  326. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +30 -0
  327. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +98 -0
  328. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.d.ts +1 -0
  329. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +22 -0
  330. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.d.ts +3 -0
  331. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +35 -0
  332. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.d.ts +4 -0
  333. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.js +31 -0
  334. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.d.ts +5 -0
  335. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +185 -0
  336. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +68 -0
  337. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
  338. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +12 -0
  339. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +300 -0
  340. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +8 -0
  341. package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
  342. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts +4 -0
  343. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +30 -0
  344. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.d.ts +3 -0
  345. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.js +72 -0
  346. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +53 -0
  347. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +358 -0
  348. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +7 -0
  349. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +341 -0
  350. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
  351. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +60 -0
  352. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +27 -0
  353. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.js +22 -0
  354. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +19 -0
  355. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +332 -0
  356. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.d.ts +7 -0
  357. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.js +13 -0
  358. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +17 -0
  359. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.js +18 -0
  360. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +3 -0
  361. package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
  362. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +2 -0
  363. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
  364. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts +37 -0
  365. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +317 -0
  366. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts +6 -0
  367. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +275 -0
  368. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.d.ts +4 -0
  369. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.js +36 -0
  370. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +32 -0
  371. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +369 -0
  372. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts +20 -0
  373. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +101 -0
  374. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +46 -0
  375. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +168 -0
  376. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.d.ts +21 -0
  377. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.js +123 -0
  378. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +2 -0
  379. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
  380. package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.d.ts +26 -0
  381. package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.js +47 -0
  382. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.d.ts +5 -0
  383. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.js +30 -0
  384. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +49 -0
  385. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +368 -0
  386. package/node_modules/@openclaw/fs-safe/dist/replace-file-types.d.ts +55 -0
  387. package/node_modules/@openclaw/fs-safe/dist/replace-file-types.js +1 -0
  388. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +6 -0
  389. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +356 -0
  390. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +26 -0
  391. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +193 -0
  392. package/node_modules/@openclaw/fs-safe/dist/retained-file-types.d.ts +50 -0
  393. package/node_modules/@openclaw/fs-safe/dist/retained-file-types.js +1 -0
  394. package/node_modules/@openclaw/fs-safe/dist/retained-file.d.ts +3 -0
  395. package/node_modules/@openclaw/fs-safe/dist/retained-file.js +121 -0
  396. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
  397. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +186 -0
  398. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +43 -0
  399. package/node_modules/@openclaw/fs-safe/dist/root-context.js +233 -0
  400. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +16 -0
  401. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +93 -0
  402. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +12 -0
  403. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +225 -0
  404. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.d.ts +9 -0
  405. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.js +28 -0
  406. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +46 -0
  407. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +433 -0
  408. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +22 -0
  409. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
  410. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +10 -0
  411. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
  412. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +16 -0
  413. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +92 -0
  414. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +20 -0
  415. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +81 -0
  416. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +46 -0
  417. package/node_modules/@openclaw/fs-safe/dist/root-file.js +205 -0
  418. package/node_modules/@openclaw/fs-safe/dist/root-handle-context.d.ts +4 -0
  419. package/node_modules/@openclaw/fs-safe/dist/root-handle-context.js +12 -0
  420. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +117 -0
  421. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +1446 -0
  422. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +10 -0
  423. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +205 -0
  424. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +7 -0
  425. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
  426. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +7 -0
  427. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +90 -0
  428. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +84 -0
  429. package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
  430. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
  431. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +22 -0
  432. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +12 -0
  433. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +160 -0
  434. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +55 -0
  435. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
  436. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +4 -0
  437. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +151 -0
  438. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +53 -0
  439. package/node_modules/@openclaw/fs-safe/dist/root-path.js +440 -0
  440. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +8 -0
  441. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
  442. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +58 -0
  443. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +296 -0
  444. package/node_modules/@openclaw/fs-safe/dist/root-public-types.d.ts +11 -0
  445. package/node_modules/@openclaw/fs-safe/dist/root-public-types.js +1 -0
  446. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +25 -0
  447. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +86 -0
  448. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +12 -0
  449. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +87 -0
  450. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +16 -0
  451. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
  452. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
  453. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +464 -0
  454. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +13 -0
  455. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
  456. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +48 -0
  457. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +234 -0
  458. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +65 -0
  459. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +299 -0
  460. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +11 -0
  461. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +23 -0
  462. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +43 -0
  463. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +180 -0
  464. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.d.ts +14 -0
  465. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.js +162 -0
  466. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +7 -0
  467. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +72 -0
  468. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +23 -0
  469. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
  470. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +11 -0
  471. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +95 -0
  472. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +2 -0
  473. package/node_modules/@openclaw/fs-safe/dist/root.js +1 -0
  474. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +12 -0
  475. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +80 -0
  476. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +29 -0
  477. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +333 -0
  478. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts +3 -0
  479. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +58 -0
  480. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts +20 -0
  481. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +68 -0
  482. package/node_modules/@openclaw/fs-safe/dist/secret.d.ts +3 -0
  483. package/node_modules/@openclaw/fs-safe/dist/secret.js +3 -0
  484. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
  485. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +79 -0
  486. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +31 -0
  487. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +298 -0
  488. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +29 -0
  489. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +176 -0
  490. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +34 -0
  491. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +110 -0
  492. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +17 -0
  493. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +301 -0
  494. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +28 -0
  495. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +132 -0
  496. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +4 -0
  497. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +442 -0
  498. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.d.ts +18 -0
  499. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.js +60 -0
  500. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +41 -0
  501. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.js +113 -0
  502. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +31 -0
  503. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.js +1 -0
  504. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +20 -0
  505. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.js +48 -0
  506. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +14 -0
  507. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +113 -0
  508. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +67 -0
  509. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +374 -0
  510. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.d.ts +13 -0
  511. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.js +47 -0
  512. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts +2 -0
  513. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +79 -0
  514. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +34 -0
  515. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.js +228 -0
  516. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.d.ts +7 -0
  517. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.js +55 -0
  518. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.d.ts +68 -0
  519. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.js +1 -0
  520. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts +13 -0
  521. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +282 -0
  522. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +27 -0
  523. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +148 -0
  524. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.d.ts +16 -0
  525. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +57 -0
  526. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.d.ts +55 -0
  527. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.js +1 -0
  528. package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.d.ts +39 -0
  529. package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.js +1 -0
  530. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +10 -0
  531. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +57 -0
  532. package/node_modules/@openclaw/fs-safe/dist/store.d.ts +3 -0
  533. package/node_modules/@openclaw/fs-safe/dist/store.js +3 -0
  534. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +7 -0
  535. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +88 -0
  536. package/node_modules/@openclaw/fs-safe/dist/string-coerce.d.ts +4 -0
  537. package/node_modules/@openclaw/fs-safe/dist/string-coerce.js +16 -0
  538. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.d.ts +5 -0
  539. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.js +15 -0
  540. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts +11 -0
  541. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +109 -0
  542. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts +13 -0
  543. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +88 -0
  544. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +31 -0
  545. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +236 -0
  546. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +14 -0
  547. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +387 -0
  548. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +23 -0
  549. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +150 -0
  550. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +42 -0
  551. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +341 -0
  552. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +24 -0
  553. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +398 -0
  554. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.d.ts +8 -0
  555. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.js +52 -0
  556. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +39 -0
  557. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
  558. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +3 -0
  559. package/node_modules/@openclaw/fs-safe/dist/temp.js +2 -0
  560. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +35 -0
  561. package/node_modules/@openclaw/fs-safe/dist/test-hooks.js +13 -0
  562. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +14 -0
  563. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +18 -0
  564. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +8 -0
  565. package/node_modules/@openclaw/fs-safe/dist/timing.js +59 -0
  566. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts +4 -0
  567. package/node_modules/@openclaw/fs-safe/dist/trash.js +245 -0
  568. package/node_modules/@openclaw/fs-safe/dist/types.d.ts +22 -0
  569. package/node_modules/@openclaw/fs-safe/dist/types.js +1 -0
  570. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +2 -0
  571. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +16 -0
  572. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +37 -0
  573. package/node_modules/@openclaw/fs-safe/dist/walk.js +207 -0
  574. package/node_modules/@openclaw/fs-safe/dist/watch-alias.d.ts +6 -0
  575. package/node_modules/@openclaw/fs-safe/dist/watch-alias.js +88 -0
  576. package/node_modules/@openclaw/fs-safe/dist/watch-hints.d.ts +9 -0
  577. package/node_modules/@openclaw/fs-safe/dist/watch-hints.js +93 -0
  578. package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +36 -0
  579. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +73 -0
  580. package/node_modules/@openclaw/fs-safe/dist/watch-scan.d.ts +28 -0
  581. package/node_modules/@openclaw/fs-safe/dist/watch-scan.js +300 -0
  582. package/node_modules/@openclaw/fs-safe/dist/watch-stream.d.ts +8 -0
  583. package/node_modules/@openclaw/fs-safe/dist/watch-stream.js +32 -0
  584. package/node_modules/@openclaw/fs-safe/dist/watch-types.d.ts +60 -0
  585. package/node_modules/@openclaw/fs-safe/dist/watch-types.js +1 -0
  586. package/node_modules/@openclaw/fs-safe/dist/watch.d.ts +5 -0
  587. package/node_modules/@openclaw/fs-safe/dist/watch.js +530 -0
  588. package/node_modules/@openclaw/fs-safe/dist/windows-command.d.ts +1 -0
  589. package/node_modules/@openclaw/fs-safe/dist/windows-command.js +34 -0
  590. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +24 -0
  591. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +100 -0
  592. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
  593. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +122 -0
  594. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.d.ts +5 -0
  595. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.js +21 -0
  596. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +336 -0
  597. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +90 -0
  598. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +33 -0
  599. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +414 -0
  600. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +9 -0
  601. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +112 -0
  602. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +13 -0
  603. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +49 -0
  604. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts +4 -0
  605. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +27 -0
  606. package/node_modules/@openclaw/fs-safe/dist/write-queue.d.ts +1 -0
  607. package/node_modules/@openclaw/fs-safe/dist/write-queue.js +15 -0
  608. package/node_modules/@openclaw/fs-safe/docs/advanced.md +271 -0
  609. package/node_modules/@openclaw/fs-safe/docs/archive.md +859 -0
  610. package/node_modules/@openclaw/fs-safe/docs/assets/readme-banner.jpg +0 -0
  611. package/node_modules/@openclaw/fs-safe/docs/atomic.md +611 -0
  612. package/node_modules/@openclaw/fs-safe/docs/config.md +136 -0
  613. package/node_modules/@openclaw/fs-safe/docs/contributing.md +360 -0
  614. package/node_modules/@openclaw/fs-safe/docs/copy.md +199 -0
  615. package/node_modules/@openclaw/fs-safe/docs/creation.md +132 -0
  616. package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
  617. package/node_modules/@openclaw/fs-safe/docs/durability.md +445 -0
  618. package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
  619. package/node_modules/@openclaw/fs-safe/docs/errors.md +240 -0
  620. package/node_modules/@openclaw/fs-safe/docs/file-contents.md +68 -0
  621. package/node_modules/@openclaw/fs-safe/docs/file-store.md +369 -0
  622. package/node_modules/@openclaw/fs-safe/docs/filename.md +110 -0
  623. package/node_modules/@openclaw/fs-safe/docs/guest.md +152 -0
  624. package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
  625. package/node_modules/@openclaw/fs-safe/docs/index.md +87 -0
  626. package/node_modules/@openclaw/fs-safe/docs/install-path.md +216 -0
  627. package/node_modules/@openclaw/fs-safe/docs/install.md +252 -0
  628. package/node_modules/@openclaw/fs-safe/docs/json-store.md +240 -0
  629. package/node_modules/@openclaw/fs-safe/docs/json.md +225 -0
  630. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +150 -0
  631. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +205 -0
  632. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.6.md +48 -0
  633. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +69 -0
  634. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +193 -0
  635. package/node_modules/@openclaw/fs-safe/docs/native.md +351 -0
  636. package/node_modules/@openclaw/fs-safe/docs/output.md +193 -0
  637. package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
  638. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +74 -0
  639. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +159 -0
  640. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +204 -0
  641. package/node_modules/@openclaw/fs-safe/docs/path.md +219 -0
  642. package/node_modules/@openclaw/fs-safe/docs/permissions.md +352 -0
  643. package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
  644. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +68 -0
  645. package/node_modules/@openclaw/fs-safe/docs/public-api.md +188 -0
  646. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +154 -0
  647. package/node_modules/@openclaw/fs-safe/docs/reading.md +196 -0
  648. package/node_modules/@openclaw/fs-safe/docs/regular-file.md +193 -0
  649. package/node_modules/@openclaw/fs-safe/docs/retained-file.md +115 -0
  650. package/node_modules/@openclaw/fs-safe/docs/root.md +571 -0
  651. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +318 -0
  652. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +112 -0
  653. package/node_modules/@openclaw/fs-safe/docs/security-model.md +272 -0
  654. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +599 -0
  655. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +192 -0
  656. package/node_modules/@openclaw/fs-safe/docs/staged-symlink.md +124 -0
  657. package/node_modules/@openclaw/fs-safe/docs/store.md +129 -0
  658. package/node_modules/@openclaw/fs-safe/docs/temp.md +780 -0
  659. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +110 -0
  660. package/node_modules/@openclaw/fs-safe/docs/testing.md +399 -0
  661. package/node_modules/@openclaw/fs-safe/docs/timing.md +123 -0
  662. package/node_modules/@openclaw/fs-safe/docs/types.md +217 -0
  663. package/node_modules/@openclaw/fs-safe/docs/walk.md +283 -0
  664. package/node_modules/@openclaw/fs-safe/docs/watch.md +251 -0
  665. package/node_modules/@openclaw/fs-safe/docs/writing.md +662 -0
  666. package/node_modules/@openclaw/fs-safe/package.json +204 -0
  667. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  668. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +29 -0
  669. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  670. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +29 -0
  671. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  672. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +32 -0
  673. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  674. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +32 -0
  675. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  676. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +32 -0
  677. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  678. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +32 -0
  679. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  680. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +29 -0
  681. package/node_modules/core-util-is/LICENSE +19 -0
  682. package/node_modules/core-util-is/README.md +3 -0
  683. package/node_modules/core-util-is/lib/util.js +107 -0
  684. package/node_modules/core-util-is/package.json +38 -0
  685. package/node_modules/immediate/LICENSE.txt +20 -0
  686. package/node_modules/immediate/README.md +93 -0
  687. package/node_modules/immediate/dist/immediate.js +75 -0
  688. package/node_modules/immediate/dist/immediate.min.js +1 -0
  689. package/node_modules/immediate/lib/browser.js +69 -0
  690. package/node_modules/immediate/lib/index.js +73 -0
  691. package/node_modules/immediate/package.json +42 -0
  692. package/node_modules/inherits/LICENSE +16 -0
  693. package/node_modules/inherits/README.md +42 -0
  694. package/node_modules/inherits/inherits.js +9 -0
  695. package/node_modules/inherits/inherits_browser.js +27 -0
  696. package/node_modules/inherits/package.json +29 -0
  697. package/node_modules/isarray/.npmignore +1 -0
  698. package/node_modules/isarray/.travis.yml +4 -0
  699. package/node_modules/isarray/Makefile +6 -0
  700. package/node_modules/isarray/README.md +60 -0
  701. package/node_modules/isarray/component.json +19 -0
  702. package/node_modules/isarray/index.js +5 -0
  703. package/node_modules/isarray/package.json +45 -0
  704. package/node_modules/isarray/test.js +20 -0
  705. package/node_modules/jszip/.codeclimate.yml +16 -0
  706. package/node_modules/jszip/.editorconfig +8 -0
  707. package/node_modules/jszip/.eslintrc.js +43 -0
  708. package/node_modules/jszip/.github/FUNDING.yml +1 -0
  709. package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
  710. package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
  711. package/node_modules/jszip/.github/workflows/main.yml +55 -0
  712. package/node_modules/jszip/CHANGES.md +210 -0
  713. package/node_modules/jszip/LICENSE.markdown +651 -0
  714. package/node_modules/jszip/README.markdown +33 -0
  715. package/node_modules/jszip/dist/jszip.js +11586 -0
  716. package/node_modules/jszip/dist/jszip.min.js +13 -0
  717. package/node_modules/jszip/index.d.ts +344 -0
  718. package/node_modules/jszip/lib/base64.js +106 -0
  719. package/node_modules/jszip/lib/compressedObject.js +74 -0
  720. package/node_modules/jszip/lib/compressions.js +14 -0
  721. package/node_modules/jszip/lib/crc32.js +77 -0
  722. package/node_modules/jszip/lib/defaults.js +11 -0
  723. package/node_modules/jszip/lib/external.js +18 -0
  724. package/node_modules/jszip/lib/flate.js +85 -0
  725. package/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
  726. package/node_modules/jszip/lib/generate/index.js +57 -0
  727. package/node_modules/jszip/lib/index.js +55 -0
  728. package/node_modules/jszip/lib/license_header.js +11 -0
  729. package/node_modules/jszip/lib/load.js +88 -0
  730. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  731. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  732. package/node_modules/jszip/lib/nodejsUtils.js +57 -0
  733. package/node_modules/jszip/lib/object.js +384 -0
  734. package/node_modules/jszip/lib/readable-stream-browser.js +10 -0
  735. package/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  736. package/node_modules/jszip/lib/reader/DataReader.js +116 -0
  737. package/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  738. package/node_modules/jszip/lib/reader/StringReader.js +38 -0
  739. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  740. package/node_modules/jszip/lib/reader/readerFor.js +28 -0
  741. package/node_modules/jszip/lib/signature.js +7 -0
  742. package/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  743. package/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  744. package/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  745. package/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  746. package/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  747. package/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
  748. package/node_modules/jszip/lib/support.js +38 -0
  749. package/node_modules/jszip/lib/utf8.js +275 -0
  750. package/node_modules/jszip/lib/utils.js +510 -0
  751. package/node_modules/jszip/lib/zipEntries.js +261 -0
  752. package/node_modules/jszip/lib/zipEntry.js +293 -0
  753. package/node_modules/jszip/lib/zipObject.js +133 -0
  754. package/node_modules/jszip/package.json +67 -0
  755. package/node_modules/jszip/sponsors.md +21 -0
  756. package/node_modules/jszip/tsconfig.json +101 -0
  757. package/node_modules/jszip/vendor/FileSaver.js +247 -0
  758. package/node_modules/lie/README.md +62 -0
  759. package/node_modules/lie/dist/lie.js +350 -0
  760. package/node_modules/lie/dist/lie.min.js +1 -0
  761. package/node_modules/lie/dist/lie.polyfill.js +358 -0
  762. package/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  763. package/node_modules/lie/lib/browser.js +273 -0
  764. package/node_modules/lie/lib/index.js +298 -0
  765. package/node_modules/lie/license.md +7 -0
  766. package/node_modules/lie/lie.d.ts +244 -0
  767. package/node_modules/lie/package.json +69 -0
  768. package/node_modules/lie/polyfill.js +4 -0
  769. package/node_modules/pako/CHANGELOG.md +164 -0
  770. package/node_modules/pako/LICENSE +21 -0
  771. package/node_modules/pako/README.md +191 -0
  772. package/node_modules/pako/dist/pako.js +6818 -0
  773. package/node_modules/pako/dist/pako.min.js +1 -0
  774. package/node_modules/pako/dist/pako_deflate.js +3997 -0
  775. package/node_modules/pako/dist/pako_deflate.min.js +1 -0
  776. package/node_modules/pako/dist/pako_inflate.js +3300 -0
  777. package/node_modules/pako/dist/pako_inflate.min.js +1 -0
  778. package/node_modules/pako/index.js +14 -0
  779. package/node_modules/pako/lib/deflate.js +400 -0
  780. package/node_modules/pako/lib/inflate.js +423 -0
  781. package/node_modules/pako/lib/utils/common.js +105 -0
  782. package/node_modules/pako/lib/utils/strings.js +187 -0
  783. package/node_modules/pako/lib/zlib/README +59 -0
  784. package/node_modules/pako/lib/zlib/adler32.js +51 -0
  785. package/node_modules/pako/lib/zlib/constants.js +68 -0
  786. package/node_modules/pako/lib/zlib/crc32.js +59 -0
  787. package/node_modules/pako/lib/zlib/deflate.js +1874 -0
  788. package/node_modules/pako/lib/zlib/gzheader.js +58 -0
  789. package/node_modules/pako/lib/zlib/inffast.js +345 -0
  790. package/node_modules/pako/lib/zlib/inflate.js +1556 -0
  791. package/node_modules/pako/lib/zlib/inftrees.js +343 -0
  792. package/node_modules/pako/lib/zlib/messages.js +32 -0
  793. package/node_modules/pako/lib/zlib/trees.js +1222 -0
  794. package/node_modules/pako/lib/zlib/zstream.js +47 -0
  795. package/node_modules/pako/package.json +44 -0
  796. package/node_modules/process-nextick-args/index.js +45 -0
  797. package/node_modules/process-nextick-args/license.md +19 -0
  798. package/node_modules/process-nextick-args/package.json +25 -0
  799. package/node_modules/process-nextick-args/readme.md +18 -0
  800. package/node_modules/readable-stream/.travis.yml +34 -0
  801. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  802. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  803. package/node_modules/readable-stream/LICENSE +47 -0
  804. package/node_modules/readable-stream/README.md +58 -0
  805. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  806. package/node_modules/readable-stream/duplex-browser.js +1 -0
  807. package/node_modules/readable-stream/duplex.js +1 -0
  808. package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  809. package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  810. package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  811. package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  812. package/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  813. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  814. package/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  815. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  816. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  817. package/node_modules/readable-stream/package.json +52 -0
  818. package/node_modules/readable-stream/passthrough.js +1 -0
  819. package/node_modules/readable-stream/readable-browser.js +7 -0
  820. package/node_modules/readable-stream/readable.js +19 -0
  821. package/node_modules/readable-stream/transform.js +1 -0
  822. package/node_modules/readable-stream/writable-browser.js +1 -0
  823. package/node_modules/readable-stream/writable.js +8 -0
  824. package/node_modules/safe-buffer/LICENSE +21 -0
  825. package/node_modules/safe-buffer/README.md +584 -0
  826. package/node_modules/safe-buffer/index.d.ts +187 -0
  827. package/node_modules/safe-buffer/index.js +62 -0
  828. package/node_modules/safe-buffer/package.json +37 -0
  829. package/node_modules/setimmediate/LICENSE.txt +20 -0
  830. package/node_modules/setimmediate/package.json +30 -0
  831. package/node_modules/setimmediate/setImmediate.js +186 -0
  832. package/node_modules/string_decoder/.travis.yml +50 -0
  833. package/node_modules/string_decoder/LICENSE +48 -0
  834. package/node_modules/string_decoder/README.md +47 -0
  835. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  836. package/node_modules/string_decoder/package.json +31 -0
  837. package/node_modules/util-deprecate/History.md +16 -0
  838. package/node_modules/util-deprecate/LICENSE +24 -0
  839. package/node_modules/util-deprecate/README.md +53 -0
  840. package/node_modules/util-deprecate/browser.js +67 -0
  841. package/node_modules/util-deprecate/node.js +6 -0
  842. package/node_modules/util-deprecate/package.json +27 -0
  843. package/node_modules/zod/README.md +2 -2
  844. package/node_modules/zod/compile.cjs +19 -0
  845. package/node_modules/zod/index.cjs +19 -0
  846. package/node_modules/zod/locales/index.cjs +19 -0
  847. package/node_modules/zod/mini/index.cjs +19 -0
  848. package/node_modules/zod/package.json +8 -7
  849. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  850. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  851. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  852. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  853. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  854. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  855. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  856. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  857. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  858. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  859. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  860. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  861. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  862. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  863. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  864. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  865. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  866. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  867. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  868. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  869. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  870. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  871. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  872. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  873. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  874. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  875. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  876. package/node_modules/zod/src/v4/core/api.ts +44 -28
  877. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  878. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  879. package/node_modules/zod/src/v4/core/core.ts +1 -3
  880. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  881. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  882. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  883. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  884. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  885. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  886. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  887. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  888. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  889. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  890. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  891. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  892. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  893. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  894. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  895. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  896. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  897. package/node_modules/zod/src/v4/core/util.ts +218 -147
  898. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  899. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  900. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  901. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  902. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  903. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  904. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  905. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  906. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  907. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  908. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  909. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  910. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  911. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  912. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  913. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  914. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  915. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  916. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  917. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  918. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  919. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  920. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  921. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  922. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  923. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  924. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  925. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  926. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  927. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  928. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  929. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  930. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  931. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  932. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  933. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  934. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  935. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  936. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  937. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  938. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  939. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  940. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  941. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  942. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  943. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  944. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  945. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  946. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  947. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  948. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  949. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  950. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  951. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  952. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  953. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  954. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  955. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  956. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  957. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  958. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  959. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  960. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  961. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  962. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  963. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  964. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  965. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  966. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  967. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  968. package/node_modules/zod/v3/ZodError.cjs +19 -0
  969. package/node_modules/zod/v3/errors.cjs +19 -0
  970. package/node_modules/zod/v3/external.cjs +19 -0
  971. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  972. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  973. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  974. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  975. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  976. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  977. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  978. package/node_modules/zod/v3/index.cjs +19 -0
  979. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  980. package/node_modules/zod/v3/types.cjs +19 -0
  981. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  982. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  983. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  984. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  985. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  986. package/node_modules/zod/v4/classic/external.cjs +22 -1
  987. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  988. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  989. package/node_modules/zod/v4/classic/external.js +1 -1
  990. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  991. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  992. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  993. package/node_modules/zod/v4/classic/index.cjs +19 -0
  994. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  995. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  996. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  997. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  998. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  999. package/node_modules/zod/v4/classic/schemas.js +77 -33
  1000. package/node_modules/zod/v4/core/api.cjs +45 -22
  1001. package/node_modules/zod/v4/core/api.d.cts +12 -6
  1002. package/node_modules/zod/v4/core/api.d.ts +12 -6
  1003. package/node_modules/zod/v4/core/api.js +25 -22
  1004. package/node_modules/zod/v4/core/checks.cjs +51 -97
  1005. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  1006. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  1007. package/node_modules/zod/v4/core/checks.js +31 -96
  1008. package/node_modules/zod/v4/core/compile.cjs +173 -78
  1009. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  1010. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  1011. package/node_modules/zod/v4/core/compile.js +154 -79
  1012. package/node_modules/zod/v4/core/core.cjs +20 -1
  1013. package/node_modules/zod/v4/core/core.js +1 -1
  1014. package/node_modules/zod/v4/core/doc.cjs +26 -2
  1015. package/node_modules/zod/v4/core/doc.js +7 -2
  1016. package/node_modules/zod/v4/core/errors.cjs +21 -5
  1017. package/node_modules/zod/v4/core/errors.js +2 -5
  1018. package/node_modules/zod/v4/core/index.cjs +19 -0
  1019. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  1020. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  1021. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  1022. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  1023. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  1024. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  1025. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  1026. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  1027. package/node_modules/zod/v4/core/memoizer.js +69 -23
  1028. package/node_modules/zod/v4/core/parse.cjs +56 -16
  1029. package/node_modules/zod/v4/core/parse.js +37 -16
  1030. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  1031. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  1032. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  1033. package/node_modules/zod/v4/core/regexes.js +10 -4
  1034. package/node_modules/zod/v4/core/registries.cjs +19 -0
  1035. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  1036. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  1037. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  1038. package/node_modules/zod/v4/core/schemas.js +279 -113
  1039. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  1040. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  1041. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  1042. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  1043. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  1044. package/node_modules/zod/v4/core/util.cjs +177 -143
  1045. package/node_modules/zod/v4/core/util.d.cts +25 -4
  1046. package/node_modules/zod/v4/core/util.d.ts +25 -4
  1047. package/node_modules/zod/v4/core/util.js +156 -143
  1048. package/node_modules/zod/v4/core/versions.cjs +21 -2
  1049. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  1050. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  1051. package/node_modules/zod/v4/core/versions.js +2 -2
  1052. package/node_modules/zod/v4/core/visit.cjs +19 -0
  1053. package/node_modules/zod/v4/index.cjs +19 -0
  1054. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  1055. package/node_modules/zod/v4/locales/ar.js +2 -0
  1056. package/node_modules/zod/v4/locales/az.cjs +2 -0
  1057. package/node_modules/zod/v4/locales/az.js +2 -0
  1058. package/node_modules/zod/v4/locales/be.cjs +2 -0
  1059. package/node_modules/zod/v4/locales/be.js +2 -0
  1060. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  1061. package/node_modules/zod/v4/locales/bg.js +2 -0
  1062. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  1063. package/node_modules/zod/v4/locales/bn.js +2 -0
  1064. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  1065. package/node_modules/zod/v4/locales/ca.js +2 -0
  1066. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  1067. package/node_modules/zod/v4/locales/ckb.js +2 -0
  1068. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  1069. package/node_modules/zod/v4/locales/cs.js +2 -0
  1070. package/node_modules/zod/v4/locales/da.cjs +2 -0
  1071. package/node_modules/zod/v4/locales/da.js +2 -0
  1072. package/node_modules/zod/v4/locales/de.cjs +2 -0
  1073. package/node_modules/zod/v4/locales/de.js +2 -0
  1074. package/node_modules/zod/v4/locales/el.cjs +2 -0
  1075. package/node_modules/zod/v4/locales/el.js +2 -0
  1076. package/node_modules/zod/v4/locales/en.cjs +2 -0
  1077. package/node_modules/zod/v4/locales/en.js +2 -0
  1078. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  1079. package/node_modules/zod/v4/locales/eo.js +2 -0
  1080. package/node_modules/zod/v4/locales/es.cjs +2 -0
  1081. package/node_modules/zod/v4/locales/es.js +2 -0
  1082. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  1083. package/node_modules/zod/v4/locales/fa.js +2 -0
  1084. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  1085. package/node_modules/zod/v4/locales/fi.js +2 -0
  1086. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  1087. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  1088. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  1089. package/node_modules/zod/v4/locales/fr.js +2 -0
  1090. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  1091. package/node_modules/zod/v4/locales/gu.js +2 -0
  1092. package/node_modules/zod/v4/locales/he.cjs +2 -0
  1093. package/node_modules/zod/v4/locales/he.js +2 -0
  1094. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  1095. package/node_modules/zod/v4/locales/hi.js +2 -0
  1096. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  1097. package/node_modules/zod/v4/locales/hr.js +2 -0
  1098. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  1099. package/node_modules/zod/v4/locales/hu.js +2 -0
  1100. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  1101. package/node_modules/zod/v4/locales/hy.js +2 -0
  1102. package/node_modules/zod/v4/locales/id.cjs +2 -0
  1103. package/node_modules/zod/v4/locales/id.js +2 -0
  1104. package/node_modules/zod/v4/locales/index.cjs +22 -1
  1105. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  1106. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  1107. package/node_modules/zod/v4/locales/index.js +1 -0
  1108. package/node_modules/zod/v4/locales/is.cjs +2 -0
  1109. package/node_modules/zod/v4/locales/is.js +2 -0
  1110. package/node_modules/zod/v4/locales/it.cjs +2 -0
  1111. package/node_modules/zod/v4/locales/it.js +2 -0
  1112. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  1113. package/node_modules/zod/v4/locales/ja.js +2 -0
  1114. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  1115. package/node_modules/zod/v4/locales/ka.js +2 -0
  1116. package/node_modules/zod/v4/locales/km.cjs +2 -0
  1117. package/node_modules/zod/v4/locales/km.js +2 -0
  1118. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  1119. package/node_modules/zod/v4/locales/kn.js +2 -0
  1120. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  1121. package/node_modules/zod/v4/locales/ko.js +2 -0
  1122. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  1123. package/node_modules/zod/v4/locales/lt.js +2 -0
  1124. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  1125. package/node_modules/zod/v4/locales/mk.js +2 -0
  1126. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  1127. package/node_modules/zod/v4/locales/ms.js +2 -0
  1128. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  1129. package/node_modules/zod/v4/locales/ne.js +2 -0
  1130. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  1131. package/node_modules/zod/v4/locales/nl.js +2 -0
  1132. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  1133. package/node_modules/zod/v4/locales/nn.js +2 -0
  1134. package/node_modules/zod/v4/locales/no.cjs +2 -0
  1135. package/node_modules/zod/v4/locales/no.js +2 -0
  1136. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  1137. package/node_modules/zod/v4/locales/ota.js +2 -0
  1138. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  1139. package/node_modules/zod/v4/locales/pl.js +2 -0
  1140. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  1141. package/node_modules/zod/v4/locales/ps.js +2 -0
  1142. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  1143. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  1144. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  1145. package/node_modules/zod/v4/locales/pt.js +2 -0
  1146. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  1147. package/node_modules/zod/v4/locales/ro.js +2 -0
  1148. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  1149. package/node_modules/zod/v4/locales/ru.js +2 -0
  1150. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  1151. package/node_modules/zod/v4/locales/sk.js +2 -0
  1152. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  1153. package/node_modules/zod/v4/locales/sl.js +2 -0
  1154. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  1155. package/node_modules/zod/v4/locales/sv.js +2 -0
  1156. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  1157. package/node_modules/zod/v4/locales/ta.js +2 -0
  1158. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  1159. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  1160. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  1161. package/node_modules/zod/v4/locales/tg.js +117 -0
  1162. package/node_modules/zod/v4/locales/th.cjs +2 -0
  1163. package/node_modules/zod/v4/locales/th.js +2 -0
  1164. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  1165. package/node_modules/zod/v4/locales/tk.js +2 -0
  1166. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  1167. package/node_modules/zod/v4/locales/tr.js +2 -0
  1168. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  1169. package/node_modules/zod/v4/locales/uk.js +2 -0
  1170. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  1171. package/node_modules/zod/v4/locales/ur.js +2 -0
  1172. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  1173. package/node_modules/zod/v4/locales/uz.js +2 -0
  1174. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  1175. package/node_modules/zod/v4/locales/vi.js +2 -0
  1176. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  1177. package/node_modules/zod/v4/locales/yo.js +2 -0
  1178. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  1179. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  1180. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  1181. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  1182. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  1183. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  1184. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  1185. package/node_modules/zod/v4/mini/external.cjs +22 -1
  1186. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  1187. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  1188. package/node_modules/zod/v4/mini/external.js +1 -1
  1189. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  1190. package/node_modules/zod/v4/mini/index.cjs +19 -0
  1191. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  1192. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  1193. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  1194. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  1195. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  1196. package/node_modules/zod/v4/mini/schemas.js +21 -6
  1197. package/node_modules/zod/v4-mini/index.cjs +19 -0
  1198. package/package.json +7 -5
  1199. package/dist/.setup/api-DbdeJVQ8.mjs +0 -17
  1200. package/dist/.setup/client-adapter-dvFa47YL.mjs +0 -63
  1201. package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
  1202. package/dist/.setup/send.runtime-B7C4IP23.mjs +0 -2
  1203. package/dist/.setup/transport-detection-CqyR2vG8.mjs +0 -571
  1204. package/dist/.setup/transport-detection.runtime-CW1lp2d9.mjs +0 -2
  1205. package/dist/.setup/transport-probes.runtime-WprAyBbL.mjs +0 -2
@@ -0,0 +1,154 @@
1
+ # Quickstart
2
+
3
+ Five minutes. By the end you will have a working `root()` and know how to read, write, atomically replace, and unpack an archive — without your code being able to escape the workspace.
4
+
5
+ If you have used Go's `os.Root` / `OpenInRoot` or Rust's [`cap-std`](https://github.com/bytecodealliance/cap-std), this is the same shape: a capability-style handle that carries the boundary across every operation. The first thing to internalize is that you stop reasoning about *paths* and start reasoning about *the handle*.
6
+
7
+ ## 1. Build a root
8
+
9
+ ```ts
10
+ import { root } from "@openclaw/fs-safe";
11
+
12
+ const fs = await root("/srv/jobs/incoming", {
13
+ hardlinks: "reject", // refuse files that are hardlinks of out-of-tree inodes
14
+ symlinks: "reject", // refuse to traverse a symlink during open
15
+ mkdir: true, // create missing parent dirs on write
16
+ });
17
+ ```
18
+
19
+ `root()` resolves the directory through the real filesystem (so symlinked roots become canonical) and verifies it exists. The defaults you pass apply to every call below; per-call options override them.
20
+
21
+ If the root directory itself does not exist yet, `root()` throws `FsSafeError`
22
+ with code `not-found`; create it before constructing the capability.
23
+ `fs.ensureRoot()` is for generic code that needs to assert or recreate the root
24
+ itself after a handle was successfully constructed. It does not accept a
25
+ subpath and cannot bootstrap a root that prevented `root()` from returning.
26
+
27
+ ## 2. Read and write text
28
+
29
+ ```ts
30
+ await fs.write("notes/today.txt", "hello\n");
31
+ const text = await fs.readText("notes/today.txt");
32
+ ```
33
+
34
+ Writes use a sibling temp file plus `rename`, so a partial write never appears at the destination. Reads open with `O_NOFOLLOW` where available and verify the opened fd matches the path identity before returning the buffer.
35
+
36
+ `create()` is the don't-clobber variant of `write()` and throws `already-exists` when the target is already there:
37
+
38
+ ```ts
39
+ await fs.create("notes/README.md", "seed\n"); // throws if it already exists
40
+ ```
41
+
42
+ ## 3. JSON, with parsing
43
+
44
+ ```ts
45
+ type Config = { tokens: string[]; updatedAt: string };
46
+
47
+ await fs.writeJson("state/config.json", { tokens: [], updatedAt: new Date().toISOString() }, {
48
+ space: 2,
49
+ });
50
+
51
+ const config = await fs.readJson<Config>("state/config.json");
52
+ ```
53
+
54
+ `writeJson` stringifies and writes atomically. `readJson` reads through the same boundary and parses; validate the shape at your application boundary if it came from a less-trusted source.
55
+
56
+ ## 4. Move and remove
57
+
58
+ ```ts
59
+ await fs.move("notes/today.txt", "notes/archive/today.txt", { overwrite: true });
60
+ await fs.remove("notes/archive/today.txt");
61
+ ```
62
+
63
+ `move()` defaults to no clobber. That mode requires the native helper so a concurrent target cannot be replaced between an absence check and the rename; without it, the call fails with `helper-unavailable`. Pass `{ overwrite: true }` when replacing the target is intentional. `remove()` removes files and empty directories by default. To remove a non-empty directory, pass `{ recursive: true }`; use `maxEntries`, `maxDepth`, and `signal` to bound the work. See [`root()`](root.md) for removal ordering, limits, and partial-removal semantics.
64
+
65
+ ## 5. Inspect
66
+
67
+ ```ts
68
+ const here = await fs.exists("state/config.json"); // boolean
69
+ const stat = await fs.stat("state/config.json"); // { isFile, isDirectory, size, mtimeMs, ... }
70
+ const names = await fs.list("state"); // string[]
71
+ const entries = await fs.list("state", { withFileTypes: true }); // DirEntry[]
72
+ ```
73
+
74
+ `exists`, `stat`, and `list` are boundary-checked but **do not pin a later operation** to the same filesystem object. For operation-local identity checks, use `read()`, `open()`, `write()`, `create()`, `copyIn()`, `move()`, or `remove()`. Linux native beneath opens are kernel-atomic; other mechanisms remain best-effort as documented in the [security model](security-model.md#containment-guarantees-by-platform).
75
+
76
+ ## 6. Catch escapes
77
+
78
+ ```ts
79
+ import { FsSafeError } from "@openclaw/fs-safe";
80
+
81
+ try {
82
+ await fs.write("../escape.txt", "x");
83
+ } catch (err) {
84
+ if (err instanceof FsSafeError && err.code === "outside-workspace") {
85
+ // log, count, drop the request
86
+ } else {
87
+ throw err;
88
+ }
89
+ }
90
+ ```
91
+
92
+ Error codes are a closed union — branch on `err.code` instead of matching message text. The full list lives in the [Errors](errors.md) reference.
93
+
94
+ ## 7. Replace a config file atomically
95
+
96
+ ```ts
97
+ import { replaceFileAtomic } from "@openclaw/fs-safe/atomic";
98
+
99
+ await replaceFileAtomic({
100
+ filePath: "/srv/jobs/incoming/state/config.json",
101
+ content: JSON.stringify(state, null, 2),
102
+ mode: 0o600,
103
+ syncTempFile: true,
104
+ syncParentDir: true,
105
+ });
106
+ ```
107
+
108
+ Use `replaceFileAtomic` directly when you have an absolute path you trust and want sibling-temp + rename without going through `root()`. See [Atomic writes](atomic.md).
109
+
110
+ ## 8. Unpack a ZIP
111
+
112
+ ```ts
113
+ import { extractArchive, resolveArchiveKind } from "@openclaw/fs-safe/archive";
114
+
115
+ const kind = resolveArchiveKind("upload.zip");
116
+ if (!kind) throw new Error("unsupported archive");
117
+
118
+ await extractArchive({
119
+ archivePath: "/srv/jobs/incoming/uploads/upload.zip",
120
+ destDir: "/srv/jobs/incoming/extracted",
121
+ kind,
122
+ timeoutMs: 15_000,
123
+ limits: {
124
+ maxArchiveBytes: 256 * 1024 * 1024,
125
+ maxEntries: 50_000,
126
+ maxExtractedBytes: 512 * 1024 * 1024,
127
+ maxEntryBytes: 256 * 1024 * 1024,
128
+ maxMetaEntryBytes: 1024 * 1024,
129
+ maxEntryPathComponents: 64,
130
+ },
131
+ entryModes: "clamp",
132
+ });
133
+ ```
134
+
135
+ Extraction stages into a private dir and merges through the same boundary used by direct writes, so a symlinked entry can't trick the merge into following an out-of-tree path. See [Archive extraction](archive.md).
136
+
137
+ ## 9. Get a private scratch directory
138
+
139
+ ```ts
140
+ import { withTempWorkspace } from "@openclaw/fs-safe/temp";
141
+
142
+ await withTempWorkspace({ rootDir: "/srv/jobs/tmp", prefix: "build-" }, async (workspace) => {
143
+ await workspace.copyIn("input.bin", "/tmp/source.bin");
144
+ // ...do work in workspace.dir; auto-cleaned on exit
145
+ });
146
+ ```
147
+
148
+ The directory is mode `0700` under the caller-provided root, and cleanup runs when the callback returns or throws. Compatible cleanup remains available without native support; pass `cleanupSafety: "require-bounded"` to require native no-replace quarantine and descriptor-bounded tree removal before creating a child. Cleanup preserves raced or ambiguous entries under a private quarantine name. See the [temp workspace compatibility and security contract](temp.md#private-temp-workspaces).
149
+
150
+ ## Where to next
151
+
152
+ - [Security model](security-model.md) — exactly what the boundary defends against, what it does not.
153
+ - [Root API](root.md) — every method on the `Root` handle, including streaming and reader callbacks.
154
+ - [Errors](errors.md) — the full code union and what each one means.
@@ -0,0 +1,196 @@
1
+ # Reading
2
+
3
+ The `Root` handle exposes five read shapes. Pick the narrowest one that gives you what you need — narrower shapes do less work and surface fewer footguns.
4
+
5
+ ```ts
6
+ const result = await fs.read("notes/today.txt"); // { buffer, containment, realPath, stat }
7
+ const text = await fs.readText("notes/today.txt"); // string
8
+ const bytes = await fs.readBytes("image.png"); // Buffer
9
+ const json = await fs.readJson<Config>("config.json"); // T
10
+ const opened = await fs.open("large.log"); // FileHandle for streaming
11
+ ```
12
+
13
+ ## What every read does
14
+
15
+ Identity and containment checks use brief synchronous metadata calls, like Node's module resolution, while file data is read asynchronously. Canonical paths retain Node's native realpath spelling, including expansion of Windows short paths.
16
+
17
+ The same observation rule applies to archive extraction, copy, publication, move,
18
+ directory modes, and supporting lock, queue, and secret-file operations. Opens,
19
+ data transfers, durability syncs, filesystem mutations, and closes retain their
20
+ existing asynchronous behavior. Custom filesystem adapters retain their async
21
+ metadata interface.
22
+
23
+ Regardless of shape, every read goes through the same boundary checks:
24
+
25
+ 1. Resolve the input lexically against the canonical real root.
26
+ 2. Reject a lexically explicit unsafe device or process-fd namespace (`device-path`). This check precedes component alias policy because paths such as `/dev/fd` are themselves symlinks on common Linux hosts.
27
+ 3. Resolve path components and reject anything that escapes the root (`outside-workspace`).
28
+ 4. Reject `..` traversal and absolute spellings when they resolve outside the root. In-root absolute spellings remain accepted; `readAbsolute` makes that intent explicit.
29
+ 5. Open with `O_NOFOLLOW` where available. Any remaining symlink in the path triggers `symlink` unless the call's `symlinks` policy is `follow-within-root`.
30
+ 6. Compare the pre-open bigint path identity with the open fd, then perform one best-effort final admission: check the captured root identity, compare the policy-aware pathname with the fd, freshly canonicalize and re-admit that target inside the captured root, compare its exact bigint identity without following a final symlink with the fd, and check the root again. Both final pathname observations run even when their spellings match. An observed swap triggers `path-mismatch` or `outside-workspace`; a missing final path triggers `not-found`.
31
+ 7. If `hardlinks: "reject"`, refuse files with `nlink > 1` (`hardlink`), including links introduced before either fresh final pathname observation. Root-file helpers apply the same final check when `rejectHardlinks` is enabled; directory admission is unaffected.
32
+ 8. If `maxBytes` is set, refuse reads larger than the cap (`too-large`).
33
+
34
+ The final fence closes a rejected descriptor before any Root read consumes bytes or
35
+ `open()` hands the descriptor to its caller. It is a sequence of filesystem
36
+ observations, not an atomic kernel pathname/open primitive, so a hostile peer can
37
+ still race the namespace after the last observation. Standalone absolute-file
38
+ helpers have no captured `Root` identity and do not claim this replacement-root
39
+ fence; use a `Root` for untrusted paths.
40
+
41
+ ## Read shapes
42
+
43
+ ### `fs.read(rel, options?)`
44
+
45
+ The full result. Use it when you need both the bytes and the verified `realPath` or `stat`:
46
+
47
+ ```ts
48
+ const { buffer, containment, realPath, stat } = await fs.read("notes/today.txt");
49
+ console.log(`${stat.size} bytes at ${realPath}`);
50
+ ```
51
+
52
+ ### `fs.readText(rel, options?)`
53
+
54
+ `buffer.toString(encoding)`. Defaults to `"utf8"`; encoding is a per-call text
55
+ option, not a `RootDefaults` field:
56
+
57
+ ```ts
58
+ const utf16 = await fs.readText("doc.txt", { encoding: "utf16le" });
59
+ ```
60
+
61
+ ### `fs.readBytes(rel, options?)`
62
+
63
+ The buffer alone. Useful when you don't care about the realPath or stat:
64
+
65
+ ```ts
66
+ const png = await fs.readBytes("image.png");
67
+ ```
68
+
69
+ ### `fs.readJson<T>(rel, options?)`
70
+
71
+ `readText` + `JSON.parse`. The generic is a *cast*, not a validator — validate the parsed value at your application boundary if it came from a less-trusted source.
72
+
73
+ ```ts
74
+ type Config = { tokens: string[] };
75
+ const config = await fs.readJson<Config>("config.json");
76
+ ```
77
+
78
+ For tighter control over malformed-or-missing JSON, use the standalone helpers in [`@openclaw/fs-safe/json`](json.md): `tryReadJson` (returns `null` on missing/invalid) vs `readJson` (throws).
79
+
80
+ ### `fs.open(rel, options?)`
81
+
82
+ Returns a `FileHandle` plus `containment: "best-effort"`, the verified `realPath`, and `stat`. Use this for streaming or partial reads, and **always close the handle**:
83
+
84
+ ```ts
85
+ const opened = await fs.open("large.log");
86
+ try {
87
+ const stream = opened.handle.createReadStream();
88
+ for await (const chunk of stream) {
89
+ process.stdout.write(chunk);
90
+ }
91
+ } finally {
92
+ await opened.handle.close();
93
+ }
94
+ ```
95
+
96
+ ## Read options
97
+
98
+ ```ts
99
+ type RootReadOptions = {
100
+ hardlinks?: "reject" | "allow"; // override defaults.hardlinks
101
+ maxBytes?: number; // refuse reads larger than this many bytes
102
+ nonBlockingRead?: boolean; // compatibility hint; safe opens are already nonblocking where supported
103
+ symlinks?: "reject" | "follow-within-root" | "follow-parents-within-root"; // override defaults.symlinks
104
+ };
105
+ ```
106
+
107
+ `maxBytes` is enforced eagerly: the library reads up to `maxBytes + 1` and throws `too-large` if there is more, so a hostile target cannot silently exhaust memory. Values must be non-negative safe integers or positive `Infinity`; zero is an active cap, while `Infinity` disables it. Explicitly forwarding `undefined` preserves the Root default.
108
+
109
+ `nonBlockingRead` remains as a compatibility hint. Safe reads always add the platform's nonblocking open flag where available so a raced FIFO cannot pin a worker indefinitely; regular-file descriptor reads retain normal Node behavior.
110
+
111
+ ## `readAbsolute()` and `reader()`
112
+
113
+ Some APIs hand you an absolute path that the caller has already produced. Going back to a relative form just to call `read()` is awkward, so the library exposes:
114
+
115
+ ```ts
116
+ fs.readAbsolute(absPath, options?) // ReadResult, abs path must be inside the root
117
+ fs.reader(options?) // (path) => Promise<Buffer>
118
+ ```
119
+
120
+ `readAbsolute` accepts absolute paths using either the configured root spelling
121
+ or its canonical real path. This includes roots configured through a directory
122
+ symlink or Windows junction. Anything outside the root throws
123
+ `outside-workspace`. It also accepts relative paths for compatibility, but use
124
+ `read()`/`readBytes()` when the input contract is explicitly relative.
125
+
126
+ `reader()` returns a closure that takes either a relative or an absolute path and returns a Buffer. Useful for plugging `fs-safe` into framework loader hooks:
127
+
128
+ ```ts
129
+ const load = fs.reader({ maxBytes: 4 * 1024 * 1024 });
130
+ await someLibrary.parseTemplate({ load });
131
+ ```
132
+
133
+ ## Inspection vs reading
134
+
135
+ `fs.exists`, `fs.stat`, and `fs.list` are advisory. They are safe to call to drive UI or decisions, but they do **not** pin the file:
136
+
137
+ ```ts
138
+ if (await fs.exists("notes/today.txt")) {
139
+ // the file existed when stat() ran — it may not now
140
+ const text = await fs.readText("notes/today.txt"); // this is the call that pins
141
+ }
142
+ ```
143
+
144
+ A symlink swap between `exists` and `readText` is checked again by the read; the boundary and its documented race window are per-call.
145
+
146
+ ## Streaming patterns
147
+
148
+ ### Read into a writable stream
149
+
150
+ ```ts
151
+ import { pipeline } from "node:stream/promises";
152
+
153
+ const opened = await fs.open("large.log");
154
+ try {
155
+ await pipeline(opened.handle.createReadStream(), process.stdout);
156
+ } finally {
157
+ await opened.handle.close();
158
+ }
159
+ ```
160
+
161
+ ### Read in chunks
162
+
163
+ ```ts
164
+ const opened = await fs.open("large.bin");
165
+ try {
166
+ const buf = Buffer.alloc(64 * 1024);
167
+ let off = 0;
168
+ while (true) {
169
+ const { bytesRead } = await opened.handle.read(buf, 0, buf.length, off);
170
+ if (bytesRead === 0) break;
171
+ consume(buf.subarray(0, bytesRead));
172
+ off += bytesRead;
173
+ }
174
+ } finally {
175
+ await opened.handle.close();
176
+ }
177
+ ```
178
+
179
+ ## Common errors
180
+
181
+ - **`outside-workspace`** — relative path escaped the root, or `readAbsolute` got an absolute path outside.
182
+ - **`not-found`** — the file is gone.
183
+ - **`not-file`** — you read a directory or a non-regular file (FIFO, socket, …).
184
+ - **`device-path`** — the path targets a known unsafe device or process fd path.
185
+ - **`symlink`** — a path component is a symlink and the policy is `reject`.
186
+ - **`path-mismatch`** — opened fd identity did not match the resolved path. Almost always a TOCTOU swap by something else.
187
+ - **`hardlink`** — `hardlinks: "reject"` saw `nlink > 1`.
188
+ - **`too-large`** — read exceeded `maxBytes`.
189
+
190
+ See [Errors](errors.md) for the full list.
191
+
192
+ ## See also
193
+
194
+ - [Writing](writing.md) — companion verbs for produce-side I/O.
195
+ - [JSON files](json.md) — standalone strict/lenient JSON helpers.
196
+ - [Secure file reads](secure-file.md) — pinned absolute file reads with permission checks.
@@ -0,0 +1,193 @@
1
+ # Regular file helpers
2
+
3
+ The advanced `regular-file` helpers provide direct read/append/stat helpers for absolute file paths, with an explicit "regular file or nothing" contract. Useful when you have a trusted absolute path and want a thin layer on top of `fs` that:
4
+
5
+ - refuses non-regular files (directories, FIFOs, sockets, symlinks)
6
+ - enforces a `maxBytes` read cap
7
+ - separates "missing" from "io-error" in the result type
8
+
9
+ ```ts
10
+ import {
11
+ readRegularFile,
12
+ readRegularFileSync,
13
+ appendRegularFile,
14
+ appendRegularFileSync,
15
+ resolveRegularFileAppendFlags,
16
+ statRegularFile,
17
+ statRegularFileSync,
18
+ type AppendRegularFileOptions,
19
+ type RegularFileStatResult,
20
+ } from "@openclaw/fs-safe/advanced";
21
+ ```
22
+
23
+ ## Stat
24
+
25
+ ### `statRegularFile(filePath)`
26
+
27
+ Async. Returns:
28
+
29
+ ```ts
30
+ type RegularFileStatResult =
31
+ | { missing: true }
32
+ | { missing: false; stat: Stats };
33
+ ```
34
+
35
+ A non-regular file (directory, FIFO, symlink, …) throws. Missing paths return
36
+ `{ missing: true }`; existing regular files return `{ missing: false, stat }`.
37
+
38
+ ```ts
39
+ import { statRegularFile } from "@openclaw/fs-safe/advanced";
40
+
41
+ const r = await statRegularFile("/var/log/app.log");
42
+ if (r.missing) return;
43
+ console.log(`size=${r.stat.size}`);
44
+ ```
45
+
46
+ ### `statRegularFileSync(filePath)`
47
+
48
+ Synchronous variant. Same shape.
49
+
50
+ ## Read
51
+
52
+ ### `readRegularFile(params)`
53
+
54
+ Async. Reads the entire file into a Buffer if it is a regular file, with `maxBytes` enforcement.
55
+
56
+ ```ts
57
+ import { readRegularFile } from "@openclaw/fs-safe/advanced";
58
+
59
+ const result = await readRegularFile({
60
+ filePath: "/var/log/app.log",
61
+ maxBytes: 4 * 1024 * 1024,
62
+ });
63
+ processLog(result.buffer);
64
+ ```
65
+
66
+ The result is `{ buffer, stat }`. Missing files preserve the normal `ENOENT`
67
+ shape; non-regular targets throw. Reads compare exact bigint identities from the
68
+ preview, opened descriptor, and current path before consuming bytes; the returned
69
+ `stat` remains numeric Node `Stats`. Unknown Windows identities receive one
70
+ re-inspection without reopening; persistent unknowns or replacements throw
71
+ `FsSafeError("path-mismatch")`.
72
+
73
+ Throws `FsSafeError` with code `too-large` if the file exceeds `maxBytes`. Other I/O errors propagate as `NodeJS.ErrnoException`.
74
+
75
+ ### `readRegularFileSync(params)`
76
+
77
+ Synchronous variant. Same shape; the only required field is `filePath`. `maxBytes` is optional.
78
+
79
+ ## Append
80
+
81
+ ### `appendRegularFile(options)`
82
+
83
+ Async. Opens the file in append mode, writes data, closes. Refuses non-regular targets:
84
+
85
+ ```ts
86
+ import { appendRegularFile } from "@openclaw/fs-safe/advanced";
87
+
88
+ await appendRegularFile({
89
+ filePath: "/var/log/app.log",
90
+ content: `[${new Date().toISOString()}] ${line}\n`,
91
+ encoding: "utf8",
92
+ });
93
+ ```
94
+
95
+ ### Options
96
+
97
+ ```ts
98
+ type AppendRegularFileOptions = {
99
+ filePath: string;
100
+ content: string | Uint8Array;
101
+ encoding?: BufferEncoding; // default utf8 when content is string
102
+ maxFileBytes?: number; // skip if the resulting file would exceed this
103
+ mode?: number; // default 0o600
104
+ rejectSymlinkParents?: boolean;
105
+ };
106
+ ```
107
+
108
+ The helper refuses symlink and hardlinked final targets. Preview, opened
109
+ descriptor, and current pathname identities remain exact bigints through the
110
+ append boundary; rounded-equal replacements and persistent unknown Windows
111
+ identities reject before chmod or writing bytes. With
112
+ `rejectSymlinkParents: true`, it also rejects symlinked ancestor directories.
113
+ Supported option values are captured once before filesystem work, so replacing
114
+ the content, encoding, mode or cap cannot change an in-flight append. Byte-array
115
+ contents remain caller-owned; leave them unchanged until the append completes.
116
+
117
+ On POSIX, `O_NONBLOCK` prevents a no-reader FIFO substituted before open from
118
+ stalling admission. A confirmed non-regular target is refused before chmod or
119
+ append; other open errors propagate unchanged. This safeguard does not change
120
+ ordinary regular-file append semantics or require read permission.
121
+
122
+ The requested mode is applied through the admitted descriptor **before** any
123
+ content is appended, so an existing file is tightened first. On successful
124
+ completion, explicitly requested POSIX special bits are reapplied after the
125
+ content write, which can otherwise clear set-ID bits. An initial chmod failure
126
+ leaves the content untouched; a write or final chmod failure can leave appended
127
+ content and is not rolled back. Windows does not enforce POSIX mode semantics.
128
+
129
+ ### `appendRegularFileSync(options)`
130
+
131
+ Synchronous. Same options and mode ordering. Writes the complete input through
132
+ the already-open descriptor, including when an individual write is short.
133
+
134
+ ### `resolveRegularFileAppendFlags()`
135
+
136
+ Helper that returns the append helpers' `O_WRONLY | O_APPEND | O_CREAT` flags,
137
+ plus `O_NOFOLLOW` where the platform provides it and `O_NONBLOCK` on POSIX
138
+ where available. Windows flags are unchanged:
139
+
140
+ ```ts
141
+ import { resolveRegularFileAppendFlags } from "@openclaw/fs-safe/advanced";
142
+
143
+ const flags = resolveRegularFileAppendFlags();
144
+ ```
145
+
146
+ ## Difference from `Root` methods
147
+
148
+ | `regular-file` | `Root` |
149
+ |---|---|
150
+ | Absolute paths only. | Relative to the root. |
151
+ | Verifies path and descriptor identity around reads. | Enforces the same checks within a trusted root. |
152
+ | Caller must be confident the path is trusted. | Boundary check is automatic. |
153
+ | Stat reports missing explicitly; reads throw on missing/non-file. | Throws `FsSafeError` with `code`. |
154
+
155
+ If your call site already trusts the path (it came from your own config, not a caller), `regular-file` is a thinner, faster surface. If the path is caller-influenced, prefer `root()` or wrap in [`pathScope()`](path-scope.md).
156
+
157
+ ## Common patterns
158
+
159
+ ### Read a config file if it's there, else seed
160
+
161
+ ```ts
162
+ const info = await statRegularFile("/etc/app/config.json");
163
+ if (info.missing) {
164
+ await writeJson("/etc/app/config.json", defaultConfig);
165
+ } else {
166
+ const r = await readRegularFile({
167
+ filePath: "/etc/app/config.json",
168
+ maxBytes: 64 * 1024,
169
+ });
170
+ applyConfig(JSON.parse(r.buffer.toString("utf8")));
171
+ }
172
+ ```
173
+
174
+ ### Cheap "exists and is a file" check
175
+
176
+ ```ts
177
+ const r = await statRegularFile(p);
178
+ if (r.missing) return false;
179
+ return true;
180
+ ```
181
+
182
+ ### Bounded log tail
183
+
184
+ ```ts
185
+ const r = await readRegularFile({ filePath: logPath, maxBytes: 1 * 1024 * 1024 });
186
+ return r.buffer.toString("utf8").split("\n").slice(-100);
187
+ ```
188
+
189
+ ## See also
190
+
191
+ - [Reading](reading.md) — `Root` reads with boundary checks.
192
+ - [Atomic writes](atomic.md) — for atomic write semantics, prefer `replaceFileAtomic`.
193
+ - [`fs.appendFile`](https://nodejs.org/api/fs.html#fsappendfilepath-data-options-callback) — Node's stock append, without regular-file gating.
@@ -0,0 +1,115 @@
1
+ ---
2
+ title: Retained Windows files
3
+ description: "Explicit identity-bound retirement of an existing file; resource settlement is not persistence."
4
+ ---
5
+
6
+ # Retain an existing Windows file
7
+
8
+ `retainFileInDirectory` from `@openclaw/fs-safe/advanced` retains **one existing
9
+ regular direct child**, without creating or deleting anything at admission.
10
+ It requires the matching native package. There is no pathname-unlink fallback.
11
+ The initial implementation supports fixed local NTFS drives only; other systems
12
+ return `unsupported`.
13
+
14
+ ```ts
15
+ import { retainFileInDirectory } from "@openclaw/fs-safe/advanced";
16
+
17
+ const admission = retainFileInDirectory({
18
+ directory: producer.directory, // canonical C:\... spelling
19
+ parent: producer.parentIdentity, // exact bigint dev/ino
20
+ basename: producer.basename,
21
+ expected: producer.expected, // bigint dev/ino/size/mtimeNs/ctimeNs and SHA-256
22
+ assertBeforeMutation: () => producer.assertCurrentExclusiveAuthority(),
23
+ });
24
+ if (admission.status === "retained") {
25
+ using file = admission.file;
26
+ const outcome = file.remove(); // explicit; using alone does NOT delete
27
+ // outcome.persistence is always "not-proven".
28
+ producer.recordRetirementObservation(outcome);
29
+ }
30
+ ```
31
+
32
+ The producer must capture its expected identity, generation and bytes during its
33
+ own creation/ownership protocol. Reading an arbitrary current pathname immediately
34
+ before admission does **not** authenticate the producer. `Number` identities,
35
+ zero/unknown identities, negative/overflowing identities, and malformed digests
36
+ are rejected. A full opaque native volume/file ID is included in the receipt;
37
+ no native handle or numeric descriptor is exposed. Receipts are immutable facts,
38
+ not transferable authority.
39
+
40
+ ## Public types
41
+
42
+ - `RetainFileInDirectoryOptions`: immutable admission inputs and synchronous authority.
43
+ - `RetainedFileExpected`: exact producer identity, write generation and expected digest.
44
+ - `RetainedFileAdmission`: a retained `RetainedFile` or a refusal/settlement result.
45
+ - `RetainedFileReceipt`: immutable admitted facts, never reusable authority.
46
+ - `RetainedFileResult`: separate disposition, namespace, resources and persistence facts.
47
+ - `RetainedFileIssue`: phase, native code/message and optional original authority cause.
48
+
49
+ ## Admission and mutation custody
50
+
51
+ The directory's ancestry is opened component by component without following
52
+ reparse points, with delete sharing denied. Its exact expected parent identity
53
+ and canonical path are checked. The file is opened relative to that retained
54
+ parent, with write/delete sharing denied. Existing writer handles refuse
55
+ admission; a read-oplock grant also excludes preexisting writable mapped
56
+ sections. That oplock request is cancelled and joined before admission returns,
57
+ while the no-write-sharing file handle remains open. No detached request remains.
58
+
59
+ The opened file must match the expected exact NTFS identity, single-link regular
60
+ type, write/change generation, size and SHA-256. Names with stream/device syntax,
61
+ trailing-dot/space aliases and observed named data streams are unsupported.
62
+ Readonly attributes and ACL denials are not repaired or overridden. Verification
63
+ is synchronous and bounded by `maxBytes` (default 16 MiB, maximum 64 MiB).
64
+
65
+ The original producer must retain **exclusive mutation custody for the entire
66
+ file**, including alternate streams, attributes, security and hardlink creation.
67
+ Windows read/write sharing is per-stream; it is not an application lock over
68
+ all possible aliases. The helper rejects observed alternate streams and changed
69
+ generations, but does not turn a point-in-time check into exclusion of concurrent
70
+ alias/attribute operations. The synchronous `assertBeforeMutation` must check
71
+ that this original authority is still current. Callers unable to establish that
72
+ custody must not call `remove`. Privileged/raw-volume/kernel modifications are
73
+ outside this capability's threat model.
74
+
75
+ `remove()` admits authority once, revalidates the retained object, sets native
76
+ handle disposition, closes the file, observes the name under the still-retained
77
+ parent, then closes ancestry. No pathname is passed to unlink. Ordinary
78
+ `dispose()` and `[Symbol.dispose]()` only close resources. Authority callbacks
79
+ returning Promises, thenables, or synchronous or asynchronous generator objects
80
+ are refused without deletion; generators are never advanced. Reentrancy is also
81
+ refused, and even caught reentrancy poisons that attempt.
82
+ Repeated settlement returns the original receipt without another mutation or
83
+ another authority call. A copied receipt cannot be used to remove a replacement.
84
+ `[Symbol.dispose]()` throws `FsSafeError` with the complete result in
85
+ `error.details.result` if resource settlement is uncertain; `dispose()` returns
86
+ that result directly. GC closes only and produces no settlement receipt; use
87
+ explicit disposal.
88
+
89
+ ## Read the facts separately
90
+
91
+ | Field | Meaning |
92
+ | --- | --- |
93
+ | `status` | `unsupported`, `not-attempted`, `preserved-mismatch`, `disposition-accepted`, `name-absent-after-settlement`, `failed`, or `indeterminate`. |
94
+ | `disposition` | Whether native deletion was unattempted, accepted, rejected, or indeterminate. |
95
+ | `namespace` | A post-file-close observation: absent, original, foreign, unknown, or not observed. Absence alone never authenticates prior deletion. |
96
+ | `resources` | `closed` or `close-failed`; operation and close errors are retained together. An uncertain close is never retried against a possibly recycled handle. |
97
+ | `persistence` | Always `not-proven`; no namespace persistence barrier was performed. |
98
+
99
+ An accepted disposition can still have an unknown/foreign/original namespace
100
+ observation or failed close. A later replacement may exist even after observed
101
+ absence. Existing read handles can retain access to old bytes after the name is
102
+ absent. Namespace observation does not certify all foreign handles are closed.
103
+ An unexpected native binding failure is indeterminate, not success.
104
+
105
+ ## No persistence or service-transaction guarantee
106
+
107
+ This API does not flush a volume, implement a journal, certify power-loss-safe
108
+ unlink, or issue an application dependency release. Process-termination tests
109
+ establish process-owned handle lifetime only, not crash/storage durability.
110
+
111
+ An update transaction must independently qualify either a real namespace
112
+ persistence barrier or original-owned durable recovery with correct ordering,
113
+ generation binding and restart consumption. Until then it must retain its
114
+ uncertain recovery/dependency state. Successful removal of one payload does not
115
+ establish a committed multi-file transaction or justify deleting its receipt.