@openclaw/signal 2026.9.4 → 2026.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1331) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{accounts-DO4HMqaK.js → .setup/accounts-BV6tDOTc.mjs} +20 -5
  4. package/dist/.setup/api-B9-B1L7Q.mjs +17 -0
  5. package/dist/.setup/api-CGh4eWR8.mjs +12 -0
  6. package/dist/{approval-auth-pNCKKotV.js → .setup/approval-auth-BBI9BTRm.mjs} +3 -3
  7. package/dist/{approval-handler.runtime-DCPJkIqo.js → .setup/approval-handler.runtime-C3vN5OWd.mjs} +11 -11
  8. package/dist/{approval-reactions-CjhdkJ8P.js → .setup/approval-reactions-DDQvPP_z.mjs} +14 -14
  9. package/dist/{channel-CyQvEuyA.js → .setup/channel-DhzTcFsK.mjs} +56 -33
  10. package/dist/{channel.runtime--koF_1H0.js → .setup/channel.runtime-CG79z_Vy.mjs} +3 -3
  11. package/dist/{client-B3C0ciqU.js → .setup/client-BseAt7F7.mjs} +311 -41
  12. package/dist/{client-adapter-CNc5wzzs.js → .setup/client-adapter-dvFa47YL.mjs} +1 -1
  13. package/dist/{config-schema-DfEbpMVQ.js → .setup/config-schema-aQwwMGUj.mjs} +19 -3
  14. package/dist/{doctor-contract-api-D0SnglP4.js → .setup/doctor-contract-api-Rbq_sRTI.mjs} +79 -15
  15. package/dist/{install-signal-cli-QlEIfWBv.js → .setup/install-signal-cli-BDbzFcU2.mjs} +30 -61
  16. package/dist/{monitor-BiNWxMB3.js → .setup/monitor-Dnz6Ygz5.mjs} +39 -26
  17. package/dist/{probe-kOJqyjWz.js → .setup/probe-DXT2eLnw.mjs} +3 -3
  18. package/dist/{question-reactions-BFR9Mf-O.js → .setup/question-reactions-C8cSEjVf.mjs} +3 -3
  19. package/dist/{reaction-runtime-api-CWqDv5-q.js → .setup/reaction-runtime-api-BnQGHcrB.mjs} +6 -5
  20. package/dist/{rpc-context-dXSy4NtF.js → .setup/rpc-context-CwwADZ1b.mjs} +1 -1
  21. package/dist/{send-Bz0x0JC1.js → .setup/send-B78M_eFp.mjs} +7 -6
  22. package/dist/{send.runtime-CeV1p7Sq.js → .setup/send.runtime-CLnCWvrM.mjs} +1 -1
  23. package/dist/{transport-detection-Do2pYMAH.js → .setup/transport-detection-CoiRl7Gx.mjs} +60 -26
  24. package/dist/{transport-detection.runtime-QasZp3BE.js → .setup/transport-detection.runtime-Tlhuv3T_.mjs} +1 -1
  25. package/dist/{transport-policy-DxvSMHp9.js → .setup/transport-policy-5VSnj5ma.mjs} +2 -33
  26. package/dist/.setup/transport-probes.runtime-WprAyBbL.mjs +2 -0
  27. package/dist/.setup/transport-url-CAC0JcuI.mjs +55 -0
  28. package/dist/api.js +11 -16
  29. package/dist/channel-config-api.js +1 -1
  30. package/dist/channel-plugin-api.js +1 -1
  31. package/dist/contract-api.js +4 -4
  32. package/dist/doctor-contract-api.js +1 -1
  33. package/dist/reaction-runtime-api.js +1 -1
  34. package/dist/runtime-api.js +9 -9
  35. package/dist/setup-entry.js +2 -1
  36. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +1187 -0
  37. package/node_modules/@openclaw/fs-safe/LICENSE +22 -0
  38. package/node_modules/@openclaw/fs-safe/README.md +654 -0
  39. package/node_modules/@openclaw/fs-safe/SECURITY.md +45 -0
  40. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts +32 -0
  41. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +323 -0
  42. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +36 -0
  43. package/node_modules/@openclaw/fs-safe/dist/advanced.js +38 -0
  44. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts +1 -0
  45. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +19 -0
  46. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts +11 -0
  47. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +101 -0
  48. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +23 -0
  49. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
  50. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts +13 -0
  51. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +85 -0
  52. package/node_modules/@openclaw/fs-safe/dist/archive-errors.d.ts +12 -0
  53. package/node_modules/@openclaw/fs-safe/dist/archive-errors.js +23 -0
  54. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +20 -0
  55. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +99 -0
  56. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts +18 -0
  57. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +98 -0
  58. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts +7 -0
  59. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +71 -0
  60. package/node_modules/@openclaw/fs-safe/dist/archive-limits.d.ts +56 -0
  61. package/node_modules/@openclaw/fs-safe/dist/archive-limits.js +131 -0
  62. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +22 -0
  63. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +283 -0
  64. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.d.ts +1 -0
  65. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.js +12 -0
  66. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  67. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +90 -0
  68. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +119 -0
  69. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts +5 -0
  70. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +243 -0
  71. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +33 -0
  72. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +308 -0
  73. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +27 -0
  74. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +127 -0
  75. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts +29 -0
  76. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +203 -0
  77. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +7 -0
  78. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +96 -0
  79. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.d.ts +1 -0
  80. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.js +160 -0
  81. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +21 -0
  82. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +263 -0
  83. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +24 -0
  84. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +42 -0
  85. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +4 -0
  86. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +40 -0
  87. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +8 -0
  88. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +147 -0
  89. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +4 -0
  90. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +22 -0
  91. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +17 -0
  92. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +149 -0
  93. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +5 -0
  94. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +13 -0
  95. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +17 -0
  96. package/node_modules/@openclaw/fs-safe/dist/archive.js +329 -0
  97. package/node_modules/@openclaw/fs-safe/dist/async-lock.d.ts +1 -0
  98. package/node_modules/@openclaw/fs-safe/dist/async-lock.js +17 -0
  99. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +6 -0
  100. package/node_modules/@openclaw/fs-safe/dist/atomic.js +4 -0
  101. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.d.ts +2 -0
  102. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.js +15 -0
  103. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +25 -0
  104. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +143 -0
  105. package/node_modules/@openclaw/fs-safe/dist/byte-budget.d.ts +3 -0
  106. package/node_modules/@openclaw/fs-safe/dist/byte-budget.js +9 -0
  107. package/node_modules/@openclaw/fs-safe/dist/byte-view.d.ts +2 -0
  108. package/node_modules/@openclaw/fs-safe/dist/byte-view.js +13 -0
  109. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
  110. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +36 -0
  111. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +2 -0
  112. package/node_modules/@openclaw/fs-safe/dist/config.js +2 -0
  113. package/node_modules/@openclaw/fs-safe/dist/containment.d.ts +1 -0
  114. package/node_modules/@openclaw/fs-safe/dist/containment.js +1 -0
  115. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +21 -0
  116. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
  117. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +2 -0
  118. package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
  119. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +20 -0
  120. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +33 -0
  121. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +8 -0
  122. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +245 -0
  123. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +15 -0
  124. package/node_modules/@openclaw/fs-safe/dist/copy.js +143 -0
  125. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.d.ts +7 -0
  126. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.js +16 -0
  127. package/node_modules/@openclaw/fs-safe/dist/create.d.ts +17 -0
  128. package/node_modules/@openclaw/fs-safe/dist/create.js +388 -0
  129. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.d.ts +60 -0
  130. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.js +371 -0
  131. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts +11 -0
  132. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +95 -0
  133. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts +14 -0
  134. package/node_modules/@openclaw/fs-safe/dist/device-path.js +139 -0
  135. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts +43 -0
  136. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +286 -0
  137. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +2 -0
  138. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
  139. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +55 -0
  140. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +179 -0
  141. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +21 -0
  142. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +209 -0
  143. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts +20 -0
  144. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.js +78 -0
  145. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.d.ts +23 -0
  146. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +123 -0
  147. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +4 -0
  148. package/node_modules/@openclaw/fs-safe/dist/durability.js +3 -0
  149. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +1 -0
  150. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +25 -0
  151. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts +2 -0
  152. package/node_modules/@openclaw/fs-safe/dist/error-detail.js +13 -0
  153. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +13 -0
  154. package/node_modules/@openclaw/fs-safe/dist/errors.js +26 -0
  155. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.d.ts +19 -0
  156. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.js +81 -0
  157. package/node_modules/@openclaw/fs-safe/dist/file-contents.d.ts +5 -0
  158. package/node_modules/@openclaw/fs-safe/dist/file-contents.js +40 -0
  159. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +15 -0
  160. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +190 -0
  161. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +16 -0
  162. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +296 -0
  163. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts +7 -0
  164. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +48 -0
  165. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.d.ts +22 -0
  166. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +98 -0
  167. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.d.ts +17 -0
  168. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +54 -0
  169. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  170. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +303 -0
  171. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +17 -0
  172. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +66 -0
  173. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +32 -0
  174. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +395 -0
  175. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +43 -0
  176. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +209 -0
  177. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.d.ts +16 -0
  178. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.js +275 -0
  179. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +19 -0
  180. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.js +58 -0
  181. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.d.ts +1 -0
  182. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.js +90 -0
  183. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +36 -0
  184. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.js +288 -0
  185. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.d.ts +19 -0
  186. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.js +199 -0
  187. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts +17 -0
  188. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +341 -0
  189. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts +23 -0
  190. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +66 -0
  191. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +8 -0
  192. package/node_modules/@openclaw/fs-safe/dist/file-observation.js +22 -0
  193. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +38 -0
  194. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +177 -0
  195. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts +11 -0
  196. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +109 -0
  197. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +15 -0
  198. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +319 -0
  199. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +9 -0
  200. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +128 -0
  201. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +65 -0
  202. package/node_modules/@openclaw/fs-safe/dist/file-store.js +362 -0
  203. package/node_modules/@openclaw/fs-safe/dist/file-sync.d.ts +4 -0
  204. package/node_modules/@openclaw/fs-safe/dist/file-sync.js +19 -0
  205. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +8 -0
  206. package/node_modules/@openclaw/fs-safe/dist/filename.js +138 -0
  207. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts +12 -0
  208. package/node_modules/@openclaw/fs-safe/dist/fs.js +30 -0
  209. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +25 -0
  210. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +281 -0
  211. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +32 -0
  212. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +81 -0
  213. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +1 -0
  214. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +68 -0
  215. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +3 -0
  216. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +135 -0
  217. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +8 -0
  218. package/node_modules/@openclaw/fs-safe/dist/guest.js +424 -0
  219. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts +11 -0
  220. package/node_modules/@openclaw/fs-safe/dist/home-dir.js +149 -0
  221. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +9 -0
  222. package/node_modules/@openclaw/fs-safe/dist/index.js +5 -0
  223. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +25 -0
  224. package/node_modules/@openclaw/fs-safe/dist/install-path.js +136 -0
  225. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +37 -0
  226. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +105 -0
  227. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.d.ts +14 -0
  228. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +154 -0
  229. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +23 -0
  230. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +355 -0
  231. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +5 -0
  232. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +65 -0
  233. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +45 -0
  234. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +215 -0
  235. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts +8 -0
  236. package/node_modules/@openclaw/fs-safe/dist/json-store.js +15 -0
  237. package/node_modules/@openclaw/fs-safe/dist/json-stringify.d.ts +1 -0
  238. package/node_modules/@openclaw/fs-safe/dist/json-stringify.js +7 -0
  239. package/node_modules/@openclaw/fs-safe/dist/json.d.ts +49 -0
  240. package/node_modules/@openclaw/fs-safe/dist/json.js +323 -0
  241. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts +8 -0
  242. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +84 -0
  243. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +16 -0
  244. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
  245. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +25 -0
  246. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +160 -0
  247. package/node_modules/@openclaw/fs-safe/dist/lock-config.d.ts +9 -0
  248. package/node_modules/@openclaw/fs-safe/dist/lock-config.js +12 -0
  249. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +30 -0
  250. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +224 -0
  251. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +7 -0
  252. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
  253. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts +20 -0
  254. package/node_modules/@openclaw/fs-safe/dist/move-path.js +390 -0
  255. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +8 -0
  256. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +36 -0
  257. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +162 -0
  258. package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -0
  259. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +16 -0
  260. package/node_modules/@openclaw/fs-safe/dist/native-config.js +71 -0
  261. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +16 -0
  262. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
  263. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.d.ts +3 -0
  264. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.js +11 -0
  265. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +15 -0
  266. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +111 -0
  267. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +34 -0
  268. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +147 -0
  269. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +6 -0
  270. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +252 -0
  271. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +4 -0
  272. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +472 -0
  273. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.d.ts +11 -0
  274. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.js +61 -0
  275. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.d.ts +13 -0
  276. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.js +209 -0
  277. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.d.ts +3 -0
  278. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +8 -0
  279. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +45 -0
  280. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +442 -0
  281. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +13 -0
  282. package/node_modules/@openclaw/fs-safe/dist/native.js +209 -0
  283. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +7 -0
  284. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +46 -0
  285. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts +15 -0
  286. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +102 -0
  287. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +16 -0
  288. package/node_modules/@openclaw/fs-safe/dist/output.js +139 -0
  289. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +7 -0
  290. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
  291. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +30 -0
  292. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +36 -0
  293. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +6 -0
  294. package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
  295. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts +24 -0
  296. package/node_modules/@openclaw/fs-safe/dist/path-policy.js +49 -0
  297. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +6 -0
  298. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +104 -0
  299. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +13 -0
  300. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
  301. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +6 -0
  302. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
  303. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +11 -0
  304. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +394 -0
  305. package/node_modules/@openclaw/fs-safe/dist/path.d.ts +20 -0
  306. package/node_modules/@openclaw/fs-safe/dist/path.js +169 -0
  307. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +26 -0
  308. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +197 -0
  309. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +3 -0
  310. package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +3 -0
  311. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +51 -0
  312. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +319 -0
  313. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +59 -0
  314. package/node_modules/@openclaw/fs-safe/dist/permissions.js +132 -0
  315. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +24 -0
  316. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +419 -0
  317. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +38 -0
  318. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +205 -0
  319. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +24 -0
  320. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
  321. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +30 -0
  322. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +99 -0
  323. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.d.ts +1 -0
  324. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +22 -0
  325. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.d.ts +3 -0
  326. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +35 -0
  327. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.d.ts +4 -0
  328. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.js +31 -0
  329. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.d.ts +5 -0
  330. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +185 -0
  331. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +68 -0
  332. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
  333. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +12 -0
  334. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +300 -0
  335. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +8 -0
  336. package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
  337. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts +4 -0
  338. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +30 -0
  339. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.d.ts +3 -0
  340. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.js +72 -0
  341. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +53 -0
  342. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +358 -0
  343. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +7 -0
  344. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +341 -0
  345. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
  346. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +56 -0
  347. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +27 -0
  348. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.js +22 -0
  349. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +19 -0
  350. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +332 -0
  351. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.d.ts +7 -0
  352. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.js +13 -0
  353. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +20 -0
  354. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.js +18 -0
  355. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +3 -0
  356. package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
  357. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +2 -0
  358. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
  359. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts +37 -0
  360. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +317 -0
  361. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts +6 -0
  362. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +287 -0
  363. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +38 -0
  364. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +341 -0
  365. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts +20 -0
  366. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +101 -0
  367. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +50 -0
  368. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +160 -0
  369. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +2 -0
  370. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
  371. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.d.ts +5 -0
  372. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.js +30 -0
  373. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +49 -0
  374. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +356 -0
  375. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +58 -0
  376. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +336 -0
  377. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +25 -0
  378. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +193 -0
  379. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
  380. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +186 -0
  381. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +43 -0
  382. package/node_modules/@openclaw/fs-safe/dist/root-context.js +232 -0
  383. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +16 -0
  384. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +93 -0
  385. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +12 -0
  386. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +225 -0
  387. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +38 -0
  388. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +382 -0
  389. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +22 -0
  390. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
  391. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +10 -0
  392. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
  393. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +16 -0
  394. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +92 -0
  395. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +20 -0
  396. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +86 -0
  397. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +46 -0
  398. package/node_modules/@openclaw/fs-safe/dist/root-file.js +208 -0
  399. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +117 -0
  400. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +1443 -0
  401. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +15 -0
  402. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +205 -0
  403. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +7 -0
  404. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
  405. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +8 -0
  406. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +93 -0
  407. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +84 -0
  408. package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
  409. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
  410. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +22 -0
  411. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +12 -0
  412. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +160 -0
  413. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +62 -0
  414. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
  415. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +4 -0
  416. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +151 -0
  417. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +53 -0
  418. package/node_modules/@openclaw/fs-safe/dist/root-path.js +443 -0
  419. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +8 -0
  420. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
  421. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +62 -0
  422. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +296 -0
  423. package/node_modules/@openclaw/fs-safe/dist/root-public-types.d.ts +11 -0
  424. package/node_modules/@openclaw/fs-safe/dist/root-public-types.js +1 -0
  425. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +25 -0
  426. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +86 -0
  427. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +14 -0
  428. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +87 -0
  429. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +16 -0
  430. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
  431. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
  432. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +464 -0
  433. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +13 -0
  434. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
  435. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +41 -0
  436. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +198 -0
  437. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +65 -0
  438. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +304 -0
  439. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +11 -0
  440. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +23 -0
  441. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +41 -0
  442. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +180 -0
  443. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.d.ts +14 -0
  444. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.js +162 -0
  445. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +7 -0
  446. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +72 -0
  447. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +23 -0
  448. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
  449. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +11 -0
  450. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +95 -0
  451. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +2 -0
  452. package/node_modules/@openclaw/fs-safe/dist/root.js +1 -0
  453. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +11 -0
  454. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +74 -0
  455. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +25 -0
  456. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +337 -0
  457. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts +3 -0
  458. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +58 -0
  459. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts +20 -0
  460. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +68 -0
  461. package/node_modules/@openclaw/fs-safe/dist/secret.d.ts +3 -0
  462. package/node_modules/@openclaw/fs-safe/dist/secret.js +3 -0
  463. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
  464. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +88 -0
  465. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +31 -0
  466. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +297 -0
  467. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +29 -0
  468. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +181 -0
  469. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +34 -0
  470. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +110 -0
  471. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +17 -0
  472. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +301 -0
  473. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +28 -0
  474. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +132 -0
  475. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +4 -0
  476. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +442 -0
  477. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.d.ts +18 -0
  478. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.js +60 -0
  479. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +42 -0
  480. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.js +113 -0
  481. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +31 -0
  482. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.js +1 -0
  483. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +26 -0
  484. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.js +48 -0
  485. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +19 -0
  486. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +113 -0
  487. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +67 -0
  488. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +375 -0
  489. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.d.ts +13 -0
  490. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.js +47 -0
  491. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts +2 -0
  492. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +79 -0
  493. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +38 -0
  494. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.js +228 -0
  495. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.d.ts +7 -0
  496. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.js +55 -0
  497. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.d.ts +68 -0
  498. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.js +1 -0
  499. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts +13 -0
  500. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +280 -0
  501. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +27 -0
  502. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +148 -0
  503. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.d.ts +16 -0
  504. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +57 -0
  505. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.d.ts +55 -0
  506. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.js +1 -0
  507. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +10 -0
  508. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +64 -0
  509. package/node_modules/@openclaw/fs-safe/dist/store.d.ts +3 -0
  510. package/node_modules/@openclaw/fs-safe/dist/store.js +3 -0
  511. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +5 -0
  512. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +88 -0
  513. package/node_modules/@openclaw/fs-safe/dist/string-coerce.d.ts +4 -0
  514. package/node_modules/@openclaw/fs-safe/dist/string-coerce.js +16 -0
  515. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.d.ts +5 -0
  516. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.js +15 -0
  517. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts +11 -0
  518. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +58 -0
  519. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts +13 -0
  520. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +88 -0
  521. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +31 -0
  522. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +238 -0
  523. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +14 -0
  524. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +392 -0
  525. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +23 -0
  526. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +151 -0
  527. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +42 -0
  528. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +342 -0
  529. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +24 -0
  530. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +403 -0
  531. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +39 -0
  532. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
  533. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +3 -0
  534. package/node_modules/@openclaw/fs-safe/dist/temp.js +2 -0
  535. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +31 -0
  536. package/node_modules/@openclaw/fs-safe/dist/test-hooks.js +13 -0
  537. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +13 -0
  538. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +16 -0
  539. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +8 -0
  540. package/node_modules/@openclaw/fs-safe/dist/timing.js +59 -0
  541. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts +4 -0
  542. package/node_modules/@openclaw/fs-safe/dist/trash.js +219 -0
  543. package/node_modules/@openclaw/fs-safe/dist/types.d.ts +22 -0
  544. package/node_modules/@openclaw/fs-safe/dist/types.js +1 -0
  545. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +2 -0
  546. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +16 -0
  547. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +40 -0
  548. package/node_modules/@openclaw/fs-safe/dist/walk.js +207 -0
  549. package/node_modules/@openclaw/fs-safe/dist/windows-command.d.ts +1 -0
  550. package/node_modules/@openclaw/fs-safe/dist/windows-command.js +34 -0
  551. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +28 -0
  552. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +101 -0
  553. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
  554. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +122 -0
  555. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.d.ts +5 -0
  556. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.js +21 -0
  557. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +336 -0
  558. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +15 -0
  559. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +25 -0
  560. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +363 -0
  561. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +5 -0
  562. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +108 -0
  563. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +13 -0
  564. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +49 -0
  565. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts +4 -0
  566. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +27 -0
  567. package/node_modules/@openclaw/fs-safe/dist/write-queue.d.ts +1 -0
  568. package/node_modules/@openclaw/fs-safe/dist/write-queue.js +15 -0
  569. package/node_modules/@openclaw/fs-safe/docs/advanced.md +269 -0
  570. package/node_modules/@openclaw/fs-safe/docs/archive.md +843 -0
  571. package/node_modules/@openclaw/fs-safe/docs/assets/readme-banner.jpg +0 -0
  572. package/node_modules/@openclaw/fs-safe/docs/atomic.md +521 -0
  573. package/node_modules/@openclaw/fs-safe/docs/config.md +136 -0
  574. package/node_modules/@openclaw/fs-safe/docs/contributing.md +262 -0
  575. package/node_modules/@openclaw/fs-safe/docs/copy.md +197 -0
  576. package/node_modules/@openclaw/fs-safe/docs/creation.md +132 -0
  577. package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
  578. package/node_modules/@openclaw/fs-safe/docs/durability.md +438 -0
  579. package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
  580. package/node_modules/@openclaw/fs-safe/docs/errors.md +240 -0
  581. package/node_modules/@openclaw/fs-safe/docs/file-contents.md +68 -0
  582. package/node_modules/@openclaw/fs-safe/docs/file-store.md +364 -0
  583. package/node_modules/@openclaw/fs-safe/docs/filename.md +110 -0
  584. package/node_modules/@openclaw/fs-safe/docs/guest.md +146 -0
  585. package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
  586. package/node_modules/@openclaw/fs-safe/docs/index.md +86 -0
  587. package/node_modules/@openclaw/fs-safe/docs/install-path.md +216 -0
  588. package/node_modules/@openclaw/fs-safe/docs/install.md +222 -0
  589. package/node_modules/@openclaw/fs-safe/docs/json-store.md +240 -0
  590. package/node_modules/@openclaw/fs-safe/docs/json.md +225 -0
  591. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +150 -0
  592. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +205 -0
  593. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.6.md +48 -0
  594. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +69 -0
  595. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +177 -0
  596. package/node_modules/@openclaw/fs-safe/docs/native.md +289 -0
  597. package/node_modules/@openclaw/fs-safe/docs/output.md +193 -0
  598. package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
  599. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +74 -0
  600. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +159 -0
  601. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +204 -0
  602. package/node_modules/@openclaw/fs-safe/docs/path.md +219 -0
  603. package/node_modules/@openclaw/fs-safe/docs/permissions.md +286 -0
  604. package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
  605. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +68 -0
  606. package/node_modules/@openclaw/fs-safe/docs/public-api.md +161 -0
  607. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +154 -0
  608. package/node_modules/@openclaw/fs-safe/docs/reading.md +196 -0
  609. package/node_modules/@openclaw/fs-safe/docs/regular-file.md +193 -0
  610. package/node_modules/@openclaw/fs-safe/docs/root.md +545 -0
  611. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +299 -0
  612. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +112 -0
  613. package/node_modules/@openclaw/fs-safe/docs/security-model.md +269 -0
  614. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +595 -0
  615. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +192 -0
  616. package/node_modules/@openclaw/fs-safe/docs/store.md +127 -0
  617. package/node_modules/@openclaw/fs-safe/docs/temp.md +760 -0
  618. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +110 -0
  619. package/node_modules/@openclaw/fs-safe/docs/testing.md +189 -0
  620. package/node_modules/@openclaw/fs-safe/docs/timing.md +123 -0
  621. package/node_modules/@openclaw/fs-safe/docs/types.md +211 -0
  622. package/node_modules/@openclaw/fs-safe/docs/walk.md +250 -0
  623. package/node_modules/@openclaw/fs-safe/docs/writing.md +641 -0
  624. package/node_modules/@openclaw/fs-safe/package.json +200 -0
  625. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  626. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +29 -0
  627. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  628. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +29 -0
  629. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  630. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +32 -0
  631. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  632. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +32 -0
  633. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  634. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +32 -0
  635. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  636. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +32 -0
  637. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  638. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +29 -0
  639. package/node_modules/core-util-is/LICENSE +19 -0
  640. package/node_modules/core-util-is/README.md +3 -0
  641. package/node_modules/core-util-is/lib/util.js +107 -0
  642. package/node_modules/core-util-is/package.json +38 -0
  643. package/node_modules/immediate/LICENSE.txt +20 -0
  644. package/node_modules/immediate/README.md +93 -0
  645. package/node_modules/immediate/dist/immediate.js +75 -0
  646. package/node_modules/immediate/dist/immediate.min.js +1 -0
  647. package/node_modules/immediate/lib/browser.js +69 -0
  648. package/node_modules/immediate/lib/index.js +73 -0
  649. package/node_modules/immediate/package.json +42 -0
  650. package/node_modules/inherits/LICENSE +16 -0
  651. package/node_modules/inherits/README.md +42 -0
  652. package/node_modules/inherits/inherits.js +9 -0
  653. package/node_modules/inherits/inherits_browser.js +27 -0
  654. package/node_modules/inherits/package.json +29 -0
  655. package/node_modules/isarray/.npmignore +1 -0
  656. package/node_modules/isarray/.travis.yml +4 -0
  657. package/node_modules/isarray/Makefile +6 -0
  658. package/node_modules/isarray/README.md +60 -0
  659. package/node_modules/isarray/component.json +19 -0
  660. package/node_modules/isarray/index.js +5 -0
  661. package/node_modules/isarray/package.json +45 -0
  662. package/node_modules/isarray/test.js +20 -0
  663. package/node_modules/jszip/.codeclimate.yml +16 -0
  664. package/node_modules/jszip/.editorconfig +8 -0
  665. package/node_modules/jszip/.eslintrc.js +43 -0
  666. package/node_modules/jszip/.github/FUNDING.yml +1 -0
  667. package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
  668. package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
  669. package/node_modules/jszip/.github/workflows/main.yml +55 -0
  670. package/node_modules/jszip/CHANGES.md +210 -0
  671. package/node_modules/jszip/LICENSE.markdown +651 -0
  672. package/node_modules/jszip/README.markdown +33 -0
  673. package/node_modules/jszip/dist/jszip.js +11586 -0
  674. package/node_modules/jszip/dist/jszip.min.js +13 -0
  675. package/node_modules/jszip/index.d.ts +344 -0
  676. package/node_modules/jszip/lib/base64.js +106 -0
  677. package/node_modules/jszip/lib/compressedObject.js +74 -0
  678. package/node_modules/jszip/lib/compressions.js +14 -0
  679. package/node_modules/jszip/lib/crc32.js +77 -0
  680. package/node_modules/jszip/lib/defaults.js +11 -0
  681. package/node_modules/jszip/lib/external.js +18 -0
  682. package/node_modules/jszip/lib/flate.js +85 -0
  683. package/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
  684. package/node_modules/jszip/lib/generate/index.js +57 -0
  685. package/node_modules/jszip/lib/index.js +55 -0
  686. package/node_modules/jszip/lib/license_header.js +11 -0
  687. package/node_modules/jszip/lib/load.js +88 -0
  688. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  689. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  690. package/node_modules/jszip/lib/nodejsUtils.js +57 -0
  691. package/node_modules/jszip/lib/object.js +384 -0
  692. package/node_modules/jszip/lib/readable-stream-browser.js +10 -0
  693. package/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  694. package/node_modules/jszip/lib/reader/DataReader.js +116 -0
  695. package/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  696. package/node_modules/jszip/lib/reader/StringReader.js +38 -0
  697. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  698. package/node_modules/jszip/lib/reader/readerFor.js +28 -0
  699. package/node_modules/jszip/lib/signature.js +7 -0
  700. package/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  701. package/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  702. package/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  703. package/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  704. package/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  705. package/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
  706. package/node_modules/jszip/lib/support.js +38 -0
  707. package/node_modules/jszip/lib/utf8.js +275 -0
  708. package/node_modules/jszip/lib/utils.js +510 -0
  709. package/node_modules/jszip/lib/zipEntries.js +261 -0
  710. package/node_modules/jszip/lib/zipEntry.js +293 -0
  711. package/node_modules/jszip/lib/zipObject.js +133 -0
  712. package/node_modules/jszip/package.json +67 -0
  713. package/node_modules/jszip/sponsors.md +21 -0
  714. package/node_modules/jszip/tsconfig.json +101 -0
  715. package/node_modules/jszip/vendor/FileSaver.js +247 -0
  716. package/node_modules/lie/README.md +62 -0
  717. package/node_modules/lie/dist/lie.js +350 -0
  718. package/node_modules/lie/dist/lie.min.js +1 -0
  719. package/node_modules/lie/dist/lie.polyfill.js +358 -0
  720. package/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  721. package/node_modules/lie/lib/browser.js +273 -0
  722. package/node_modules/lie/lib/index.js +298 -0
  723. package/node_modules/lie/license.md +7 -0
  724. package/node_modules/lie/lie.d.ts +244 -0
  725. package/node_modules/lie/package.json +69 -0
  726. package/node_modules/lie/polyfill.js +4 -0
  727. package/node_modules/pako/CHANGELOG.md +164 -0
  728. package/node_modules/pako/LICENSE +21 -0
  729. package/node_modules/pako/README.md +191 -0
  730. package/node_modules/pako/dist/pako.js +6818 -0
  731. package/node_modules/pako/dist/pako.min.js +1 -0
  732. package/node_modules/pako/dist/pako_deflate.js +3997 -0
  733. package/node_modules/pako/dist/pako_deflate.min.js +1 -0
  734. package/node_modules/pako/dist/pako_inflate.js +3300 -0
  735. package/node_modules/pako/dist/pako_inflate.min.js +1 -0
  736. package/node_modules/pako/index.js +14 -0
  737. package/node_modules/pako/lib/deflate.js +400 -0
  738. package/node_modules/pako/lib/inflate.js +423 -0
  739. package/node_modules/pako/lib/utils/common.js +105 -0
  740. package/node_modules/pako/lib/utils/strings.js +187 -0
  741. package/node_modules/pako/lib/zlib/README +59 -0
  742. package/node_modules/pako/lib/zlib/adler32.js +51 -0
  743. package/node_modules/pako/lib/zlib/constants.js +68 -0
  744. package/node_modules/pako/lib/zlib/crc32.js +59 -0
  745. package/node_modules/pako/lib/zlib/deflate.js +1874 -0
  746. package/node_modules/pako/lib/zlib/gzheader.js +58 -0
  747. package/node_modules/pako/lib/zlib/inffast.js +345 -0
  748. package/node_modules/pako/lib/zlib/inflate.js +1556 -0
  749. package/node_modules/pako/lib/zlib/inftrees.js +343 -0
  750. package/node_modules/pako/lib/zlib/messages.js +32 -0
  751. package/node_modules/pako/lib/zlib/trees.js +1222 -0
  752. package/node_modules/pako/lib/zlib/zstream.js +47 -0
  753. package/node_modules/pako/package.json +44 -0
  754. package/node_modules/process-nextick-args/index.js +45 -0
  755. package/node_modules/process-nextick-args/license.md +19 -0
  756. package/node_modules/process-nextick-args/package.json +25 -0
  757. package/node_modules/process-nextick-args/readme.md +18 -0
  758. package/node_modules/readable-stream/.travis.yml +34 -0
  759. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  760. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  761. package/node_modules/readable-stream/LICENSE +47 -0
  762. package/node_modules/readable-stream/README.md +58 -0
  763. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  764. package/node_modules/readable-stream/duplex-browser.js +1 -0
  765. package/node_modules/readable-stream/duplex.js +1 -0
  766. package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  767. package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  768. package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  769. package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  770. package/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  771. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  772. package/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  773. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  774. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  775. package/node_modules/readable-stream/package.json +52 -0
  776. package/node_modules/readable-stream/passthrough.js +1 -0
  777. package/node_modules/readable-stream/readable-browser.js +7 -0
  778. package/node_modules/readable-stream/readable.js +19 -0
  779. package/node_modules/readable-stream/transform.js +1 -0
  780. package/node_modules/readable-stream/writable-browser.js +1 -0
  781. package/node_modules/readable-stream/writable.js +8 -0
  782. package/node_modules/safe-buffer/LICENSE +21 -0
  783. package/node_modules/safe-buffer/README.md +584 -0
  784. package/node_modules/safe-buffer/index.d.ts +187 -0
  785. package/node_modules/safe-buffer/index.js +62 -0
  786. package/node_modules/safe-buffer/package.json +37 -0
  787. package/node_modules/setimmediate/LICENSE.txt +20 -0
  788. package/node_modules/setimmediate/package.json +30 -0
  789. package/node_modules/setimmediate/setImmediate.js +186 -0
  790. package/node_modules/string_decoder/.travis.yml +50 -0
  791. package/node_modules/string_decoder/LICENSE +48 -0
  792. package/node_modules/string_decoder/README.md +47 -0
  793. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  794. package/node_modules/string_decoder/package.json +31 -0
  795. package/node_modules/util-deprecate/History.md +16 -0
  796. package/node_modules/util-deprecate/LICENSE +24 -0
  797. package/node_modules/util-deprecate/README.md +53 -0
  798. package/node_modules/util-deprecate/browser.js +67 -0
  799. package/node_modules/util-deprecate/node.js +6 -0
  800. package/node_modules/util-deprecate/package.json +27 -0
  801. package/node_modules/zod/README.md +29 -2
  802. package/node_modules/zod/compile.cjs +96 -0
  803. package/node_modules/zod/compile.d.cts +1 -0
  804. package/node_modules/zod/compile.d.ts +1 -0
  805. package/node_modules/zod/compile.js +52 -0
  806. package/node_modules/zod/index.cjs +21 -2
  807. package/node_modules/zod/index.d.cts +1 -2
  808. package/node_modules/zod/index.d.ts +1 -2
  809. package/node_modules/zod/index.js +5 -2
  810. package/node_modules/zod/locales/index.cjs +19 -0
  811. package/node_modules/zod/mini/index.cjs +19 -0
  812. package/node_modules/zod/package.json +20 -8
  813. package/node_modules/zod/src/compile.ts +56 -0
  814. package/node_modules/zod/src/index.ts +5 -2
  815. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  816. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  817. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  818. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  819. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  820. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  821. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  822. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  823. package/node_modules/zod/src/v3/types.ts +5 -5
  824. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  825. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  826. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  827. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  828. package/node_modules/zod/src/v4/classic/external.ts +14 -9
  829. package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
  830. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  831. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  832. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  833. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  834. package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
  835. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  836. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  837. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
  838. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
  839. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  840. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  841. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  842. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
  843. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  844. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  845. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  846. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  847. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  848. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  849. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  850. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  851. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
  852. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
  853. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  854. package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
  855. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
  856. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  857. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  858. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  859. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  860. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  861. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  862. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  863. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
  864. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  865. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  866. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  867. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  868. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  869. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  870. package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
  871. package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
  872. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  873. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  874. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  875. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  876. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  877. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  878. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  879. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  880. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
  881. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  882. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  883. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  884. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  885. package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
  886. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  887. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
  888. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
  889. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  890. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  891. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  892. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  893. package/node_modules/zod/src/v4/core/api.ts +87 -35
  894. package/node_modules/zod/src/v4/core/checks.ts +119 -146
  895. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  896. package/node_modules/zod/src/v4/core/core.ts +99 -22
  897. package/node_modules/zod/src/v4/core/doc.ts +17 -9
  898. package/node_modules/zod/src/v4/core/errors.ts +113 -25
  899. package/node_modules/zod/src/v4/core/index.ts +3 -0
  900. package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
  901. package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
  902. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  903. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  904. package/node_modules/zod/src/v4/core/parse.ts +164 -50
  905. package/node_modules/zod/src/v4/core/regexes.ts +42 -15
  906. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  907. package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
  908. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  909. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  910. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  911. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  912. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  913. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  914. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  915. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  916. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  917. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  918. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  919. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  920. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  921. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  922. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  923. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  924. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  925. package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
  926. package/node_modules/zod/src/v4/core/util.ts +454 -157
  927. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  928. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  929. package/node_modules/zod/src/v4/index.ts +3 -3
  930. package/node_modules/zod/src/v4/locales/ar.ts +5 -0
  931. package/node_modules/zod/src/v4/locales/az.ts +5 -0
  932. package/node_modules/zod/src/v4/locales/be.ts +12 -0
  933. package/node_modules/zod/src/v4/locales/bg.ts +5 -0
  934. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  935. package/node_modules/zod/src/v4/locales/ca.ts +5 -0
  936. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  937. package/node_modules/zod/src/v4/locales/cs.ts +5 -0
  938. package/node_modules/zod/src/v4/locales/da.ts +7 -2
  939. package/node_modules/zod/src/v4/locales/de.ts +5 -0
  940. package/node_modules/zod/src/v4/locales/el.ts +3 -0
  941. package/node_modules/zod/src/v4/locales/en.ts +17 -4
  942. package/node_modules/zod/src/v4/locales/eo.ts +5 -0
  943. package/node_modules/zod/src/v4/locales/es.ts +4 -0
  944. package/node_modules/zod/src/v4/locales/fa.ts +5 -0
  945. package/node_modules/zod/src/v4/locales/fi.ts +5 -0
  946. package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
  947. package/node_modules/zod/src/v4/locales/fr.ts +21 -14
  948. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  949. package/node_modules/zod/src/v4/locales/he.ts +8 -1
  950. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  951. package/node_modules/zod/src/v4/locales/hr.ts +4 -0
  952. package/node_modules/zod/src/v4/locales/hu.ts +5 -0
  953. package/node_modules/zod/src/v4/locales/hy.ts +11 -0
  954. package/node_modules/zod/src/v4/locales/id.ts +5 -0
  955. package/node_modules/zod/src/v4/locales/index.ts +11 -0
  956. package/node_modules/zod/src/v4/locales/is.ts +5 -0
  957. package/node_modules/zod/src/v4/locales/it.ts +5 -0
  958. package/node_modules/zod/src/v4/locales/ja.ts +5 -0
  959. package/node_modules/zod/src/v4/locales/ka.ts +5 -0
  960. package/node_modules/zod/src/v4/locales/km.ts +5 -0
  961. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  962. package/node_modules/zod/src/v4/locales/ko.ts +5 -0
  963. package/node_modules/zod/src/v4/locales/lt.ts +4 -0
  964. package/node_modules/zod/src/v4/locales/mk.ts +5 -0
  965. package/node_modules/zod/src/v4/locales/ms.ts +5 -0
  966. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  967. package/node_modules/zod/src/v4/locales/nl.ts +5 -0
  968. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  969. package/node_modules/zod/src/v4/locales/no.ts +7 -2
  970. package/node_modules/zod/src/v4/locales/ota.ts +5 -0
  971. package/node_modules/zod/src/v4/locales/pl.ts +5 -0
  972. package/node_modules/zod/src/v4/locales/ps.ts +5 -0
  973. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  974. package/node_modules/zod/src/v4/locales/pt.ts +101 -58
  975. package/node_modules/zod/src/v4/locales/ro.ts +3 -0
  976. package/node_modules/zod/src/v4/locales/ru.ts +12 -0
  977. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  978. package/node_modules/zod/src/v4/locales/sl.ts +5 -0
  979. package/node_modules/zod/src/v4/locales/sv.ts +7 -2
  980. package/node_modules/zod/src/v4/locales/ta.ts +5 -0
  981. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  982. package/node_modules/zod/src/v4/locales/th.ts +5 -0
  983. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  984. package/node_modules/zod/src/v4/locales/tr.ts +5 -0
  985. package/node_modules/zod/src/v4/locales/uk.ts +5 -0
  986. package/node_modules/zod/src/v4/locales/ur.ts +5 -0
  987. package/node_modules/zod/src/v4/locales/uz.ts +3 -0
  988. package/node_modules/zod/src/v4/locales/vi.ts +5 -0
  989. package/node_modules/zod/src/v4/locales/yo.ts +5 -0
  990. package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
  991. package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
  992. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  993. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  994. package/node_modules/zod/src/v4/mini/external.ts +12 -1
  995. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  996. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  997. package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
  998. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  999. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  1000. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  1001. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  1002. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  1003. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  1004. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  1005. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  1006. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  1007. package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
  1008. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  1009. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  1010. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  1011. package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
  1012. package/node_modules/zod/v3/ZodError.cjs +41 -12
  1013. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  1014. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  1015. package/node_modules/zod/v3/ZodError.js +22 -12
  1016. package/node_modules/zod/v3/errors.cjs +19 -0
  1017. package/node_modules/zod/v3/external.cjs +19 -0
  1018. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  1019. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  1020. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  1021. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  1022. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  1023. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  1024. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  1025. package/node_modules/zod/v3/index.cjs +19 -0
  1026. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  1027. package/node_modules/zod/v3/types.cjs +26 -5
  1028. package/node_modules/zod/v3/types.js +7 -5
  1029. package/node_modules/zod/v4/classic/checks.cjs +21 -1
  1030. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  1031. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  1032. package/node_modules/zod/v4/classic/checks.js +1 -1
  1033. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  1034. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  1035. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  1036. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  1037. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  1038. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  1039. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  1040. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  1041. package/node_modules/zod/v4/classic/errors.cjs +62 -34
  1042. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  1043. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  1044. package/node_modules/zod/v4/classic/errors.js +43 -34
  1045. package/node_modules/zod/v4/classic/external.cjs +51 -27
  1046. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  1047. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  1048. package/node_modules/zod/v4/classic/external.js +5 -8
  1049. package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
  1050. package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
  1051. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  1052. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  1053. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  1054. package/node_modules/zod/v4/classic/in-out.js +36 -0
  1055. package/node_modules/zod/v4/classic/index.cjs +21 -2
  1056. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  1057. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  1058. package/node_modules/zod/v4/classic/index.js +2 -2
  1059. package/node_modules/zod/v4/classic/iso.cjs +30 -22
  1060. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  1061. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  1062. package/node_modules/zod/v4/classic/iso.js +2 -17
  1063. package/node_modules/zod/v4/classic/parse.cjs +23 -1
  1064. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  1065. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  1066. package/node_modules/zod/v4/classic/parse.js +1 -0
  1067. package/node_modules/zod/v4/classic/schemas.cjs +591 -426
  1068. package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
  1069. package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
  1070. package/node_modules/zod/v4/classic/schemas.js +564 -424
  1071. package/node_modules/zod/v4/core/api.cjs +66 -24
  1072. package/node_modules/zod/v4/core/api.d.cts +22 -12
  1073. package/node_modules/zod/v4/core/api.d.ts +22 -12
  1074. package/node_modules/zod/v4/core/api.js +44 -24
  1075. package/node_modules/zod/v4/core/checks.cjs +88 -128
  1076. package/node_modules/zod/v4/core/checks.d.cts +29 -13
  1077. package/node_modules/zod/v4/core/checks.d.ts +29 -13
  1078. package/node_modules/zod/v4/core/checks.js +68 -127
  1079. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  1080. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  1081. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  1082. package/node_modules/zod/v4/core/compile.js +1858 -0
  1083. package/node_modules/zod/v4/core/core.cjs +101 -19
  1084. package/node_modules/zod/v4/core/core.d.cts +16 -4
  1085. package/node_modules/zod/v4/core/core.d.ts +16 -4
  1086. package/node_modules/zod/v4/core/core.js +83 -20
  1087. package/node_modules/zod/v4/core/doc.cjs +31 -9
  1088. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  1089. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  1090. package/node_modules/zod/v4/core/doc.js +12 -9
  1091. package/node_modules/zod/v4/core/errors.cjs +126 -25
  1092. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  1093. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  1094. package/node_modules/zod/v4/core/errors.js +107 -25
  1095. package/node_modules/zod/v4/core/index.cjs +24 -1
  1096. package/node_modules/zod/v4/core/index.d.cts +3 -0
  1097. package/node_modules/zod/v4/core/index.d.ts +3 -0
  1098. package/node_modules/zod/v4/core/index.js +3 -0
  1099. package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
  1100. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  1101. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  1102. package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
  1103. package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
  1104. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  1105. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  1106. package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
  1107. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  1108. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  1109. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  1110. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  1111. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  1112. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  1113. package/node_modules/zod/v4/core/memoizer.js +311 -0
  1114. package/node_modules/zod/v4/core/parse.cjs +148 -46
  1115. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  1116. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  1117. package/node_modules/zod/v4/core/parse.js +127 -45
  1118. package/node_modules/zod/v4/core/regexes.cjs +54 -17
  1119. package/node_modules/zod/v4/core/regexes.d.cts +5 -0
  1120. package/node_modules/zod/v4/core/regexes.d.ts +5 -0
  1121. package/node_modules/zod/v4/core/regexes.js +32 -15
  1122. package/node_modules/zod/v4/core/registries.cjs +19 -0
  1123. package/node_modules/zod/v4/core/registries.js +2 -2
  1124. package/node_modules/zod/v4/core/schemas.cjs +785 -386
  1125. package/node_modules/zod/v4/core/schemas.d.cts +123 -34
  1126. package/node_modules/zod/v4/core/schemas.d.ts +123 -34
  1127. package/node_modules/zod/v4/core/schemas.js +753 -386
  1128. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  1129. package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
  1130. package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
  1131. package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
  1132. package/node_modules/zod/v4/core/to-json-schema.js +247 -44
  1133. package/node_modules/zod/v4/core/util.cjs +372 -157
  1134. package/node_modules/zod/v4/core/util.d.cts +79 -1
  1135. package/node_modules/zod/v4/core/util.d.ts +79 -1
  1136. package/node_modules/zod/v4/core/util.js +341 -156
  1137. package/node_modules/zod/v4/core/versions.cjs +21 -2
  1138. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  1139. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  1140. package/node_modules/zod/v4/core/versions.js +2 -2
  1141. package/node_modules/zod/v4/core/visit.cjs +214 -0
  1142. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  1143. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  1144. package/node_modules/zod/v4/core/visit.js +169 -0
  1145. package/node_modules/zod/v4/index.cjs +34 -5
  1146. package/node_modules/zod/v4/index.d.cts +2 -2
  1147. package/node_modules/zod/v4/index.d.ts +2 -2
  1148. package/node_modules/zod/v4/index.js +3 -2
  1149. package/node_modules/zod/v4/locales/ar.cjs +5 -0
  1150. package/node_modules/zod/v4/locales/ar.js +5 -0
  1151. package/node_modules/zod/v4/locales/az.cjs +5 -0
  1152. package/node_modules/zod/v4/locales/az.js +5 -0
  1153. package/node_modules/zod/v4/locales/be.cjs +12 -0
  1154. package/node_modules/zod/v4/locales/be.js +12 -0
  1155. package/node_modules/zod/v4/locales/bg.cjs +5 -0
  1156. package/node_modules/zod/v4/locales/bg.js +5 -0
  1157. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  1158. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  1159. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  1160. package/node_modules/zod/v4/locales/bn.js +113 -0
  1161. package/node_modules/zod/v4/locales/ca.cjs +5 -0
  1162. package/node_modules/zod/v4/locales/ca.js +5 -0
  1163. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  1164. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  1165. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  1166. package/node_modules/zod/v4/locales/ckb.js +133 -0
  1167. package/node_modules/zod/v4/locales/cs.cjs +5 -0
  1168. package/node_modules/zod/v4/locales/cs.js +5 -0
  1169. package/node_modules/zod/v4/locales/da.cjs +7 -2
  1170. package/node_modules/zod/v4/locales/da.js +7 -2
  1171. package/node_modules/zod/v4/locales/de.cjs +5 -0
  1172. package/node_modules/zod/v4/locales/de.js +5 -0
  1173. package/node_modules/zod/v4/locales/el.cjs +3 -0
  1174. package/node_modules/zod/v4/locales/el.js +3 -0
  1175. package/node_modules/zod/v4/locales/en.cjs +16 -4
  1176. package/node_modules/zod/v4/locales/en.js +16 -4
  1177. package/node_modules/zod/v4/locales/eo.cjs +5 -0
  1178. package/node_modules/zod/v4/locales/eo.js +5 -0
  1179. package/node_modules/zod/v4/locales/es.cjs +4 -0
  1180. package/node_modules/zod/v4/locales/es.js +4 -0
  1181. package/node_modules/zod/v4/locales/fa.cjs +5 -0
  1182. package/node_modules/zod/v4/locales/fa.js +5 -0
  1183. package/node_modules/zod/v4/locales/fi.cjs +5 -0
  1184. package/node_modules/zod/v4/locales/fi.js +5 -0
  1185. package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
  1186. package/node_modules/zod/v4/locales/fr-CA.js +5 -0
  1187. package/node_modules/zod/v4/locales/fr.cjs +18 -14
  1188. package/node_modules/zod/v4/locales/fr.js +18 -14
  1189. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  1190. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  1191. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  1192. package/node_modules/zod/v4/locales/gu.js +113 -0
  1193. package/node_modules/zod/v4/locales/he.cjs +7 -0
  1194. package/node_modules/zod/v4/locales/he.js +7 -0
  1195. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  1196. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  1197. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  1198. package/node_modules/zod/v4/locales/hi.js +111 -0
  1199. package/node_modules/zod/v4/locales/hr.cjs +4 -0
  1200. package/node_modules/zod/v4/locales/hr.js +4 -0
  1201. package/node_modules/zod/v4/locales/hu.cjs +5 -0
  1202. package/node_modules/zod/v4/locales/hu.js +5 -0
  1203. package/node_modules/zod/v4/locales/hy.cjs +11 -0
  1204. package/node_modules/zod/v4/locales/hy.js +11 -0
  1205. package/node_modules/zod/v4/locales/id.cjs +5 -0
  1206. package/node_modules/zod/v4/locales/id.js +5 -0
  1207. package/node_modules/zod/v4/locales/index.cjs +43 -2
  1208. package/node_modules/zod/v4/locales/index.d.cts +11 -0
  1209. package/node_modules/zod/v4/locales/index.d.ts +11 -0
  1210. package/node_modules/zod/v4/locales/index.js +11 -0
  1211. package/node_modules/zod/v4/locales/is.cjs +5 -0
  1212. package/node_modules/zod/v4/locales/is.js +5 -0
  1213. package/node_modules/zod/v4/locales/it.cjs +5 -0
  1214. package/node_modules/zod/v4/locales/it.js +5 -0
  1215. package/node_modules/zod/v4/locales/ja.cjs +5 -0
  1216. package/node_modules/zod/v4/locales/ja.js +5 -0
  1217. package/node_modules/zod/v4/locales/ka.cjs +5 -0
  1218. package/node_modules/zod/v4/locales/ka.js +5 -0
  1219. package/node_modules/zod/v4/locales/km.cjs +5 -0
  1220. package/node_modules/zod/v4/locales/km.js +5 -0
  1221. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  1222. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  1223. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  1224. package/node_modules/zod/v4/locales/kn.js +116 -0
  1225. package/node_modules/zod/v4/locales/ko.cjs +5 -0
  1226. package/node_modules/zod/v4/locales/ko.js +5 -0
  1227. package/node_modules/zod/v4/locales/lt.cjs +4 -0
  1228. package/node_modules/zod/v4/locales/lt.js +4 -0
  1229. package/node_modules/zod/v4/locales/mk.cjs +5 -0
  1230. package/node_modules/zod/v4/locales/mk.js +5 -0
  1231. package/node_modules/zod/v4/locales/ms.cjs +5 -0
  1232. package/node_modules/zod/v4/locales/ms.js +5 -0
  1233. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  1234. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  1235. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  1236. package/node_modules/zod/v4/locales/ne.js +111 -0
  1237. package/node_modules/zod/v4/locales/nl.cjs +5 -0
  1238. package/node_modules/zod/v4/locales/nl.js +5 -0
  1239. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  1240. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  1241. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  1242. package/node_modules/zod/v4/locales/nn.js +113 -0
  1243. package/node_modules/zod/v4/locales/no.cjs +7 -2
  1244. package/node_modules/zod/v4/locales/no.js +7 -2
  1245. package/node_modules/zod/v4/locales/ota.cjs +5 -0
  1246. package/node_modules/zod/v4/locales/ota.js +5 -0
  1247. package/node_modules/zod/v4/locales/pl.cjs +5 -0
  1248. package/node_modules/zod/v4/locales/pl.js +5 -0
  1249. package/node_modules/zod/v4/locales/ps.cjs +5 -0
  1250. package/node_modules/zod/v4/locales/ps.js +5 -0
  1251. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  1252. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  1253. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  1254. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  1255. package/node_modules/zod/v4/locales/pt.cjs +89 -55
  1256. package/node_modules/zod/v4/locales/pt.js +89 -55
  1257. package/node_modules/zod/v4/locales/ro.cjs +3 -0
  1258. package/node_modules/zod/v4/locales/ro.js +3 -0
  1259. package/node_modules/zod/v4/locales/ru.cjs +12 -0
  1260. package/node_modules/zod/v4/locales/ru.js +12 -0
  1261. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  1262. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  1263. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  1264. package/node_modules/zod/v4/locales/sk.js +116 -0
  1265. package/node_modules/zod/v4/locales/sl.cjs +5 -0
  1266. package/node_modules/zod/v4/locales/sl.js +5 -0
  1267. package/node_modules/zod/v4/locales/sv.cjs +7 -2
  1268. package/node_modules/zod/v4/locales/sv.js +7 -2
  1269. package/node_modules/zod/v4/locales/ta.cjs +5 -0
  1270. package/node_modules/zod/v4/locales/ta.js +5 -0
  1271. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  1272. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  1273. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  1274. package/node_modules/zod/v4/locales/tg.js +117 -0
  1275. package/node_modules/zod/v4/locales/th.cjs +5 -0
  1276. package/node_modules/zod/v4/locales/th.js +5 -0
  1277. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  1278. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  1279. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  1280. package/node_modules/zod/v4/locales/tk.js +107 -0
  1281. package/node_modules/zod/v4/locales/tr.cjs +5 -0
  1282. package/node_modules/zod/v4/locales/tr.js +5 -0
  1283. package/node_modules/zod/v4/locales/uk.cjs +5 -0
  1284. package/node_modules/zod/v4/locales/uk.js +5 -0
  1285. package/node_modules/zod/v4/locales/ur.cjs +5 -0
  1286. package/node_modules/zod/v4/locales/ur.js +5 -0
  1287. package/node_modules/zod/v4/locales/uz.cjs +3 -0
  1288. package/node_modules/zod/v4/locales/uz.js +3 -0
  1289. package/node_modules/zod/v4/locales/vi.cjs +5 -0
  1290. package/node_modules/zod/v4/locales/vi.js +5 -0
  1291. package/node_modules/zod/v4/locales/yo.cjs +5 -0
  1292. package/node_modules/zod/v4/locales/yo.js +5 -0
  1293. package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
  1294. package/node_modules/zod/v4/locales/zh-CN.js +5 -0
  1295. package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
  1296. package/node_modules/zod/v4/locales/zh-TW.js +5 -0
  1297. package/node_modules/zod/v4/mini/checks.cjs +21 -1
  1298. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  1299. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  1300. package/node_modules/zod/v4/mini/checks.js +1 -1
  1301. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  1302. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  1303. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  1304. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  1305. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  1306. package/node_modules/zod/v4/mini/external.cjs +33 -1
  1307. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  1308. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  1309. package/node_modules/zod/v4/mini/external.js +3 -1
  1310. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  1311. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  1312. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  1313. package/node_modules/zod/v4/mini/in-out.js +36 -0
  1314. package/node_modules/zod/v4/mini/index.cjs +19 -0
  1315. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  1316. package/node_modules/zod/v4/mini/parse.cjs +22 -1
  1317. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  1318. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  1319. package/node_modules/zod/v4/mini/parse.js +1 -1
  1320. package/node_modules/zod/v4/mini/schemas.cjs +117 -53
  1321. package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
  1322. package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
  1323. package/node_modules/zod/v4/mini/schemas.js +92 -51
  1324. package/node_modules/zod/v4-mini/index.cjs +19 -0
  1325. package/openclaw.plugin.json +35 -42
  1326. package/package.json +10 -6
  1327. package/dist/transport-probes.runtime-DV7x4VWu.js +0 -2
  1328. package/node_modules/zod/src/v4/core/config.ts +0 -15
  1329. /package/dist/{identity-YXPmgFMu.js → .setup/identity-YXPmgFMu.mjs} +0 -0
  1330. /package/dist/{normalize-l_b99hap.js → .setup/normalize-l_b99hap.mjs} +0 -0
  1331. /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
