@openclaw/fs-safe 0.17.0 → 0.18.1

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 (690) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/absolute-path.d.ts +0 -1
  3. package/dist/advanced.d.ts +2 -2
  4. package/dist/archive-crc32.d.ts +0 -1
  5. package/dist/archive-deadline.d.ts +0 -1
  6. package/dist/archive-durability.d.ts +1 -2
  7. package/dist/archive-entry.d.ts +0 -1
  8. package/dist/archive-errors.d.ts +0 -1
  9. package/dist/archive-gzip-tail.d.ts +0 -1
  10. package/dist/archive-input.d.ts +0 -1
  11. package/dist/archive-kind.d.ts +0 -1
  12. package/dist/archive-limits.d.ts +0 -1
  13. package/dist/archive-merge.d.ts +2 -4
  14. package/dist/archive-merge.js +14 -4
  15. package/dist/archive-parser-errors.d.ts +0 -1
  16. package/dist/archive-parser.wasm +0 -0
  17. package/dist/archive-plan.d.ts +72 -2
  18. package/dist/archive-plan.js +86 -22
  19. package/dist/archive-read.d.ts +0 -1
  20. package/dist/archive-staging.d.ts +0 -1
  21. package/dist/archive-tar-stream.d.ts +0 -1
  22. package/dist/archive-tar-wasm.d.ts +1 -2
  23. package/dist/archive-zip-admission.d.ts +0 -1
  24. package/dist/archive-zip-count.d.ts +0 -1
  25. package/dist/archive-zip-directory.d.ts +1 -2
  26. package/dist/archive-zip-entry.d.ts +1 -2
  27. package/dist/archive-zip-entry.js +1 -1
  28. package/dist/archive-zip-integrity.d.ts +0 -1
  29. package/dist/archive-zip-loader.d.ts +0 -1
  30. package/dist/archive-zip-manifest.d.ts +0 -1
  31. package/dist/archive-zip-names.d.ts +0 -1
  32. package/dist/archive-zip-preflight.d.ts +0 -1
  33. package/dist/archive.d.ts +8 -6
  34. package/dist/archive.js +204 -168
  35. package/dist/async-lock.d.ts +0 -1
  36. package/dist/atomic.d.ts +3 -2
  37. package/dist/bounded-read-stream.d.ts +0 -1
  38. package/dist/bounded-read.d.ts +0 -1
  39. package/dist/byte-budget.d.ts +0 -1
  40. package/dist/byte-view.d.ts +0 -1
  41. package/dist/clone-metadata.d.ts +0 -1
  42. package/dist/config.d.ts +0 -1
  43. package/dist/containment.d.ts +0 -1
  44. package/dist/copy-file-input.d.ts +0 -1
  45. package/dist/copy-policy.d.ts +0 -1
  46. package/dist/copy-publication.d.ts +1 -2
  47. package/dist/copy-tree-portable.d.ts +0 -1
  48. package/dist/copy-tree-portable.js +9 -6
  49. package/dist/copy.d.ts +0 -1
  50. package/dist/copy.js +5 -5
  51. package/dist/create-owned-file.d.ts +0 -1
  52. package/dist/create.d.ts +16 -3
  53. package/dist/create.js +388 -2
  54. package/dist/creation-boundary.d.ts +60 -0
  55. package/dist/creation-boundary.js +371 -0
  56. package/dist/deny-mutations.d.ts +2 -3
  57. package/dist/deny-mutations.js +55 -35
  58. package/dist/device-path.d.ts +0 -1
  59. package/dist/directory-durability.d.ts +0 -1
  60. package/dist/directory-entry-path.d.ts +0 -1
  61. package/dist/directory-guard.d.ts +2 -7
  62. package/dist/directory-guard.js +25 -56
  63. package/dist/directory-mode-node.d.ts +0 -1
  64. package/dist/directory-mode-node.js +12 -2
  65. package/dist/directory-mode-owner.d.ts +0 -1
  66. package/dist/directory-receipt.d.ts +0 -1
  67. package/dist/durability.d.ts +2 -2
  68. package/dist/effective-uid.d.ts +0 -1
  69. package/dist/error-detail.d.ts +0 -1
  70. package/dist/errors.d.ts +0 -1
  71. package/dist/file-cleanup.d.ts +0 -1
  72. package/dist/file-contents.d.ts +0 -1
  73. package/dist/file-handle-transfer.d.ts +0 -1
  74. package/dist/file-hash.d.ts +0 -1
  75. package/dist/file-hash.js +170 -66
  76. package/dist/file-identity.d.ts +0 -1
  77. package/dist/file-lock-sync-acquisition.d.ts +22 -0
  78. package/dist/file-lock-sync-acquisition.js +98 -0
  79. package/dist/file-lock-sync-admission.d.ts +0 -2
  80. package/dist/file-lock-sync-admission.js +9 -48
  81. package/dist/file-lock-sync-root-acquire.d.ts +0 -1
  82. package/dist/file-lock-sync-root-acquire.js +33 -103
  83. package/dist/file-lock-sync-root-arbitration.d.ts +0 -1
  84. package/dist/file-lock-sync-root-held.d.ts +0 -1
  85. package/dist/file-lock-sync-root-io.d.ts +0 -1
  86. package/dist/file-lock-sync-root-mutation.d.ts +4 -5
  87. package/dist/file-lock-sync-root-mutation.js +7 -9
  88. package/dist/file-lock-sync-root-options.d.ts +0 -1
  89. package/dist/file-lock-sync-root-registration.d.ts +0 -1
  90. package/dist/file-lock-sync-root.d.ts +3 -3
  91. package/dist/file-lock-sync-root.js +14 -87
  92. package/dist/file-lock-sync-stale-admission.d.ts +2 -7
  93. package/dist/file-lock-sync-stale-admission.js +18 -27
  94. package/dist/file-lock-sync.d.ts +4 -22
  95. package/dist/file-lock-sync.js +38 -117
  96. package/dist/file-lock.d.ts +0 -1
  97. package/dist/file-observation.d.ts +0 -1
  98. package/dist/file-store-boundary.d.ts +7 -2
  99. package/dist/file-store-boundary.js +64 -27
  100. package/dist/file-store-prune.d.ts +0 -1
  101. package/dist/file-store-sync-directory.d.ts +0 -1
  102. package/dist/file-store-sync-directory.js +194 -231
  103. package/dist/file-store-sync-write.d.ts +0 -1
  104. package/dist/file-store-sync-write.js +18 -29
  105. package/dist/file-store.d.ts +0 -1
  106. package/dist/file-store.js +4 -10
  107. package/dist/file-sync.d.ts +0 -1
  108. package/dist/filename.d.ts +0 -1
  109. package/dist/filename.js +1 -7
  110. package/dist/fs.d.ts +0 -1
  111. package/dist/guarded-mkdir.d.ts +1 -2
  112. package/dist/guarded-mutation.d.ts +0 -7
  113. package/dist/guarded-mutation.js +6 -11
  114. package/dist/guest-dispatch-python.d.ts +0 -1
  115. package/dist/guest-dispatch-python.js +41 -90
  116. package/dist/guest-native-python.d.ts +0 -1
  117. package/dist/guest.d.ts +0 -1
  118. package/dist/home-dir.d.ts +0 -1
  119. package/dist/index.d.ts +9 -7
  120. package/dist/install-path.d.ts +0 -1
  121. package/dist/json-document-store.d.ts +0 -1
  122. package/dist/json-durable-queue-directory.d.ts +13 -1
  123. package/dist/json-durable-queue-directory.js +134 -0
  124. package/dist/json-durable-queue-ownership.d.ts +0 -1
  125. package/dist/json-durable-queue-ownership.js +42 -61
  126. package/dist/json-durable-queue-read.d.ts +0 -1
  127. package/dist/json-durable-queue-read.js +13 -9
  128. package/dist/json-durable-queue.d.ts +0 -1
  129. package/dist/json-durable-queue.js +8 -132
  130. package/dist/json-store.d.ts +0 -1
  131. package/dist/json-store.js +1 -2
  132. package/dist/json-stringify.d.ts +0 -1
  133. package/dist/json.d.ts +0 -1
  134. package/dist/json.js +7 -17
  135. package/dist/local-file-access.d.ts +0 -1
  136. package/dist/local-file-access.js +3 -10
  137. package/dist/local-file-descriptor.d.ts +0 -1
  138. package/dist/local-roots.d.ts +0 -1
  139. package/dist/lock-config.d.ts +0 -1
  140. package/dist/move-path-cleanup.d.ts +0 -1
  141. package/dist/move-path-stage.d.ts +0 -1
  142. package/dist/move-path.d.ts +0 -1
  143. package/dist/move-path.js +1 -2
  144. package/dist/mutation-authority.d.ts +0 -1
  145. package/dist/native-binding.d.ts +0 -1
  146. package/dist/native-config.d.ts +0 -1
  147. package/dist/native-directory-observation.d.ts +0 -1
  148. package/dist/native-fallback-warning.d.ts +0 -1
  149. package/dist/native-operations.d.ts +1 -5
  150. package/dist/native-operations.js +2 -7
  151. package/dist/native-parent-admission.d.ts +0 -1
  152. package/dist/native-pinned-write-windows.d.ts +1 -2
  153. package/dist/native-pinned-write-windows.js +1 -1
  154. package/dist/native-pinned-write.d.ts +1 -2
  155. package/dist/native-pinned-write.js +7 -16
  156. package/dist/native-policy-directory-observation.d.ts +0 -1
  157. package/dist/native-policy-parent-windows.d.ts +1 -2
  158. package/dist/native-rename-outcome.d.ts +0 -1
  159. package/dist/native-staged-file.d.ts +17 -5
  160. package/dist/native-staged-file.js +56 -65
  161. package/dist/native.d.ts +0 -1
  162. package/dist/opened-file-failure.d.ts +0 -1
  163. package/dist/opened-realpath.d.ts +0 -1
  164. package/dist/output.d.ts +0 -1
  165. package/dist/overwrite-file-handle.d.ts +0 -1
  166. package/dist/owner-dacl.d.ts +0 -1
  167. package/dist/path-case.d.ts +0 -1
  168. package/dist/path-policy.d.ts +0 -1
  169. package/dist/path-prefix.d.ts +0 -1
  170. package/dist/path-scope-lexical.d.ts +0 -1
  171. package/dist/path-segment-route.d.ts +0 -1
  172. package/dist/path-suffix-aliases.d.ts +0 -1
  173. package/dist/path.d.ts +0 -1
  174. package/dist/permission-exec.d.ts +0 -1
  175. package/dist/permission-exec.js +19 -25
  176. package/dist/permissions-public.d.ts +0 -1
  177. package/dist/permissions-windows.d.ts +2 -10
  178. package/dist/permissions-windows.js +10 -30
  179. package/dist/permissions.d.ts +0 -1
  180. package/dist/permissions.js +8 -16
  181. package/dist/pinned-mutation-admission.d.ts +1 -2
  182. package/dist/pinned-mutation-observation.d.ts +0 -1
  183. package/dist/pinned-mutation-shared-route.d.ts +0 -1
  184. package/dist/pinned-open.d.ts +1 -1
  185. package/dist/pinned-open.js +7 -2
  186. package/dist/pinned-operation.d.ts +1 -2
  187. package/dist/pinned-operation.js +3 -16
  188. package/dist/pinned-write-input.d.ts +0 -1
  189. package/dist/pinned-write-mode.d.ts +0 -1
  190. package/dist/pinned-write-mode.js +1 -1
  191. package/dist/pinned-write-staged.d.ts +0 -1
  192. package/dist/pinned-write-staged.js +1 -2
  193. package/dist/pinned-write-types.d.ts +9 -21
  194. package/dist/pinned-write.d.ts +0 -2
  195. package/dist/pinned-write.js +3 -5
  196. package/dist/positional-read.d.ts +0 -1
  197. package/dist/private-directory.d.ts +0 -1
  198. package/dist/private-producer-handoff-sync.d.ts +2 -13
  199. package/dist/private-producer-handoff-sync.js +10 -52
  200. package/dist/private-producer-handoff.d.ts +23 -4
  201. package/dist/private-producer-handoff.js +69 -46
  202. package/dist/private-temp-workspace.d.ts +0 -1
  203. package/dist/private-temp-workspace.js +11 -37
  204. package/dist/publish-copy-stage.d.ts +1 -2
  205. package/dist/publish-file-failure.d.ts +0 -1
  206. package/dist/publish-file.d.ts +0 -2
  207. package/dist/publish-file.js +1 -2
  208. package/dist/read-open-flags.d.ts +0 -1
  209. package/dist/read-opened-file.d.ts +0 -1
  210. package/dist/realpath.d.ts +0 -1
  211. package/dist/recursive-mkdir-path.d.ts +0 -1
  212. package/dist/regular-file.d.ts +0 -1
  213. package/dist/regular-file.js +77 -139
  214. package/dist/replace-directory.d.ts +0 -1
  215. package/dist/replace-directory.js +1 -2
  216. package/dist/replace-file-copy-fallback.d.ts +0 -1
  217. package/dist/replace-file-copy-fallback.js +14 -3
  218. package/dist/replace-file-copy-source.d.ts +0 -1
  219. package/dist/replace-file-copy-source.js +6 -1
  220. package/dist/replace-file-descriptor.d.ts +0 -1
  221. package/dist/replace-file-descriptor.js +6 -1
  222. package/dist/replace-file-mode.d.ts +0 -1
  223. package/dist/replace-file-rename-policy.d.ts +1 -3
  224. package/dist/replace-file-temp-owner.d.ts +12 -13
  225. package/dist/replace-file-temp-owner.js +66 -85
  226. package/dist/replace-file.d.ts +3 -4
  227. package/dist/replace-file.js +1 -1
  228. package/dist/retained-directory-replacement.d.ts +0 -1
  229. package/dist/root-boundary.d.ts +0 -1
  230. package/dist/root-context.d.ts +0 -1
  231. package/dist/root-context.js +3 -7
  232. package/dist/root-create-input.d.ts +1 -2
  233. package/dist/root-directory-creation.d.ts +1 -2
  234. package/dist/root-directory-creation.js +1 -1
  235. package/dist/root-directory-list.d.ts +0 -1
  236. package/dist/root-directory-list.js +3 -7
  237. package/dist/root-directory.d.ts +0 -1
  238. package/dist/root-entries.d.ts +0 -1
  239. package/dist/root-entries.js +2 -2
  240. package/dist/root-errors.d.ts +4 -1
  241. package/dist/root-errors.js +5 -3
  242. package/dist/root-file-final-admission.d.ts +0 -1
  243. package/dist/root-file.d.ts +0 -1
  244. package/dist/root-impl.d.ts +2 -15
  245. package/dist/root-impl.js +136 -112
  246. package/dist/root-move-noreplace.d.ts +0 -1
  247. package/dist/root-move-noreplace.js +4 -10
  248. package/dist/root-move-preflight.d.ts +0 -1
  249. package/dist/root-observed-path.d.ts +0 -1
  250. package/dist/root-observed-path.js +2 -4
  251. package/dist/root-options.d.ts +1 -2
  252. package/dist/root-path-errors.d.ts +0 -1
  253. package/dist/root-path-existing.d.ts +3 -1
  254. package/dist/root-path-existing.js +38 -18
  255. package/dist/root-path-observation.d.ts +0 -1
  256. package/dist/root-path-stat.d.ts +0 -1
  257. package/dist/root-path-stat.js +2 -4
  258. package/dist/root-path.d.ts +0 -1
  259. package/dist/root-path.js +60 -188
  260. package/dist/root-paths-lexical.d.ts +0 -1
  261. package/dist/root-paths.d.ts +0 -1
  262. package/dist/root-public-types.d.ts +11 -0
  263. package/dist/root-read-admission.d.ts +0 -1
  264. package/dist/root-read-admission.js +31 -44
  265. package/dist/root-remove-identity.d.ts +0 -1
  266. package/dist/root-remove-identity.js +2 -4
  267. package/dist/root-remove-receipt.d.ts +0 -1
  268. package/dist/root-remove.d.ts +0 -1
  269. package/dist/root-remove.js +2 -4
  270. package/dist/root-symlink-policy.d.ts +0 -1
  271. package/dist/root-walk.d.ts +0 -1
  272. package/dist/root-write-admission.d.ts +1 -2
  273. package/dist/root-write-admission.js +3 -7
  274. package/dist/root-write-compatibility.d.ts +0 -1
  275. package/dist/root-write-complete-parent.d.ts +0 -1
  276. package/dist/root-write-complete-parent.js +2 -3
  277. package/dist/root-write-lock-binding.d.ts +0 -1
  278. package/dist/root-write-mode.d.ts +0 -1
  279. package/dist/root-write-publication.d.ts +0 -1
  280. package/dist/root-write-verification.d.ts +1 -2
  281. package/dist/root.d.ts +2 -7
  282. package/dist/safe-path-segment.d.ts +1 -2
  283. package/dist/safe-path-segment.js +2 -5
  284. package/dist/secret-file.d.ts +0 -1
  285. package/dist/secret-file.js +7 -18
  286. package/dist/secret-read-async.d.ts +0 -1
  287. package/dist/secret-read-async.js +5 -5
  288. package/dist/secret-read-policy.d.ts +0 -1
  289. package/dist/secret.d.ts +0 -1
  290. package/dist/secure-file-windows.d.ts +0 -6
  291. package/dist/secure-file-windows.js +13 -28
  292. package/dist/secure-file.d.ts +0 -1
  293. package/dist/secure-file.js +9 -9
  294. package/dist/secure-temp-dir.d.ts +0 -1
  295. package/dist/secure-temp-repair.d.ts +0 -1
  296. package/dist/secure-temp-repair.js +5 -1
  297. package/dist/sibling-staged-file.d.ts +0 -1
  298. package/dist/sibling-staged-file.js +32 -39
  299. package/dist/sibling-temp.d.ts +0 -1
  300. package/dist/sidecar-lock-acquire.d.ts +1 -2
  301. package/dist/sidecar-lock-acquire.js +37 -61
  302. package/dist/sidecar-lock-admission-context.d.ts +0 -1
  303. package/dist/sidecar-lock-admission-parser.d.ts +0 -1
  304. package/dist/sidecar-lock-admission.d.ts +1 -5
  305. package/dist/sidecar-lock-admission.js +1 -7
  306. package/dist/sidecar-lock-handle.d.ts +0 -1
  307. package/dist/sidecar-lock-policy.d.ts +4 -1
  308. package/dist/sidecar-lock-policy.js +23 -0
  309. package/dist/sidecar-lock-reclaim.d.ts +0 -1
  310. package/dist/sidecar-lock-registration.d.ts +13 -0
  311. package/dist/sidecar-lock-registration.js +47 -0
  312. package/dist/sidecar-lock-root.d.ts +0 -1
  313. package/dist/sidecar-lock-stale-admission.d.ts +0 -1
  314. package/dist/sidecar-lock-stale-admission.js +2 -6
  315. package/dist/sidecar-lock-target.d.ts +0 -1
  316. package/dist/sidecar-lock-types.d.ts +22 -17
  317. package/dist/sidecar-lock.d.ts +0 -1
  318. package/dist/sidecar-lock.js +16 -83
  319. package/dist/staged-directory.d.ts +0 -1
  320. package/dist/staged-file-settlement.d.ts +0 -1
  321. package/dist/staged-file-types.d.ts +0 -1
  322. package/dist/stat-observation.d.ts +0 -1
  323. package/dist/store.d.ts +0 -1
  324. package/dist/strict-file-identity.d.ts +0 -1
  325. package/dist/string-coerce.d.ts +0 -1
  326. package/dist/suppressed-error.d.ts +0 -1
  327. package/dist/symlink-parents.d.ts +0 -1
  328. package/dist/temp-cleanup.d.ts +0 -1
  329. package/dist/temp-target.d.ts +0 -1
  330. package/dist/temp-target.js +7 -46
  331. package/dist/temp-workspace-admission.d.ts +0 -8
  332. package/dist/temp-workspace-admission.js +1 -7
  333. package/dist/temp-workspace-child-admission.d.ts +16 -6
  334. package/dist/temp-workspace-child-admission.js +71 -15
  335. package/dist/temp-workspace-descriptor.d.ts +1 -7
  336. package/dist/temp-workspace-descriptor.js +1 -4
  337. package/dist/temp-workspace-owner.d.ts +1 -1
  338. package/dist/temp-workspace-owner.js +45 -22
  339. package/dist/temp-workspace-types.d.ts +0 -1
  340. package/dist/temp.d.ts +0 -1
  341. package/dist/test-hooks.d.ts +0 -1
  342. package/dist/text-atomic.d.ts +0 -1
  343. package/dist/text-atomic.js +1 -1
  344. package/dist/timing.d.ts +0 -1
  345. package/dist/trash.d.ts +0 -1
  346. package/dist/types.d.ts +0 -1
  347. package/dist/unicode-path.d.ts +0 -1
  348. package/dist/walk.d.ts +0 -1
  349. package/dist/windows-command.d.ts +0 -1
  350. package/dist/windows-owner.d.ts +0 -1
  351. package/dist/windows-owner.js +5 -2
  352. package/dist/windows-path-alias.d.ts +1 -1
  353. package/dist/windows-path-alias.js +12 -43
  354. package/dist/windows-path-syntax.d.ts +5 -0
  355. package/dist/windows-path-syntax.js +21 -0
  356. package/dist/windows-security-command.d.ts +0 -1
  357. package/dist/windows-security-facts.d.ts +0 -1
  358. package/dist/write-file-handle.d.ts +0 -1
  359. package/dist/write-open-flags.d.ts +0 -1
  360. package/dist/write-queue.d.ts +0 -1
  361. package/docs/advanced.md +3 -1
  362. package/docs/atomic.md +14 -0
  363. package/docs/copy.md +2 -0
  364. package/docs/mutation-policy-proof.md +6 -4
  365. package/docs/permissions.md +6 -0
  366. package/docs/root.md +10 -0
  367. package/docs/secret-file.md +8 -0
  368. package/docs/sidecar-lock.md +4 -0
  369. package/docs/store.md +6 -0
  370. package/docs/temp.md +8 -1
  371. package/docs/writing.md +14 -3
  372. package/package.json +8 -9
  373. package/dist/absolute-path.d.ts.map +0 -1
  374. package/dist/advanced.d.ts.map +0 -1
  375. package/dist/archive-crc32.d.ts.map +0 -1
  376. package/dist/archive-deadline.d.ts.map +0 -1
  377. package/dist/archive-durability.d.ts.map +0 -1
  378. package/dist/archive-entry.d.ts.map +0 -1
  379. package/dist/archive-errors.d.ts.map +0 -1
  380. package/dist/archive-gzip-tail.d.ts.map +0 -1
  381. package/dist/archive-input.d.ts.map +0 -1
  382. package/dist/archive-kind.d.ts.map +0 -1
  383. package/dist/archive-limits.d.ts.map +0 -1
  384. package/dist/archive-merge.d.ts.map +0 -1
  385. package/dist/archive-native.d.ts +0 -22
  386. package/dist/archive-native.d.ts.map +0 -1
  387. package/dist/archive-native.js +0 -98
  388. package/dist/archive-options.d.ts +0 -25
  389. package/dist/archive-options.d.ts.map +0 -1
  390. package/dist/archive-parser-errors.d.ts.map +0 -1
  391. package/dist/archive-plan.d.ts.map +0 -1
  392. package/dist/archive-policy.d.ts +0 -22
  393. package/dist/archive-policy.d.ts.map +0 -1
  394. package/dist/archive-policy.js +0 -38
  395. package/dist/archive-read.d.ts.map +0 -1
  396. package/dist/archive-staging.d.ts.map +0 -1
  397. package/dist/archive-tar-inspect.d.ts +0 -7
  398. package/dist/archive-tar-inspect.d.ts.map +0 -1
  399. package/dist/archive-tar-inspect.js +0 -62
  400. package/dist/archive-tar-stream.d.ts.map +0 -1
  401. package/dist/archive-tar-wasm.d.ts.map +0 -1
  402. package/dist/archive-tar.d.ts +0 -19
  403. package/dist/archive-tar.d.ts.map +0 -1
  404. package/dist/archive-tar.js +0 -21
  405. package/dist/archive-zip-admission.d.ts.map +0 -1
  406. package/dist/archive-zip-count.d.ts.map +0 -1
  407. package/dist/archive-zip-directory.d.ts.map +0 -1
  408. package/dist/archive-zip-entry.d.ts.map +0 -1
  409. package/dist/archive-zip-integrity.d.ts.map +0 -1
  410. package/dist/archive-zip-loader.d.ts.map +0 -1
  411. package/dist/archive-zip-manifest.d.ts.map +0 -1
  412. package/dist/archive-zip-names.d.ts.map +0 -1
  413. package/dist/archive-zip-preflight.d.ts.map +0 -1
  414. package/dist/archive.d.ts.map +0 -1
  415. package/dist/async-lock.d.ts.map +0 -1
  416. package/dist/atomic.d.ts.map +0 -1
  417. package/dist/bounded-read-stream.d.ts.map +0 -1
  418. package/dist/bounded-read.d.ts.map +0 -1
  419. package/dist/byte-budget.d.ts.map +0 -1
  420. package/dist/byte-view.d.ts.map +0 -1
  421. package/dist/clone-metadata.d.ts.map +0 -1
  422. package/dist/config.d.ts.map +0 -1
  423. package/dist/containment.d.ts.map +0 -1
  424. package/dist/copy-file-input.d.ts.map +0 -1
  425. package/dist/copy-policy.d.ts.map +0 -1
  426. package/dist/copy-publication.d.ts.map +0 -1
  427. package/dist/copy-tree-portable.d.ts.map +0 -1
  428. package/dist/copy.d.ts.map +0 -1
  429. package/dist/create-directory.d.ts +0 -20
  430. package/dist/create-directory.d.ts.map +0 -1
  431. package/dist/create-directory.js +0 -130
  432. package/dist/create-file-async.d.ts +0 -7
  433. package/dist/create-file-async.d.ts.map +0 -1
  434. package/dist/create-file-async.js +0 -121
  435. package/dist/create-file.d.ts +0 -8
  436. package/dist/create-file.d.ts.map +0 -1
  437. package/dist/create-file.js +0 -190
  438. package/dist/create-owned-file.d.ts.map +0 -1
  439. package/dist/create.d.ts.map +0 -1
  440. package/dist/creation-darwin.d.ts +0 -6
  441. package/dist/creation-darwin.d.ts.map +0 -1
  442. package/dist/creation-darwin.js +0 -70
  443. package/dist/creation-file-state.d.ts +0 -19
  444. package/dist/creation-file-state.d.ts.map +0 -1
  445. package/dist/creation-file-state.js +0 -118
  446. package/dist/creation-path.d.ts +0 -21
  447. package/dist/creation-path.d.ts.map +0 -1
  448. package/dist/creation-path.js +0 -71
  449. package/dist/creation-permissions.d.ts +0 -19
  450. package/dist/creation-permissions.d.ts.map +0 -1
  451. package/dist/creation-permissions.js +0 -125
  452. package/dist/deny-mutations.d.ts.map +0 -1
  453. package/dist/device-path.d.ts.map +0 -1
  454. package/dist/directory-durability.d.ts.map +0 -1
  455. package/dist/directory-entry-path.d.ts.map +0 -1
  456. package/dist/directory-guard.d.ts.map +0 -1
  457. package/dist/directory-mode-node.d.ts.map +0 -1
  458. package/dist/directory-mode-owner.d.ts.map +0 -1
  459. package/dist/directory-receipt.d.ts.map +0 -1
  460. package/dist/durability.d.ts.map +0 -1
  461. package/dist/effective-uid.d.ts.map +0 -1
  462. package/dist/error-detail.d.ts.map +0 -1
  463. package/dist/errors.d.ts.map +0 -1
  464. package/dist/file-cleanup.d.ts.map +0 -1
  465. package/dist/file-contents.d.ts.map +0 -1
  466. package/dist/file-handle-transfer.d.ts.map +0 -1
  467. package/dist/file-hash.d.ts.map +0 -1
  468. package/dist/file-identity.d.ts.map +0 -1
  469. package/dist/file-lock-sync-admission.d.ts.map +0 -1
  470. package/dist/file-lock-sync-root-acquire.d.ts.map +0 -1
  471. package/dist/file-lock-sync-root-arbitration.d.ts.map +0 -1
  472. package/dist/file-lock-sync-root-held.d.ts.map +0 -1
  473. package/dist/file-lock-sync-root-io.d.ts.map +0 -1
  474. package/dist/file-lock-sync-root-mutation.d.ts.map +0 -1
  475. package/dist/file-lock-sync-root-options.d.ts.map +0 -1
  476. package/dist/file-lock-sync-root-registration.d.ts.map +0 -1
  477. package/dist/file-lock-sync-root.d.ts.map +0 -1
  478. package/dist/file-lock-sync-stale-admission.d.ts.map +0 -1
  479. package/dist/file-lock-sync.d.ts.map +0 -1
  480. package/dist/file-lock.d.ts.map +0 -1
  481. package/dist/file-observation.d.ts.map +0 -1
  482. package/dist/file-store-boundary.d.ts.map +0 -1
  483. package/dist/file-store-copy-source.d.ts +0 -5
  484. package/dist/file-store-copy-source.d.ts.map +0 -1
  485. package/dist/file-store-copy-source.js +0 -31
  486. package/dist/file-store-limit.d.ts +0 -2
  487. package/dist/file-store-limit.d.ts.map +0 -1
  488. package/dist/file-store-limit.js +0 -8
  489. package/dist/file-store-path.d.ts +0 -3
  490. package/dist/file-store-path.d.ts.map +0 -1
  491. package/dist/file-store-path.js +0 -30
  492. package/dist/file-store-prune.d.ts.map +0 -1
  493. package/dist/file-store-sync-directory.d.ts.map +0 -1
  494. package/dist/file-store-sync-write.d.ts.map +0 -1
  495. package/dist/file-store.d.ts.map +0 -1
  496. package/dist/file-sync.d.ts.map +0 -1
  497. package/dist/filename.d.ts.map +0 -1
  498. package/dist/fs.d.ts.map +0 -1
  499. package/dist/guarded-mkdir.d.ts.map +0 -1
  500. package/dist/guarded-mutation.d.ts.map +0 -1
  501. package/dist/guest-dispatch-python.d.ts.map +0 -1
  502. package/dist/guest-native-python.d.ts.map +0 -1
  503. package/dist/guest.d.ts.map +0 -1
  504. package/dist/home-dir.d.ts.map +0 -1
  505. package/dist/index.d.ts.map +0 -1
  506. package/dist/install-path.d.ts.map +0 -1
  507. package/dist/json-document-store.d.ts.map +0 -1
  508. package/dist/json-durable-queue-directory.d.ts.map +0 -1
  509. package/dist/json-durable-queue-ownership.d.ts.map +0 -1
  510. package/dist/json-durable-queue-paths.d.ts +0 -11
  511. package/dist/json-durable-queue-paths.d.ts.map +0 -1
  512. package/dist/json-durable-queue-paths.js +0 -20
  513. package/dist/json-durable-queue-read.d.ts.map +0 -1
  514. package/dist/json-durable-queue.d.ts.map +0 -1
  515. package/dist/json-store.d.ts.map +0 -1
  516. package/dist/json-stringify.d.ts.map +0 -1
  517. package/dist/json.d.ts.map +0 -1
  518. package/dist/local-file-access.d.ts.map +0 -1
  519. package/dist/local-file-descriptor.d.ts.map +0 -1
  520. package/dist/local-roots.d.ts.map +0 -1
  521. package/dist/lock-config.d.ts.map +0 -1
  522. package/dist/move-path-cleanup.d.ts.map +0 -1
  523. package/dist/move-path-stage.d.ts.map +0 -1
  524. package/dist/move-path.d.ts.map +0 -1
  525. package/dist/mutation-authority.d.ts.map +0 -1
  526. package/dist/native-binding.d.ts.map +0 -1
  527. package/dist/native-config.d.ts.map +0 -1
  528. package/dist/native-directory-observation.d.ts.map +0 -1
  529. package/dist/native-fallback-warning.d.ts.map +0 -1
  530. package/dist/native-operations.d.ts.map +0 -1
  531. package/dist/native-parent-admission.d.ts.map +0 -1
  532. package/dist/native-pinned-write-windows.d.ts.map +0 -1
  533. package/dist/native-pinned-write.d.ts.map +0 -1
  534. package/dist/native-policy-directory-observation.d.ts.map +0 -1
  535. package/dist/native-policy-parent-windows.d.ts.map +0 -1
  536. package/dist/native-rename-outcome.d.ts.map +0 -1
  537. package/dist/native-staged-file.d.ts.map +0 -1
  538. package/dist/native.d.ts.map +0 -1
  539. package/dist/opened-file-failure.d.ts.map +0 -1
  540. package/dist/opened-realpath.d.ts.map +0 -1
  541. package/dist/output.d.ts.map +0 -1
  542. package/dist/overwrite-file-handle.d.ts.map +0 -1
  543. package/dist/owner-dacl.d.ts.map +0 -1
  544. package/dist/path-case.d.ts.map +0 -1
  545. package/dist/path-policy.d.ts.map +0 -1
  546. package/dist/path-prefix.d.ts.map +0 -1
  547. package/dist/path-scope-lexical.d.ts.map +0 -1
  548. package/dist/path-segment-route.d.ts.map +0 -1
  549. package/dist/path-suffix-aliases.d.ts.map +0 -1
  550. package/dist/path.d.ts.map +0 -1
  551. package/dist/permission-exec.d.ts.map +0 -1
  552. package/dist/permissions-public.d.ts.map +0 -1
  553. package/dist/permissions-windows.d.ts.map +0 -1
  554. package/dist/permissions.d.ts.map +0 -1
  555. package/dist/pinned-mutation-admission.d.ts.map +0 -1
  556. package/dist/pinned-mutation-observation.d.ts.map +0 -1
  557. package/dist/pinned-mutation-shared-route.d.ts.map +0 -1
  558. package/dist/pinned-open.d.ts.map +0 -1
  559. package/dist/pinned-operation.d.ts.map +0 -1
  560. package/dist/pinned-write-input.d.ts.map +0 -1
  561. package/dist/pinned-write-mode.d.ts.map +0 -1
  562. package/dist/pinned-write-staged.d.ts.map +0 -1
  563. package/dist/pinned-write-types.d.ts.map +0 -1
  564. package/dist/pinned-write.d.ts.map +0 -1
  565. package/dist/positional-read.d.ts.map +0 -1
  566. package/dist/private-directory.d.ts.map +0 -1
  567. package/dist/private-producer-handoff-sync.d.ts.map +0 -1
  568. package/dist/private-producer-handoff.d.ts.map +0 -1
  569. package/dist/private-temp-workspace.d.ts.map +0 -1
  570. package/dist/publish-copy-stage.d.ts.map +0 -1
  571. package/dist/publish-file-failure.d.ts.map +0 -1
  572. package/dist/publish-file.d.ts.map +0 -1
  573. package/dist/read-open-flags.d.ts.map +0 -1
  574. package/dist/read-opened-file.d.ts.map +0 -1
  575. package/dist/realpath.d.ts.map +0 -1
  576. package/dist/recursive-mkdir-path.d.ts.map +0 -1
  577. package/dist/regular-file.d.ts.map +0 -1
  578. package/dist/replace-directory.d.ts.map +0 -1
  579. package/dist/replace-file-copy-fallback.d.ts.map +0 -1
  580. package/dist/replace-file-copy-source.d.ts.map +0 -1
  581. package/dist/replace-file-descriptor.d.ts.map +0 -1
  582. package/dist/replace-file-mode.d.ts.map +0 -1
  583. package/dist/replace-file-rename-policy.d.ts.map +0 -1
  584. package/dist/replace-file-temp-owner.d.ts.map +0 -1
  585. package/dist/replace-file.d.ts.map +0 -1
  586. package/dist/retained-directory-replacement.d.ts.map +0 -1
  587. package/dist/root-boundary.d.ts.map +0 -1
  588. package/dist/root-context.d.ts.map +0 -1
  589. package/dist/root-create-input.d.ts.map +0 -1
  590. package/dist/root-directory-creation.d.ts.map +0 -1
  591. package/dist/root-directory-list.d.ts.map +0 -1
  592. package/dist/root-directory.d.ts.map +0 -1
  593. package/dist/root-entries.d.ts.map +0 -1
  594. package/dist/root-errors.d.ts.map +0 -1
  595. package/dist/root-file-final-admission.d.ts.map +0 -1
  596. package/dist/root-file.d.ts.map +0 -1
  597. package/dist/root-impl.d.ts.map +0 -1
  598. package/dist/root-move-noreplace.d.ts.map +0 -1
  599. package/dist/root-move-preflight.d.ts.map +0 -1
  600. package/dist/root-observed-path.d.ts.map +0 -1
  601. package/dist/root-options.d.ts.map +0 -1
  602. package/dist/root-path-errors.d.ts.map +0 -1
  603. package/dist/root-path-existing.d.ts.map +0 -1
  604. package/dist/root-path-observation.d.ts.map +0 -1
  605. package/dist/root-path-stat.d.ts.map +0 -1
  606. package/dist/root-path-symlink.d.ts +0 -7
  607. package/dist/root-path-symlink.d.ts.map +0 -1
  608. package/dist/root-path-symlink.js +0 -55
  609. package/dist/root-path.d.ts.map +0 -1
  610. package/dist/root-paths-lexical.d.ts.map +0 -1
  611. package/dist/root-paths.d.ts.map +0 -1
  612. package/dist/root-read-admission.d.ts.map +0 -1
  613. package/dist/root-remove-identity.d.ts.map +0 -1
  614. package/dist/root-remove-receipt.d.ts.map +0 -1
  615. package/dist/root-remove.d.ts.map +0 -1
  616. package/dist/root-symlink-policy.d.ts.map +0 -1
  617. package/dist/root-walk.d.ts.map +0 -1
  618. package/dist/root-write-admission.d.ts.map +0 -1
  619. package/dist/root-write-compatibility.d.ts.map +0 -1
  620. package/dist/root-write-complete-parent.d.ts.map +0 -1
  621. package/dist/root-write-lock-binding.d.ts.map +0 -1
  622. package/dist/root-write-mode.d.ts.map +0 -1
  623. package/dist/root-write-publication.d.ts.map +0 -1
  624. package/dist/root-write-verification.d.ts.map +0 -1
  625. package/dist/root.d.ts.map +0 -1
  626. package/dist/safe-path-segment.d.ts.map +0 -1
  627. package/dist/secret-file.d.ts.map +0 -1
  628. package/dist/secret-read-async.d.ts.map +0 -1
  629. package/dist/secret-read-policy.d.ts.map +0 -1
  630. package/dist/secret.d.ts.map +0 -1
  631. package/dist/secure-file-windows.d.ts.map +0 -1
  632. package/dist/secure-file.d.ts.map +0 -1
  633. package/dist/secure-temp-dir.d.ts.map +0 -1
  634. package/dist/secure-temp-repair.d.ts.map +0 -1
  635. package/dist/sibling-staged-file.d.ts.map +0 -1
  636. package/dist/sibling-temp.d.ts.map +0 -1
  637. package/dist/sidecar-lock-acquire.d.ts.map +0 -1
  638. package/dist/sidecar-lock-admission-context.d.ts.map +0 -1
  639. package/dist/sidecar-lock-admission-parser.d.ts.map +0 -1
  640. package/dist/sidecar-lock-admission.d.ts.map +0 -1
  641. package/dist/sidecar-lock-handle.d.ts.map +0 -1
  642. package/dist/sidecar-lock-policy.d.ts.map +0 -1
  643. package/dist/sidecar-lock-reclaim.d.ts.map +0 -1
  644. package/dist/sidecar-lock-root.d.ts.map +0 -1
  645. package/dist/sidecar-lock-stale-admission.d.ts.map +0 -1
  646. package/dist/sidecar-lock-target.d.ts.map +0 -1
  647. package/dist/sidecar-lock-types.d.ts.map +0 -1
  648. package/dist/sidecar-lock.d.ts.map +0 -1
  649. package/dist/staged-directory.d.ts.map +0 -1
  650. package/dist/staged-file-settlement.d.ts.map +0 -1
  651. package/dist/staged-file-types.d.ts.map +0 -1
  652. package/dist/standalone-publication-path.d.ts +0 -2
  653. package/dist/standalone-publication-path.d.ts.map +0 -1
  654. package/dist/standalone-publication-path.js +0 -6
  655. package/dist/stat-observation.d.ts.map +0 -1
  656. package/dist/store.d.ts.map +0 -1
  657. package/dist/strict-file-identity.d.ts.map +0 -1
  658. package/dist/string-coerce.d.ts.map +0 -1
  659. package/dist/suppressed-error.d.ts.map +0 -1
  660. package/dist/symlink-parents.d.ts.map +0 -1
  661. package/dist/temp-cleanup.d.ts.map +0 -1
  662. package/dist/temp-target.d.ts.map +0 -1
  663. package/dist/temp-workspace-admission.d.ts.map +0 -1
  664. package/dist/temp-workspace-child-admission.d.ts.map +0 -1
  665. package/dist/temp-workspace-descriptor.d.ts.map +0 -1
  666. package/dist/temp-workspace-identity.d.ts +0 -15
  667. package/dist/temp-workspace-identity.d.ts.map +0 -1
  668. package/dist/temp-workspace-identity.js +0 -41
  669. package/dist/temp-workspace-owner.d.ts.map +0 -1
  670. package/dist/temp-workspace-permissions.d.ts +0 -4
  671. package/dist/temp-workspace-permissions.d.ts.map +0 -1
  672. package/dist/temp-workspace-permissions.js +0 -32
  673. package/dist/temp-workspace-types.d.ts.map +0 -1
  674. package/dist/temp.d.ts.map +0 -1
  675. package/dist/test-hooks.d.ts.map +0 -1
  676. package/dist/text-atomic.d.ts.map +0 -1
  677. package/dist/timing.d.ts.map +0 -1
  678. package/dist/trash.d.ts.map +0 -1
  679. package/dist/types.d.ts.map +0 -1
  680. package/dist/unicode-path.d.ts.map +0 -1
  681. package/dist/walk.d.ts.map +0 -1
  682. package/dist/windows-command.d.ts.map +0 -1
  683. package/dist/windows-owner.d.ts.map +0 -1
  684. package/dist/windows-path-alias.d.ts.map +0 -1
  685. package/dist/windows-security-command.d.ts.map +0 -1
  686. package/dist/windows-security-facts.d.ts.map +0 -1
  687. package/dist/write-file-handle.d.ts.map +0 -1
  688. package/dist/write-open-flags.d.ts.map +0 -1
  689. package/dist/write-queue.d.ts.map +0 -1
  690. /package/dist/{archive-options.js → root-public-types.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { type RootBoundaryIdentity } from "./root-boundary.js";
2
2
  import { type MutationDirectoryObservation } from "./pinned-mutation-observation.js";
3
- import type { PinnedCreatedDirectoryReceipt, PinnedMutationAdmissionReceipt, PinnedMutationAuthorizationToken } from "./pinned-write.js";
3
+ import type { PinnedCreatedDirectoryReceipt, PinnedMutationAdmissionReceipt, PinnedMutationAuthorizationToken } from "./pinned-write-types.js";
4
4
  /**
5
5
  * Creates each missing path component from `rootReal` down to `targetPath`,
6
6
  * guarding every step. Returns the real (symlink-resolved) path of the final
@@ -23,4 +23,3 @@ export declare function mkdirPathComponentsWithGuards(params: {
23
23
  retainedTargetPath?: string;
24
24
  rootIdentity?: RootBoundaryIdentity;
25
25
  }): Promise<string>;
26
- //# sourceMappingURL=guarded-mkdir.d.ts.map
@@ -13,21 +13,15 @@ export declare function guardedRename(params: {
13
13
  onRenamed?: () => void;
14
14
  from: string;
15
15
  to: string;
16
- targetRoot?: string;
17
- verifyAfter?: boolean;
18
16
  }): Promise<void>;
19
17
  export declare function guardedRenameSync(params: {
20
18
  from: string;
21
19
  to: string;
22
- targetRoot?: string;
23
- verifyAfter?: boolean;
24
20
  }): void;
25
21
  export declare function guardedRm(params: {
26
22
  target: string;
27
23
  assertBeforeMutation?: () => void;
28
24
  recursive?: boolean;
29
- force?: boolean;
30
- verifyAfter?: boolean;
31
25
  }): Promise<void>;
32
26
  export declare function guardedRmSync(params: {
33
27
  target: string;
@@ -36,4 +30,3 @@ export declare function guardedRmSync(params: {
36
30
  force?: boolean;
37
31
  verifyAfter?: boolean;
38
32
  }): void;
39
- //# sourceMappingURL=guarded-mutation.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import fsSync, {} from "node:fs";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
- import { assertAsyncDirectoryGuard, assertSyncDirectoryGuard, createAsyncDirectoryGuard, createNearestExistingDirectoryGuard, createNearestExistingSyncDirectoryGuard, createSyncDirectoryGuard, } from "./directory-guard.js";
4
+ import { assertAsyncDirectoryGuard, assertSyncDirectoryGuard, createAsyncDirectoryGuard, createSyncDirectoryGuard, } from "./directory-guard.js";
5
5
  export async function withAsyncDirectoryGuards(guards, mutate, options = {}) {
6
6
  for (const guard of guards) {
7
7
  await assertAsyncDirectoryGuard(guard);
@@ -44,9 +44,7 @@ export function withSyncDirectoryGuards(guards, mutate, options = {}) {
44
44
  }
45
45
  export async function guardedRename(params) {
46
46
  const sourceGuard = await createAsyncDirectoryGuard(path.dirname(params.from));
47
- const targetGuard = params.targetRoot
48
- ? await createNearestExistingDirectoryGuard(params.targetRoot, path.dirname(params.to))
49
- : await createAsyncDirectoryGuard(path.dirname(params.to));
47
+ const targetGuard = await createAsyncDirectoryGuard(path.dirname(params.to));
50
48
  await withAsyncDirectoryGuards([sourceGuard, targetGuard], async () => {
51
49
  if (params.onSourceInspected) {
52
50
  params.onSourceInspected(fsSync.lstatSync(params.from, { bigint: true }));
@@ -55,14 +53,12 @@ export async function guardedRename(params) {
55
53
  params.assertBeforeRename?.();
56
54
  await fs.rename(params.from, params.to);
57
55
  params.onRenamed?.();
58
- }, { verifyAfter: params.verifyAfter });
56
+ });
59
57
  }
60
58
  export function guardedRenameSync(params) {
61
59
  const sourceGuard = createSyncDirectoryGuard(path.dirname(params.from));
62
- const targetGuard = params.targetRoot
63
- ? createNearestExistingSyncDirectoryGuard(params.targetRoot, path.dirname(params.to))
64
- : createSyncDirectoryGuard(path.dirname(params.to));
65
- withSyncDirectoryGuards([sourceGuard, targetGuard], () => fsSync.renameSync(params.from, params.to), { verifyAfter: params.verifyAfter });
60
+ const targetGuard = createSyncDirectoryGuard(path.dirname(params.to));
61
+ withSyncDirectoryGuards([sourceGuard, targetGuard], () => fsSync.renameSync(params.from, params.to));
66
62
  }
67
63
  export async function guardedRm(params) {
68
64
  const guard = await createAsyncDirectoryGuard(path.dirname(params.target));
@@ -70,9 +66,8 @@ export async function guardedRm(params) {
70
66
  params.assertBeforeMutation?.();
71
67
  await fs.rm(params.target, {
72
68
  ...(params.recursive !== undefined ? { recursive: params.recursive } : {}),
73
- ...(params.force !== undefined ? { force: params.force } : {}),
74
69
  });
75
- }, { verifyAfter: params.verifyAfter });
70
+ });
76
71
  }
77
72
  export function guardedRmSync(params) {
78
73
  const guard = createSyncDirectoryGuard(path.dirname(params.target));
@@ -1,2 +1 @@
1
1
  export declare const GUEST_FILESYSTEM_DISPATCH_PYTHON: string;
2
- //# sourceMappingURL=guest-dispatch-python.d.ts.map
@@ -1,5 +1,5 @@
1
1
  export const GUEST_FILESYSTEM_DISPATCH_PYTHON = [
2
- "if operation == 'copy':",
2
+ "if operation in ('copy', 'rename'):",
3
3
  " src_root_fd = open_dir(sys.argv[2])",
4
4
  " dst_root_fd = open_dir(sys.argv[5])",
5
5
  " src_parent_fd = None",
@@ -7,7 +7,10 @@ export const GUEST_FILESYSTEM_DISPATCH_PYTHON = [
7
7
  " try:",
8
8
  " src_parent_fd = walk_dir(src_root_fd, sys.argv[3], False)",
9
9
  " dst_parent_fd = walk_dir(dst_root_fd, sys.argv[6], sys.argv[8] == '1')",
10
- " copy_file_atomic(src_parent_fd, sys.argv[4], dst_parent_fd, sys.argv[7])",
10
+ " if operation == 'copy':",
11
+ " copy_file_atomic(src_parent_fd, sys.argv[4], dst_parent_fd, sys.argv[7])",
12
+ " else:",
13
+ " move_entry(src_parent_fd, sys.argv[4], dst_parent_fd, sys.argv[7])",
11
14
  " finally:",
12
15
  " if src_parent_fd is not None:",
13
16
  " os.close(src_parent_fd)",
@@ -15,103 +18,51 @@ export const GUEST_FILESYSTEM_DISPATCH_PYTHON = [
15
18
  " os.close(dst_parent_fd)",
16
19
  " os.close(src_root_fd)",
17
20
  " os.close(dst_root_fd)",
18
- "elif operation == 'write':",
21
+ "elif operation in ('write', 'create', 'read', 'readdir', 'mkdirp', 'remove'):",
19
22
  " root_fd = open_dir(sys.argv[2])",
20
23
  " parent_fd = None",
21
24
  " try:",
22
- " parent_fd = walk_dir(root_fd, sys.argv[3], sys.argv[5] == '1')",
23
- " write_atomic(parent_fd, sys.argv[4], sys.stdin.buffer)",
24
- " finally:",
25
- " if parent_fd is not None:",
26
- " os.close(parent_fd)",
27
- " os.close(root_fd)",
28
- "elif operation == 'create':",
29
- " root_fd = open_dir(sys.argv[2])",
30
- " parent_fd = None",
31
- " try:",
32
- " parent_fd = walk_dir(root_fd, sys.argv[3], sys.argv[5] == '1')",
33
- " try:",
34
- " create_exclusive(parent_fd, sys.argv[4], sys.stdin.buffer)",
35
- " except FileExistsError:",
36
- " sys.exit(SANDBOX_CREATE_EXISTS_EXIT_CODE)",
37
- " finally:",
38
- " if parent_fd is not None:",
39
- " os.close(parent_fd)",
40
- " os.close(root_fd)",
41
- "elif operation == 'read':",
42
- " root_fd = open_dir(sys.argv[2])",
43
- " parent_fd = None",
44
- " try:",
45
- " parent_fd = walk_dir(root_fd, sys.argv[3], False)",
46
- " if len(sys.argv) > 5:",
47
- " read_file_bounded(parent_fd, sys.argv[4], int(sys.argv[5]))",
48
- " else:",
49
- " read_file(parent_fd, sys.argv[4])",
50
- " except FileNotFoundError:",
51
- " sys.exit(SANDBOX_READ_NOT_FOUND_EXIT_CODE)",
52
- " finally:",
53
- " if parent_fd is not None:",
54
- " os.close(parent_fd)",
55
- " os.close(root_fd)",
56
- "elif operation == 'readdir':",
57
- " root_fd = open_dir(sys.argv[2])",
58
- " target_fd = None",
59
- " try:",
60
- " target_fd = walk_dir(root_fd, sys.argv[3], False)",
61
- " with os.scandir(target_fd) as entries:",
62
- " print(json.dumps([{'name': entry.name, 'isDirectory': entry.is_dir(follow_symlinks=False), 'isFile': entry.is_file(follow_symlinks=False)} for entry in entries]))",
63
- " finally:",
64
- " if target_fd is not None:",
65
- " os.close(target_fd)",
66
- " os.close(root_fd)",
67
- "elif operation == 'mkdirp':",
68
- " root_fd = open_dir(sys.argv[2])",
69
- " target_fd = None",
70
- " try:",
71
- " target_fd = walk_dir(root_fd, sys.argv[3], True)",
72
- " os.fsync(target_fd)",
73
- " finally:",
74
- " if target_fd is not None:",
75
- " os.close(target_fd)",
76
- " os.close(root_fd)",
77
- "elif operation == 'remove':",
78
- " root_fd = open_dir(sys.argv[2])",
79
- " parent_fd = None",
80
- " try:",
81
- " parent_fd = walk_dir(root_fd, sys.argv[3], False)",
82
- " try:",
83
- " if sys.argv[5] == '1':",
84
- " remove_tree(parent_fd, sys.argv[4])",
25
+ " mkdir_enabled = operation == 'mkdirp' or (operation in ('write', 'create') and sys.argv[5] == '1')",
26
+ " parent_fd = walk_dir(root_fd, sys.argv[3], mkdir_enabled)",
27
+ " if operation == 'write':",
28
+ " write_atomic(parent_fd, sys.argv[4], sys.stdin.buffer)",
29
+ " elif operation == 'create':",
30
+ " try:",
31
+ " create_exclusive(parent_fd, sys.argv[4], sys.stdin.buffer)",
32
+ " except FileExistsError:",
33
+ " sys.exit(SANDBOX_CREATE_EXISTS_EXIT_CODE)",
34
+ " elif operation == 'read':",
35
+ " if len(sys.argv) > 5:",
36
+ " read_file_bounded(parent_fd, sys.argv[4], int(sys.argv[5]))",
85
37
  " else:",
86
- " entry_stat = os.lstat(sys.argv[4], dir_fd=parent_fd)",
87
- " if stat.S_ISDIR(entry_stat.st_mode) and not stat.S_ISLNK(entry_stat.st_mode):",
88
- " os.rmdir(sys.argv[4], dir_fd=parent_fd)",
89
- " else:",
90
- " os.unlink(sys.argv[4], dir_fd=parent_fd)",
38
+ " read_file(parent_fd, sys.argv[4])",
39
+ " elif operation == 'readdir':",
40
+ " with os.scandir(parent_fd) as entries:",
41
+ " print(json.dumps([{'name': entry.name, 'isDirectory': entry.is_dir(follow_symlinks=False), 'isFile': entry.is_file(follow_symlinks=False)} for entry in entries]))",
42
+ " elif operation == 'mkdirp':",
91
43
  " os.fsync(parent_fd)",
92
- " except FileNotFoundError:",
93
- " if sys.argv[6] != '1':",
94
- " raise",
44
+ " elif operation == 'remove':",
45
+ " try:",
46
+ " if sys.argv[5] == '1':",
47
+ " remove_tree(parent_fd, sys.argv[4])",
48
+ " else:",
49
+ " entry_stat = os.lstat(sys.argv[4], dir_fd=parent_fd)",
50
+ " if stat.S_ISDIR(entry_stat.st_mode) and not stat.S_ISLNK(entry_stat.st_mode):",
51
+ " os.rmdir(sys.argv[4], dir_fd=parent_fd)",
52
+ " else:",
53
+ " os.unlink(sys.argv[4], dir_fd=parent_fd)",
54
+ " os.fsync(parent_fd)",
55
+ " except FileNotFoundError:",
56
+ " if sys.argv[6] != '1':",
57
+ " raise",
58
+ " except FileNotFoundError:",
59
+ " if operation == 'read':",
60
+ " sys.exit(SANDBOX_READ_NOT_FOUND_EXIT_CODE)",
61
+ " raise",
95
62
  " finally:",
96
63
  " if parent_fd is not None:",
97
64
  " os.close(parent_fd)",
98
65
  " os.close(root_fd)",
99
- "elif operation == 'rename':",
100
- " src_root_fd = open_dir(sys.argv[2])",
101
- " dst_root_fd = open_dir(sys.argv[5])",
102
- " src_parent_fd = None",
103
- " dst_parent_fd = None",
104
- " try:",
105
- " src_parent_fd = walk_dir(src_root_fd, sys.argv[3], False)",
106
- " dst_parent_fd = walk_dir(dst_root_fd, sys.argv[6], sys.argv[8] == '1')",
107
- " move_entry(src_parent_fd, sys.argv[4], dst_parent_fd, sys.argv[7])",
108
- " finally:",
109
- " if src_parent_fd is not None:",
110
- " os.close(src_parent_fd)",
111
- " if dst_parent_fd is not None:",
112
- " os.close(dst_parent_fd)",
113
- " os.close(src_root_fd)",
114
- " os.close(dst_root_fd)",
115
66
  "else:",
116
67
  " raise RuntimeError('unknown sandbox mutation operation: ' + operation)",
117
68
  ].join("\n");
@@ -1,4 +1,3 @@
1
1
  export declare const GUEST_FILESYSTEM_CREATE_STAGING_PYTHON: string;
2
2
  export declare const GUEST_FILESYSTEM_RENAME_NO_REPLACE_PYTHON: string;
3
3
  export declare const GUEST_FILESYSTEM_CREATE_EXCLUSIVE_PYTHON: string;
4
- //# sourceMappingURL=guest-native-python.d.ts.map
package/dist/guest.d.ts CHANGED
@@ -6,4 +6,3 @@ export declare const GUEST_FILESYSTEM_READ_NOT_FOUND_EXIT_CODE = 2;
6
6
  /** Python 3 source for the descriptor-relative guest filesystem protocol. See docs/guest.md. */
7
7
  export declare const GUEST_FILESYSTEM_PYTHON: string;
8
8
  export { GUEST_FILESYSTEM_RENAME_NO_REPLACE_PYTHON };
9
- //# sourceMappingURL=guest.d.ts.map
@@ -9,4 +9,3 @@ export declare function resolveHomeRelativePath(input: string, opts?: {
9
9
  env?: NodeJS.ProcessEnv;
10
10
  homedir?: () => string;
11
11
  }): string;
12
- //# sourceMappingURL=home-dir.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export { FsSafeError, categorizeFsSafeError, type FsSafeErrorCategory, type FsSafeErrorCode, type FsSafeErrorDetails, } from "./errors.js";
2
- export { DEFAULT_ROOT_MAX_BYTES, root, type DenyMutationPolicy, type HardlinkPolicy, type RenameIdentityPolicy, type OpenResult, type ReadResult, type Root, type RootAppendOptions, type RootCopyOptions, type RootCopySource, type RootCopyPublicationReceipt, type CopyCloneMode, type RootCreateJsonOptions, type RootCreateOptions, type RootCreateStreamOptions, type RootDefaults, type RootEntriesOptions, type RootMkdirOptions, type RootMoveOptions, type RootOpenOptions, type RootOpenWritableOptions, type RootOptions, type RootReadOptions, type RootRemoveOptions, type RootWriteJsonOptions, type RootWriteOptions, type RootWalkDataEntry, type RootWalkDataEntryKind, type RootWalkDirectoryErrorBehavior, type RootWalkEntry, type RootWalkEntryFilter, type RootWalkEntryFilterResult, type RootWalkEntryKind, type RootWalkLimitBehavior, type RootWalkOptions, type RootWalkSymlinkPolicy, type SymlinkPolicy, type MutationSymlinkPolicy, type WritableOpenMode, type WritableOpenResult, } from "./root.js";
3
- export type { ContainmentGuarantee } from "./containment.js";
4
- export { configureFsSafePython, configureFsSafeNative, getFsSafeNativeConfig, type FsSafePythonConfig, type FsSafeNativeConfig, type FsSafeNativeMode, } from "./native-config.js";
5
- export { writeExternalFileWithinRoot, type ExternalFileWriteOptions, type ExternalFileWriteResult, } from "./output.js";
6
- export { configureFsSafeLocks, getFsSafeLockConfig, type FsSafeLockConfig, } from "./lock-config.js";
7
- //# sourceMappingURL=index.d.ts.map
1
+ export { FsSafeError, categorizeFsSafeError, } from "./errors.js";
2
+ export type * from "./errors.js";
3
+ export { DEFAULT_ROOT_MAX_BYTES, root, type Root, } from "./root.js";
4
+ export type * from "./root-public-types.js";
5
+ export { configureFsSafePython, configureFsSafeNative, getFsSafeNativeConfig, } from "./native-config.js";
6
+ export type * from "./config.js";
7
+ export { writeExternalFileWithinRoot, } from "./output.js";
8
+ export type * from "./output.js";
9
+ export { configureFsSafeLocks, getFsSafeLockConfig, } from "./lock-config.js";
@@ -23,4 +23,3 @@ export declare function assertCanonicalPathWithinBase(params: {
23
23
  candidatePath: string;
24
24
  boundaryLabel: string;
25
25
  }): Promise<void>;
26
- //# sourceMappingURL=install-path.d.ts.map
@@ -35,4 +35,3 @@ export type JsonStoreAdapter<T> = {
35
35
  }): Promise<void>;