@@ -0,0 +1,150 @@
1
+ # Local roots
2
+
3
+ The local-roots helpers accept a file path plus a list of trusted absolute
4
+ directories and return the first canonical root that contains the file. Use
5
+ them when configuration may name one of several approved media, cache, or
6
+ workspace roots.
7
+
8
+ ```ts
9
+ import {
10
+ readLocalFileFromRoots,
11
+ resolveLocalPathFromRootsSync,
12
+ } from "@openclaw/fs-safe/advanced";
13
+ ```
14
+
15
+ ## Input shape
16
+
17
+ Both helpers take one options object. `filePath` may be absolute, home-relative,
18
+ relative to the current working directory, or a local `file://` URL. Relative
19
+ inputs are resolved exactly as Node resolves them; they are not searched as a
20
+ basename under each root.
21
+
22
+ ```ts
23
+ type LocalRootsInputOptions = {
24
+ filePath: string;
25
+ roots: readonly string[]; // trusted absolute paths, checked in order
26
+ label?: string; // used in validation errors
27
+ };
28
+ ```
29
+
30
+ Roots may use `~` or local `file://` spellings, but each resolved root must be
31
+ absolute. Existing root symlinks are canonicalized before containment is
32
+ checked. Invalid root entries throw `FsSafeError("invalid-path")`; an invalid
33
+ `file://` input throws `Error`. A path that is valid but does not fall inside
34
+ any usable root returns `null`.
35
+
36
+ ## `resolveLocalPathFromRootsSync(options)`
37
+
38
+ ```ts
39
+ type ResolveLocalPathFromRootsSyncOptions = LocalRootsInputOptions & {
40
+ allowMissing?: boolean; // default false
41
+ requireFile?: boolean; // default false
42
+ };
43
+
44
+ type LocalRootsPathResult = {
45
+ path: string; // canonical candidate path
46
+ root: string; // canonical containing root
47
+ };
48
+ ```
49
+
50
+ For an existing upload:
51
+
52
+ ```ts
53
+ import { resolveLocalPathFromRootsSync } from "@openclaw/fs-safe/advanced";
54
+
55
+ const r = resolveLocalPathFromRootsSync({
56
+ filePath: "/srv/uploads/photo.jpg",
57
+ roots: ["/srv/uploads", "/srv/cache"],
58
+ requireFile: true,
59
+ });
60
+
61
+ if (!r) throw new Error("photo is outside the configured roots");
62
+ console.log(r.path); // canonical path to photo.jpg
63
+ console.log(r.root); // canonical /srv/uploads
64
+ ```
65
+
66
+ By default the candidate must exist. `allowMissing: true` instead canonicalizes
67
+ the nearest existing ancestor and validates the missing tail, which is useful
68
+ when selecting a future output location. `requireFile: true` rejects existing
69
+ directories and other non-file leaves. A missing suffix begins only at a
70
+ component that does not exist: dangling symlinks, descendants of dangling
71
+ symlinks, and candidates whose existing ancestors cannot be canonicalized are
72
+ rejected rather than treated as safe missing paths.
73
+
74
+ Filesystem path inputs retain symlinks and parent components until boundary
75
+ resolution, including after home expansion. A followed `link/../file` resolves
76
+ the parent of the link's target; default reads reject the link instead of
77
+ normalizing it away. File URLs retain the URL parser's normal path semantics.
78
+ An existing non-directory component cannot be traversed further, including by
79
+ `..`; the helpers reject that input instead of selecting a different file.
80
+
81
+ ## `readLocalFileFromRoots(options)`
82
+
83
+ The asynchronous helper opens the candidate through the matched [`Root`](root.md),
84
+ so no-follow, identity, hardlink, device-path, and byte-limit checks happen at
85
+ the read itself.
86
+ Link policies are captured once before root initialization and reused for every
87
+ candidate, so replacing options while a read is pending cannot weaken admission.
88
+
89
+ ```ts
90
+ type ReadLocalFileFromRootsOptions = LocalRootsInputOptions & {
91
+ hardlinks?: "reject" | "allow";
92
+ maxBytes?: number;
93
+ nonBlockingRead?: boolean;
94
+ symlinks?: "reject" | "follow-within-root" | "follow-parents-within-root";
95
+ };
96
+
97
+ type LocalRootsReadResult = ReadResult & {
98
+ root: string; // canonical containing root
99
+ };
100
+ ```
101
+
102
+ ```ts
103
+ const r = await readLocalFileFromRoots({
104
+ filePath: "/srv/uploads/photo.jpg",
105
+ roots: ["/srv/uploads", "/srv/cache"],
106
+ maxBytes: 8 * 1024 * 1024,
107
+ });
108
+ if (!r) throw new Error("photo is missing, unreadable, or outside the roots");
109
+ process.stdout.write(r.buffer);
110
+ ```
111
+
112
+ The helper returns `null` when no configured root can be opened or no safe read
113
+ succeeds. This intentionally collapses missing, outside-root, and per-root read
114
+ failures; use a single `Root` directly when the caller must distinguish those
115
+ outcomes. Omitting `maxBytes` preserves `Root`'s 16 MiB default.
116
+
117
+ ## File URL and Windows-path companions
118
+
119
+ The advanced surface also exports the normalization helpers used around this
120
+ API:
121
+
122
+ ```ts
123
+ import {
124
+ assertNoWindowsNetworkPath,
125
+ basenameFromMediaSource,
126
+ hasEncodedFileUrlSeparator,
127
+ isWindowsDriveLetterPath,
128
+ isWindowsNetworkPath,
129
+ safeFileURLToPath,
130
+ trySafeFileURLToPath,
131
+ } from "@openclaw/fs-safe/advanced";
132
+ ```
133
+
134
+ - `safeFileURLToPath(fileUrl)` parses a local file URL and refuses remote hosts
135
+ or paths that decode to Windows network paths.
136
+ - `trySafeFileURLToPath(fileUrl)` returns `undefined` instead of throwing.
137
+ - `isWindowsDriveLetterPath()` and `isWindowsNetworkPath()` classify Windows
138
+ absolute and network spellings.
139
+ - `assertNoWindowsNetworkPath()` throws for a network path on Windows.
140
+ - `basenameFromMediaSource()` extracts a best-effort filename from a URL, data
141
+ URI, or path.
142
+ - `hasEncodedFileUrlSeparator()` detects percent-encoded slash or backslash
143
+ spellings.
144
+
145
+ ## See also
146
+
147
+ - [`root()`](root.md) — use when one trusted root should preserve individual
148
+ failure codes.
149
+ - [Path helpers](path.md) — lexical and canonical containment primitives.
150
+ - [`pathScope()`](path-scope.md) — result-shaped single-root validation.
@@ -0,0 +1,205 @@
1
+ ---
2
+ title: Migrating to 0.5
3
+ description: "Ordered checklist for moving a 0.4 consumer from the Python helper to native mode and adopting the 0.5 API contracts."
4
+ ---
5
+
6
+ # Migrating from 0.4 to 0.5
7
+
8
+ Use this checklist from top to bottom. Version 0.5 replaces the Python worker,
9
+ changes the default archive mode policy, and adds explicit contracts for
10
+ publication, walking, locks, secrets, and native-only features. Nothing in this
11
+ guide requires a Rust toolchain: all supported native binaries are prebuilt.
12
+ Current releases install the matching exact-version optional platform package.
13
+
14
+ ## 1. Update the package and runtime
15
+
16
+ - Run on Node.js 22 or newer.
17
+ - Update `@openclaw/fs-safe` and regenerate every lock or shrinkwrap file your
18
+ deployment consumes.
19
+ - Keep optional dependencies enabled if you want JavaScript ZIP/TAR support.
20
+ Native loading no longer depends on Python. Keep optional dependencies enabled
21
+ for the matching native package and JavaScript ZIP/TAR decoders. An install
22
+ that omits them can still import fs-safe, but native-only features and missing
23
+ JS archive decoders fail with actionable errors.
24
+
25
+ If you call `resolveRootPath()` or `resolveRootPathSync()` directly, upgrade to
26
+ 0.5: versions through 0.4.7 could approve an in-root symlink traversal that
27
+ resolved outside the root. `root()` handles were not affected. See the
28
+ [affected versions and exposure](security-model.md#affected-versions-exposure).
29
+
30
+ ## 2. Replace Python helper configuration
31
+
32
+ Change startup configuration before the first filesystem operation:
33
+
34
+ ```ts
35
+ import { configureFsSafeNative } from "@openclaw/fs-safe/config";
36
+
37
+ configureFsSafeNative({ mode: "auto" });
38
+ ```
39
+
40
+ | Remove from 0.4 | Use in 0.5 |
41
+ |---|---|
42
+ | `configureFsSafePython({ mode })` | `configureFsSafeNative({ mode })` |
43
+ | `FS_SAFE_PYTHON_MODE` | `FS_SAFE_NATIVE_MODE` |
44
+ | `OPENCLAW_FS_SAFE_PYTHON_MODE` | `OPENCLAW_FS_SAFE_NATIVE_MODE` |
45
+ | `pythonPath`, `FS_SAFE_PYTHON`, pinned-Python aliases | Nothing; prebuilt native binaries do not use an interpreter |
46
+
47
+ The old names warn once and map `auto`, `off`, or `require` so a shipped 0.4
48
+ deployment does not silently change policy. Interpreter paths are ignored and
49
+ Python is never spawned. Treat that warning as an upgrade diagnostic, not as a
50
+ second supported helper path.
51
+
52
+ Choose the production mode deliberately:
53
+
54
+ - `auto` keeps guarded JavaScript fallbacks when a binding is unavailable.
55
+ - `off` makes fallback testing deterministic.
56
+ - `require` fails with `helper-unavailable` instead of weakening an operation
57
+ that expected native support.
58
+
59
+ See [Native helper policy](native-helper.md) and
60
+ [Native architecture](native.md).
61
+
62
+ ## 3. Audit every archive call
63
+
64
+ The 0.5 default is `entryModes: "clamp"`. Directories become `0o755`; files
65
+ become `0o644` or `0o755` when owner-execute was archived. Set
66
+ `entryModes: "preserve"` explicitly only if your 0.4 consumer intentionally
67
+ relied on archived rwx bits. Setuid, setgid, sticky bits, and archived ownership
68
+ are never restored.
69
+
70
+ ```ts
71
+ await extractArchive({
72
+ archivePath: uploadPath,
73
+ destDir: restoreRoot,
74
+ timeoutMs: 30_000,
75
+ entryModes: "clamp",
76
+ entryFilter: (entry) =>
77
+ entry.path.startsWith("snapshot/cache/") ? "skip" : "extract",
78
+ onFiltered: "skip-entry",
79
+ limits: {
80
+ maxArchiveBytes: 256 * 1024 * 1024,
81
+ maxEntries: 50_000,
82
+ maxExtractedBytes: 512 * 1024 * 1024,
83
+ maxEntryBytes: 256 * 1024 * 1024,
84
+ maxMetaEntryBytes: 1024 * 1024,
85
+ maxEntryPathComponents: 64,
86
+ },
87
+ });
88
+ ```
89
+
90
+ Returning `"skip"` rejects the archive unless `onFiltered: "skip-entry"` is
91
+ explicit. Zstd and bzip2 TAR required native support in version 0.5; current
92
+ versions also use bundled WASM codecs in `off` or missing-native `auto`, through
93
+ the same guarded TAR pipeline. ZIP fallback still requires optional JSZip.
94
+ Catch `ArchiveLimitError` by its code, including
95
+ `archive-entry-path-components-exceeds-limit` for deep implicit-directory
96
+ attacks. See [Archive extraction](archive.md).
97
+
98
+ ## 4. Pick a publication failure policy
99
+
100
+ `publishFileExclusive()` never replaces an existing target. Choose a strategy
101
+ and decide what a post-create directory-sync failure means to your application:
102
+
103
+ ```ts
104
+ await publishFileExclusive({
105
+ sourcePath: stagedArchive,
106
+ targetPath: finalArchive,
107
+ strategy: "link-or-copy",
108
+ onSyncFailure: "preserve",
109
+ });
110
+ ```
111
+
112
+ `rollback` is the default: an unchanged target created by this call is removed
113
+ when directory sync throws. `preserve` keeps a complete but possibly
114
+ non-durable target and reports `cleanup: "preserved"` plus
115
+ `directorySync: { status: "failed", code? }` in the typed error. Backup
116
+ archives commonly need `preserve`; transactional protocols that expose only
117
+ durably committed names usually want `rollback`. See
118
+ [Directory durability](durability.md).
119
+
120
+ ## 5. Replace recursive scans with an explicit walk policy
121
+
122
+ Use `Root.walk()` for caller-controlled relative paths. Every examined entry
123
+ consumes the budget even when filtered:
124
+
125
+ ```ts
126
+ for await (const entry of workspace.walk("memory", {
127
+ maxDepth: 12,
128
+ maxEntries: 50_000,
129
+ symlinkPolicy: "skip",
130
+ entryFilter: (entry) =>
131
+ entry.kind === "directory" && entry.relativePath.endsWith("/.git")
132
+ ? "skip-subtree"
133
+ : "include",
134
+ onDirectoryError: "skip-and-report",
135
+ })) {
136
+ if (entry.kind === "directory-error") {
137
+ reportIncompleteSubtree(entry.relativePath, entry.error);
138
+ continue;
139
+ }
140
+ indexEntry(entry);
141
+ }
142
+ ```
143
+
144
+ The default directory-error policy remains `throw`. See
145
+ [Directory walking](walk.md).
146
+
147
+ ## 6. Adopt the focused concurrency and secret APIs
148
+
149
+ - Use `acquireFileLockSync()` only in synchronous boot or migration code; retry
150
+ waits block the thread. Request-serving paths should use `withFileLock()`.
151
+ - Remove the `allowReentrant` boolean from async file-lock options. If a logical
152
+ holder intentionally nests acquisition, pass the same operation-scoped
153
+ `reentrantOwner` string to each acquisition; different or missing owners
154
+ contend normally. Never replace the boolean with a process-wide constant.
155
+ Locked and unlocked `jsonStore` mutations serialize by canonical file path
156
+ and do not opt into lock reentrancy; nested same-file mutations from an update
157
+ callback fail with `store-reentrant-update`, so return the complete value from
158
+ the outer callback instead.
159
+ - Use `createSecretFileAtomic()` for first-writer-wins credentials and catch
160
+ `secret-exists`; use `writeSecretFileAtomic()` only when replacement is the
161
+ intended protocol.
162
+ - Async `readSecretFile()` is strict; `tryReadSecretFile()` returns `undefined`
163
+ only for missing or blank content and still rejects suspicious files.
164
+ - Check `tempWorkspace.cleanup()` results when ownership matters;
165
+ `identity-mismatch` deliberately preserves a replacement path.
166
+
167
+ See [File locks](sidecar-lock.md), [Secret files](secret-file.md), and
168
+ [Temp workspaces](temp.md).
169
+
170
+ ## 7. Gate native-only features
171
+
172
+ Version 0.5 required native support for `createPrivateDirectory()`. Current
173
+ releases also support a packaged PowerShell script in native `auto` and `off`
174
+ modes, retaining its creation-time protected DACL. Check the
175
+ [Windows security fallback prerequisites](install.md#windows-security-fallback)
176
+ before relying on this route. The API remains Windows-only, explicit native
177
+ `require` rejects a missing binding or capability, and native operation failures
178
+ remain terminal.
179
+ `strategy: "rename-noreplace"` remains native-only. Current zstd/bzip2 extraction
180
+ and bounded reads have bundled WASM fallbacks, while explicit native `require`
181
+ remains strict. Test unavailable native-only operations instead of assuming
182
+ installation always succeeds.
183
+
184
+ ## 8. Run both behavior families in CI
185
+
186
+ For each consumer workflow that matters:
187
+
188
+ 1. Run once with `FS_SAFE_NATIVE_MODE=auto` on every supported OS.
189
+ 2. Run once with `FS_SAFE_NATIVE_MODE=off` to prove the JavaScript fallback.
190
+ 3. Run native-required or native-only cases with `FS_SAFE_NATIVE_MODE=require`.
191
+ 4. Exercise archive traversal/link/depth limits, publication sync failure, and
192
+ partial-walk reporting with production-shaped fixtures.
193
+
194
+ For downstream staging and backup consumers:
195
+
196
+ - [ ] Replace private whole-file hashing with `sha256File(path | FileHandle)`
197
+ from `durability`; native mode keeps digest work off the event loop and
198
+ the JavaScript fallback remains streaming.
199
+ - [ ] If Windows trust policy depends on exact principals, consume
200
+ `readOwnerAndDacl()` from `permissions`, reject incomplete/null/remote
201
+ descriptors as your policy requires, skip inherit-only ACEs where
202
+ appropriate, and apply the application's own SID allowlist.
203
+
204
+ The [Testing](testing.md) page documents the test hooks and mode setup used by
205
+ fs-safe itself.
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: Migrating to 0.6
3
+ description: "Upgrade checklist for the platform-native package split."
4
+ ---
5
+
6
+ # Migrating from 0.5 to 0.6
7
+
8
+ Version 0.6 moves native bindings out of the root `@openclaw/fs-safe` tarball
9
+ and into exact-version platform packages. This removes unrelated operating
10
+ system and architecture binaries from each installation.
11
+
12
+ ## Keep optional dependencies enabled for native mode
13
+
14
+ Package managers select one binding by OS, CPU, and Linux libc. A normal
15
+ install needs no command change:
16
+
17
+ ```bash
18
+ pnpm add @openclaw/fs-safe
19
+ ```
20
+
21
+ If a deployment currently installs 0.5 with `--omit=optional`, `--no-optional`,
22
+ or an equivalent lockfile policy, change that policy before upgrading when it
23
+ uses native mode `require` or any native-only feature. Version 0.5 kept its
24
+ binding in the root tarball; version 0.6 intentionally does not.
25
+
26
+ Omitting optional dependencies remains supported for fallback-capable APIs in
27
+ `auto` mode. It disables native-only features such as retained-directory staging
28
+ and atomic `rename-noreplace`. Native mode `require`
29
+ reports `helper-unavailable` when the matching package is absent or incompatible.
30
+ Zstd/bzip2 TAR extraction and bounded reads required the binding in version 0.6;
31
+ current versions also support bundled WASM codecs in `auto` and `off` through the
32
+ same guarded TAR pipeline. ZIP fallback still requires optional JSZip.
33
+ Windows private-directory creation required the binding in version 0.6; current
34
+ releases also support [packaged Windows security scripts](install.md#windows-security-fallback)
35
+ in `auto` and `off` mode while preserving the creation-time protected DACL.
36
+
37
+ ## Deployment checklist
38
+
39
+ 1. Remove any option or policy that omits optional dependencies when native
40
+ support is required.
41
+ 2. Regenerate every lockfile or shrinkwrap file consumed by deployment.
42
+ 3. Verify that the lock contains the matching `@openclaw/fs-safe-*` package.
43
+ 4. Run a native-required operation on every deployed OS/libc target.
44
+ 5. Keep an `FS_SAFE_NATIVE_MODE=off` lane when the guarded JavaScript fallback
45
+ is part of the application contract.
46
+
47
+ No Rust toolchain, postinstall build, or runtime download is introduced. See
48
+ [Native helper policy](native-helper.md) for the exact fallback boundary.
@@ -0,0 +1,69 @@
1
+ # Hosted mutation-policy proof
2
+
3
+ The `mutation policy public behavior proof` workflow builds the exact event-head
4
+ package and host addon on Node 24 Linux, macOS, and Windows. Each case executes in
5
+ a fresh process, uses a private temporary fixture, and emits only a bounded,
6
+ canonical receipt. POSIX workers require both real and effective non-root UIDs.
7
+
8
+ Receipt schema `fs-safe-mutation-policy-proof-v2` deliberately does not describe
9
+ final directory emptiness as a mutation-dispatch count. Root replacement records
10
+ the unchanged contents of the original and replacement parent; denied redirect
11
+ records rejection and unchanged denied/displaced parents. The existing JS mkdir
12
+ counters name their exact child or next component. None counts native syscalls
13
+ or excludes transient mutations that leave no final trace.
14
+
15
+ ## Additional hosted cases
16
+
17
+ Each POSIX write/create/copy worker, under both native-off and native-require,
18
+ performs an eligible success control, an exact deeper-parent denial after an
19
+ earlier parent is created, a denied redirect after preflight, and a stale-parent
20
+ replacement at the public pre-mkdir authority boundary. Exact directory listings
21
+ and sentinels verify that denied/current/displaced parents contain no prohibited
22
+ child, target, or stage. Copy sources must retain their original bytes.
23
+
24
+ Redirect injection uses the existing public `@openclaw/fs-safe/test-hooks` subpath
25
+ from `dist`, not a mocked native binding. Only these isolated workers enable
26
+ `NODE_ENV=test`. The exact target and single hook visit are required. The hook is
27
+ after policy preflight but before parent admission; it must not be described as
28
+ a post-parent-admission hook. Stale replacement instead uses the public authority
29
+ callback after child-create policy admission, with an existing sentinel parent
30
+ and a still-missing child. Both implementation files that enforce the following
31
+ freshness check are hash-bound. No unchecked callback ordinal chooses a fault.
32
+
33
+ Representative POSIX `Root.write` workers refuse authority before the first mkdir,
34
+ after one parent has been created and before the next mkdir, before staging, and
35
+ immediately before publication. Epoch selection uses actual fixture state. The
36
+ publication refusal requires a real single-link, caller-owned mode-0600 stage
37
+ containing the complete payload while the destination still contains its original
38
+ sentinel. The same rejection object must escape, no callback may follow refusal,
39
+ and the owned stage must be gone before fixture teardown.
40
+
41
+ Windows workers exercise buffer `Root.write` through a stable final-file symlink,
42
+ then refuse before stage creation for a missing destination, before publishing a
43
+ complete stage to that still-missing destination, and before publishing to an
44
+ existing symlink-selected destination. Missing destinations must remain absent at
45
+ every authority callback and after refusal. The workers verify alias binding,
46
+ destination preservation, complete single-link stages, and cleanup before fixture
47
+ teardown. The default native-off and explicit
48
+ `verify-content-with-lock` native-require configurations both select the existing
49
+ Windows JS buffer writer. In native-require mode, the compatibility route loads
50
+ the addon to publish its retained sidecar lock through `Root.create`; the payload
51
+ writer remains JS. The receipt does not mislabel this as native payload
52
+ publication or evidence that content-verification fallback or lock contention
53
+ was exercised.
54
+
55
+ ## Bounds and interpretation
56
+
57
+ The receipt remains below 32 KiB, each worker has a 15-second process timeout and
58
+ 4-KiB stdout limit, and the proof step has a six-minute outer timeout. Worker I/O
59
+ and cleanup retain their existing deadlines. The canonical pending/failed receipt
60
+ is preserved if setup, a worker, provenance validation, or emission fails.
61
+ Source, built modules, the public test seam, harness helper, contract tests, and
62
+ host addon are hashed and checked again after workers.
63
+
64
+ These are deterministic representative observations, not an exhaustive race proof
65
+ or syscall audit. Existing hash-bound internal tests remain complementary for
66
+ other awaited-admission, receipt-refresh, and observation-failure interleavings.
67
+ Windows root replacement and POSIX-specific pinned routes are not claimed on
68
+ Windows. Hosted CI and exact artifact inspection are required before relying on
69
+ new receipts; the proof supplies no performance release clearance.
@@ -0,0 +1,177 @@
1
+ ---
2
+ title: Native helper policy
3
+ description: "How fs-safe loads its platform-specific native filesystem primitives and how auto, require, and off affect guarded fallbacks."
4
+ ---
5
+
6
+ # Native helper policy
7
+
8
+ `@openclaw/fs-safe` declares seven exact-version optional packages for Linux
9
+ x64/arm64 (glibc or musl), macOS x64/arm64, and Windows x64. Package-manager
10
+ OS, CPU, and libc filters install only the matching package. The loader requires
11
+ that package lazily, without runtime downloads, postinstall scripts, or a
12
+ consumer Rust build.
13
+
14
+ ```ts
15
+ import { configureFsSafeNative } from "@openclaw/fs-safe/config";
16
+
17
+ configureFsSafeNative({ mode: "auto" }); // default
18
+ configureFsSafeNative({ mode: "off" }); // disable the addon; reject native-only operations
19
+ configureFsSafeNative({ mode: "require" }); // fail closed when the binding is unavailable
20
+ ```
21
+
22
+ The equivalent environment variables are `FS_SAFE_NATIVE_MODE` and `OPENCLAW_FS_SAFE_NATIVE_MODE`. Accepted values are `auto`, `off`, `require`, `true`, `false`, `on`, `never`, `required`, `1`, and `0`.
23
+
24
+ ## Modes
25
+
26
+ | Mode | Behavior |
27
+ |---|---|
28
+ | `auto` | Prefer native primitives when the current platform package loads; otherwise use supported fallbacks and reject native-only operations. |
29
+ | `off` | Do not load a native package. Use supported fallbacks and reject native-only operations deterministically. |
30
+ | `require` | Throw `FsSafeError("helper-unavailable")` instead of falling back when an operation needs the native binding and it cannot load. |
31
+
32
+ Plain TAR, gzip, zstd, and bzip2 extraction and bounded entry reads use a bundled,
33
+ import-free WASM build of the same Rust TAR parser when native support is absent
34
+ or disabled. Zstd/bzip2 codecs are bundled alongside the parser; gzip uses Node's
35
+ built-in decoder. These archive fallbacks require no runtime interpreter or
36
+ download. `off` disables the optional native filesystem helper, not the bundled
37
+ WASM. `auto` prefers native and does not retry a native operation failure through
38
+ WASM; `require` still rejects an unavailable native binding. ZIP fallback still
39
+ requires optional `jszip`. `inspectTarArchive()` remains limited to plain TAR
40
+ and gzip.
41
+
42
+ Windows security operations can use the package's readable PowerShell/C# scripts
43
+ in `auto` and `off`, subject to the [Windows security fallback prerequisites](install.md#windows-security-fallback).
44
+
45
+ On Bun macOS/Linux, the [runtime path adapter](install.md#bun-runtime) uses the
46
+ same Rust addon for system canonicalization in `auto` and `require`. No JIT is
47
+ needed. With `off` or a missing addon in `auto`, Bun's own resolver retains its
48
+ path and permission limitations. Canonicalization in `require` fails with
49
+ `helper-unavailable` if the addon or its canonicalizer is missing, including
50
+ when admitting a temp workspace. Containment and identity checks stay intact.
51
+
52
+ Configure the mode once during startup. Loading is lazy and cached; changing from `auto` to `require` after a failed load changes failure policy but does not repeatedly probe the binary.
53
+
54
+ Native-created descriptors retain their originating native close operation through
55
+ normal and error cleanup, including later mode changes. Node-created roots and
56
+ directory handles keep Node's close operation, and borrowed handles keep their
57
+ caller-owned lifetime. This preserves Node worker-thread descriptor tracking
58
+ without unmanaged-descriptor warnings. A helper missing native close support is
59
+ unavailable before descriptor allocation.
60
+
61
+ Close retained native resources and let in-flight operations finish before
62
+ forcibly terminating a worker. Native-created descriptors are not registered
63
+ with Node's automatic worker-exit cleanup; `Worker.terminate()` can leave them
64
+ open until process exit. The native close operation handles explicit cleanup,
65
+ not forced worker termination.
66
+
67
+ [`tempWorkspace()` and its scoped/sync variants](temp.md#private-temp-workspaces)
68
+ remain available in every mode. Their default compatible cleanup uses guarded
69
+ JavaScript quarantine when owned native tree removal is unavailable.
70
+ `cleanupSafety: "require-bounded"` instead rejects before child creation unless
71
+ no-replace quarantine plus descriptor-relative owned-tree removal are available.
72
+ On Linux, admission probes the exact `openat2` child-directory flags, including
73
+ `RESOLVE_NO_XDEV`, at runtime. An unavailable or denied probe selects compatible
74
+ JavaScript cleanup even in global `require` mode; `require-bounded` rejects before
75
+ child creation.
76
+ Already-created strict workspaces retain their binding
77
+ and descriptors across later mode changes.
78
+
79
+ [`stageFileInDirectory()`](staged-file.md) always requires native support on
80
+ Linux/macOS and rejects before creation when off, unavailable, or missing the
81
+ required capability. Windows is unsupported for this lifecycle. This does not
82
+ change the mode policy of existing fallback-capable APIs.
83
+
84
+ ## Native boundary
85
+
86
+ The internal Darwin descriptor ACL inspector requires its matching native
87
+ capability in both `auto` and `require`; `off`, a missing package, or an older
88
+ binding without `inspectDarwinAcl` rejects with `helper-unavailable`. Inspection
89
+ failure or malformed facts reject with `permission-unverified`; there is no
90
+ mode-bit or pathname fallback for this capability. Clone admission uses a fused
91
+ descriptor-bound metadata and ACL observation, then compares immutable receipts
92
+ with fresh no-follow pathname identity fences; pathnames never authorize ACL
93
+ state. The payload ACL-clear readback is part of that fused observation. Once
94
+ a clone payload exists, normalization and verification failures become terminal
95
+ `EIO` errors (with the underlying status and detail retained), not capability
96
+ signals that permit an ordinary-copy retry. Checked cleanup cannot undo that
97
+ terminal classification.
98
+ This addition does not change other APIs' native-mode or permission contracts.
99
+
100
+ The native layer exposes policy-free filesystem mechanisms: beneath-root
101
+ open/mkdir/link, replace and no-replace rename, identity reads, archive decode/execution,
102
+ clone/copy/hash workers, POSIX canonicalization, and Windows security descriptor calls. The TypeScript
103
+ layer owns policy, retries, filters, budgets, modes, cleanup, error
104
+ normalization, and the decision to fall back.
105
+
106
+ - Linux uses `openat2` with `RESOLVE_BENEATH | RESOLVE_NO_MAGICLINKS`, `renameat`, and `renameat2(RENAME_NOREPLACE)`. Direct-child no-replace renames borrow already-retained parent descriptors; deeper relative paths retain the guarded reopen. Owned-tree cleanup enumerates and unlinks through retained directory descriptors and rejects device crossings.
107
+ - macOS 15.4 and newer prefer `O_RESOLVE_BENEATH`; older kernels resolve components with `O_NOFOLLOW` and restart in-root symlinks from the pinned root descriptor. Both routes use an `F_GETPATH` post-open escape detector and report `best-effort` because directory rename races are not atomic with that check. Direct-child no-replace renames borrow already-retained parents without another `F_GETPATH`; deeper paths retain the guarded reopen. Publication uses `renameat` for replacement and `renameatx_np(RENAME_EXCL)` for no-replace; owned-tree cleanup uses descriptor-relative `openat`/`unlinkat`.
108
+ - Windows uses handle-relative `NtCreateFile`, rejects reparse points during root-bounded traversal, and uses `FileRenameInfoEx` with replacement selected explicitly by the TypeScript policy layer. The dedicated retained-directory `renameNoReplaceWithIdentity` primitive compares its required exact source receipt with the handle opened for rename before mutation. Its internal mismatch status is normalized to public `path-mismatch`; the legacy four-argument `renameNoReplace` export and its other callers are unchanged. Owned trees are deleted through exact opened handles with `FileDispositionInfoEx`; symlink/reparse entries in owned trees are removed as leaves and never traversed. Descriptors crossing N-API are converted only by the host executable's paired `uv_get_osfhandle` and `uv_open_osfhandle` exports. A runtime without both exports is unsupported for these native operations; the binding never guesses a raw HANDLE or uses a foreign CRT descriptor table. Descriptor-producing operations also require that same host's synchronous libuv close and request-management APIs before exporting an owned descriptor.
109
+
110
+ `replaceDirectoryAtomic()` requires `renameNoReplaceWithIdentity` before it
111
+ creates a missing target parent. On POSIX the dedicated entry point keeps the
112
+ existing pre-dispatch exact receipt fence but dispatches direct-child names
113
+ through the retained parents without another receipt, duplicate, reopen, or
114
+ macOS `F_GETPATH`; the documented final source-name substitution window remains
115
+ there. Deeper names retain guarded parent traversal.
116
+
117
+ Native primitives back create-only and replacing pinned writes, no-clobber
118
+ `Root.move()`, async sidecar creation, guarded publication, archive acceleration,
119
+ and direct Windows ACL operations. Windows secure-file reads require
120
+ descriptor-bound owner/DACL facts. In native `auto` or `off` mode, a missing
121
+ binding or capability can use a packaged PowerShell script that inspects the
122
+ borrowed handle. Raw owner/DACL inspection and private-directory creation also support
123
+ this fallback, subject to the [Windows security fallback prerequisites](install.md#windows-security-fallback).
124
+ Each capability emits a path-free warning once per process and adds PowerShell
125
+ startup and compilation overhead per call. Native `require` rejects missing
126
+ capabilities, and native operation failures remain terminal. No-clobber moves fail with
127
+ `helper-unavailable` when descriptor-relative parent admission or the atomic
128
+ no-replace rename is unavailable; they never use a check followed by a replacing
129
+ rename. Equivalent JavaScript paths remain available for documented
130
+ fallback-capable features. See [Native architecture](native.md#javascript-fallback-guarantees-and-delta)
131
+ for the exact difference.
132
+
133
+ The guarded JavaScript mutation path is detection-based, not containment-atomic.
134
+ If a same-privilege peer can replace a writable parent after its identity guard
135
+ but before Node resolves a pathname mutation, the mutation can land outside the
136
+ intended root before the post-operation guard throws. Select `require` rather
137
+ than `auto` or `off` when that concurrent attacker is part of the threat model.
138
+
139
+ `openBeneath()` returns `{ fd, containment }`. `containment` is
140
+ `"kernel-atomic"` for Linux `openat2` and `"best-effort"` for macOS and
141
+ Windows. Public JavaScript root open/read/writable results also expose the
142
+ field and report `"best-effort"`; the label reports mechanism, not policy.
143
+
144
+ ## Migration from the Python helper
145
+
146
+ Version 0.5 removes the Python worker and interpreter-path selection. The mode
147
+ contract is unchanged, so migrate startup configuration directly:
148
+
149
+ | Python helper configuration | Native replacement |
150
+ |---|---|
151
+ | `configureFsSafePython({ mode: "auto" })` | `configureFsSafeNative({ mode: "auto" })` |
152
+ | `configureFsSafePython({ mode: "off" })` | `configureFsSafeNative({ mode: "off" })` |
153
+ | `configureFsSafePython({ mode: "require" })` | `configureFsSafeNative({ mode: "require" })` |
154
+ | `FS_SAFE_PYTHON_MODE` | `FS_SAFE_NATIVE_MODE` |
155
+ | `OPENCLAW_FS_SAFE_PYTHON_MODE` | `OPENCLAW_FS_SAFE_NATIVE_MODE` |
156
+ | `pythonPath`, `FS_SAFE_PYTHON`, and the OpenClaw interpreter-path aliases | Remove; prebuilt bindings do not use an interpreter path |
157
+
158
+ In 0.5, `configureFsSafePython` and the legacy Python environment names
159
+ remain only as an upgrade bridge. On the first config read they emit one
160
+ `DeprecationWarning` with code `FS_SAFE_PYTHON_DEPRECATED`, state the mapped
161
+ native mode, and then apply that mode. A legacy interpreter path without an
162
+ explicit mode maps to `auto` and the path itself is ignored. Native config has
163
+ the normal precedence over legacy environment config.
164
+
165
+ There is no silent alias and no Python execution fallback. The bridge exists
166
+ only to make shipped 0.4 configuration visible and predictable while the
167
+ consumer performs its 0.5 upgrade.
168
+
169
+ ## Related pages
170
+
171
+ - [Config](config.md)
172
+ - [Security model](security-model.md)
173
+ - [Writing](writing.md)
174
+ - [File locks](sidecar-lock.md)
175
+ - [Durability](durability.md)
176
+ - [Migrating to 0.5](migrating-to-0.5.md)
177
+ - [Migrating to 0.6](migrating-to-0.6.md)