36
36
  };
37
37
  export declare function createJsonStore<T>(adapter: JsonStoreAdapter<T>, options?: JsonFileStoreOptions): JsonStore<T>;
38
- //# sourceMappingURL=json-document-store.d.ts.map
@@ -1,2 +1,14 @@
1
+ export declare function queueDirectories(queueDir: string, failedDir: string): Promise<{
2
+ queue: QueueDirectory;
3
+ failed: QueueDirectory;
4
+ }>;
5
+ declare class QueueDirectory {
6
+ private readonly dir;
7
+ private readonly root;
8
+ private readonly allowSymlinkBase;
9
+ constructor(dir: string);
10
+ ensure(): Promise<void>;
11
+ assert(allowMissing?: boolean): Promise<void>;
12
+ }
1
13
  export declare function syncQueueDirectoryCreation(dir: string, validationBase: string): Promise<void>;
2
- //# sourceMappingURL=json-durable-queue-directory.d.ts.map
14
+ export {};
@@ -1,7 +1,141 @@
1
+ import fs from "node:fs";
1
2
  import path from "node:path";
2
3
  import { syncDirectory } from "./directory-durability.js";
3
4
  import { isPathRelativeEscape } from "./path.js";
4
5
  import { realpathSync } from "./realpath.js";
6
+ import { recursiveMkdirPath } from "./recursive-mkdir-path.js";
7
+ import { assertNoWindowsPathAlias, resolvePathPreservingWindowsRoot, } from "./windows-path-alias.js";
8
+ export async function queueDirectories(queueDir, failedDir) {
9
+ const queue = new QueueDirectory(queueDir);
10
+ return { queue, failed: new QueueDirectory(failedDir) };
11
+ }
12
+ class QueueDirectory {
13
+ dir;
14
+ root;
15
+ allowSymlinkBase;
16
+ constructor(dir) {
17
+ this.dir = dir;
18
+ this.root = path.parse(resolveQueueFilesystemPath(dir)).root;
19
+ this.allowSymlinkBase = process.platform === "darwin";
20
+ }
21
+ async ensure() {
22
+ await this.assert(true);
23
+ await fs.promises.mkdir(recursiveMkdirPath(this.dir), { recursive: true, mode: 0o700 });
24
+ await this.assert();
25
+ await chmodQueueDirectory(this.dir);
26
+ await syncQueueDirectoryCreation(this.dir, this.root);
27
+ }
28
+ async assert(allowMissing = false) {
29
+ const dir = this.dir;
30
+ let base = resolveQueueFilesystemPath(this.root);
31
+ let target = resolveQueueFilesystemPath(dir);
32
+ let current = base;
33
+ let baseStat = fs.lstatSync(base);
34
+ if (baseStat.isSymbolicLink() && this.allowSymlinkBase) {
35
+ const relative = path.relative(base, target);
36
+ if (relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
37
+ throw new Error(`durable queue path is not a directory: ${dir}`);
38
+ }
39
+ base = realpathSync.native(base);
40
+ target = path.join(base, ...relative.split(path.sep).filter(Boolean));
41
+ current = base;
42
+ baseStat = fs.lstatSync(base);
43
+ }
44
+ if (baseStat.isSymbolicLink() || !baseStat.isDirectory()) {
45
+ throw new Error(`durable queue path is not a directory: ${dir}`);
46
+ }
47
+ const segments = path.relative(base, target).split(path.sep).filter(Boolean);
48
+ for (let index = 0; index < segments.length; index++) {
49
+ const segment = segments[index];
50
+ if (segment === undefined) {
51
+ continue;
52
+ }
53
+ current = path.join(current, segment);
54
+ let stat;
55
+ try {
56
+ stat = fs.lstatSync(current);
57
+ }
58
+ catch (error) {
59
+ if (allowMissing && error.code === "ENOENT") {
60
+ return;
61
+ }
62
+ throw error;
63
+ }
64
+ if (stat.isSymbolicLink() || !stat.isDirectory()) {
65
+ if (stat.isSymbolicLink() && this.allowSymlinkBase) {
66
+ if (await isDarwinSystemAlias(current, stat)) {
67
+ current = realpathSync.native(current);
68
+ continue;
69
+ }
70
+ }
71
+ throw new Error(`durable queue path is not a directory: ${dir}`);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ async function isDarwinSystemAlias(dir, stat) {
77
+ if (process.platform !== "darwin" || !stat.isSymbolicLink()) {
78
+ return false;
79
+ }
80
+ const resolved = path.resolve(dir);
81
+ if (resolved !== "/tmp" && resolved !== "/var") {
82
+ return false;
83
+ }
84
+ try {
85
+ return realpathSync.native(resolved) === `/private${resolved}`;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ async function chmodQueueDirectory(dir) {
92
+ const noFollow = typeof fs.constants.O_NOFOLLOW === "number" && process.platform !== "win32"
93
+ ? fs.constants.O_NOFOLLOW
94
+ : 0;
95
+ const directoryFlag = typeof fs.constants.O_DIRECTORY === "number" && process.platform !== "win32"
96
+ ? fs.constants.O_DIRECTORY
97
+ : 0;
98
+ if (noFollow || directoryFlag) {
99
+ let handle;
100
+ try {
101
+ handle = await fs.promises.open(dir, fs.constants.O_RDONLY | noFollow | directoryFlag);
102
+ const stat = fs.fstatSync(handle.fd);
103
+ if (!stat.isDirectory()) {
104
+ throw new Error(`durable queue path is not a directory: ${dir}`);
105
+ }
106
+ try {
107
+ await handle.chmod(0o700);
108
+ }
109
+ catch {
110
+ // Best-effort on platforms that do not enforce POSIX modes.
111
+ }
112
+ return;
113
+ }
114
+ finally {
115
+ try {
116
+ await handle?.close();
117
+ }
118
+ catch {
119
+ // Best-effort cleanup after chmod/open failures.
120
+ }
121
+ }
122
+ }
123
+ const stat = fs.lstatSync(dir);
124
+ if (stat.isSymbolicLink() || !stat.isDirectory()) {
125
+ throw new Error(`durable queue path is not a directory: ${dir}`);
126
+ }
127
+ try {
128
+ await fs.promises.chmod(dir, 0o700);
129
+ }
130
+ catch {
131
+ // Best-effort on platforms that do not enforce POSIX modes.
132
+ }
133
+ }
134
+ function resolveQueueFilesystemPath(value) {
135
+ const resolved = resolvePathPreservingWindowsRoot(value);
136
+ assertNoWindowsPathAlias(resolved);
137
+ return resolved;
138
+ }
5
139
  export async function syncQueueDirectoryCreation(dir, validationBase) {
6
140
  const baseReal = realpathSync.native(validationBase);
7
141
  const targetReal = realpathSync.native(dir);
@@ -21,4 +21,3 @@ export declare function moveDurableQueueEntryToFailed(params: {
21
21
  failedPath: string;
22
22
  }): Promise<void>;
23
23
  export declare function getErrorCode(error: unknown): string | null;
24
- //# sourceMappingURL=json-durable-queue-ownership.d.ts.map