toolcraft 0.0.749 → 0.0.751

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 (374) hide show
  1. package/composition.json +23 -3
  2. package/dist/composition.json +23 -3
  3. package/dist/human-in-loop/approvals-commands.d.ts +1 -1
  4. package/dist/index.d.ts +1 -262
  5. package/dist/index.js +1 -573
  6. package/dist/runtime-platform.d.ts +2 -0
  7. package/dist/runtime-platform.js +2 -0
  8. package/dist/runtime-platform.workerd.d.ts +3 -0
  9. package/dist/runtime-platform.workerd.js +10 -0
  10. package/dist/runtime.d.ts +262 -0
  11. package/dist/runtime.js +576 -0
  12. package/node_modules/@noble/hashes/LICENSE +21 -0
  13. package/node_modules/@noble/hashes/README.md +478 -0
  14. package/node_modules/@noble/hashes/_blake.d.ts +20 -0
  15. package/node_modules/@noble/hashes/_blake.js +59 -0
  16. package/node_modules/@noble/hashes/_md.d.ts +95 -0
  17. package/node_modules/@noble/hashes/_md.js +209 -0
  18. package/node_modules/@noble/hashes/_u64.d.ts +36 -0
  19. package/node_modules/@noble/hashes/_u64.js +77 -0
  20. package/node_modules/@noble/hashes/argon2.d.ts +148 -0
  21. package/node_modules/@noble/hashes/argon2.js +577 -0
  22. package/node_modules/@noble/hashes/blake1.d.ts +162 -0
  23. package/node_modules/@noble/hashes/blake1.js +630 -0
  24. package/node_modules/@noble/hashes/blake2.d.ts +203 -0
  25. package/node_modules/@noble/hashes/blake2.js +573 -0
  26. package/node_modules/@noble/hashes/blake3.d.ts +68 -0
  27. package/node_modules/@noble/hashes/blake3.js +310 -0
  28. package/node_modules/@noble/hashes/eskdf.d.ts +91 -0
  29. package/node_modules/@noble/hashes/eskdf.js +225 -0
  30. package/node_modules/@noble/hashes/hkdf.d.ts +70 -0
  31. package/node_modules/@noble/hashes/hkdf.js +152 -0
  32. package/node_modules/@noble/hashes/hmac.d.ts +50 -0
  33. package/node_modules/@noble/hashes/hmac.js +93 -0
  34. package/node_modules/@noble/hashes/index.d.ts +1 -0
  35. package/node_modules/@noble/hashes/index.js +34 -0
  36. package/node_modules/@noble/hashes/legacy.d.ts +107 -0
  37. package/node_modules/@noble/hashes/legacy.js +348 -0
  38. package/node_modules/@noble/hashes/package.json +91 -0
  39. package/node_modules/@noble/hashes/pbkdf2.d.ts +66 -0
  40. package/node_modules/@noble/hashes/pbkdf2.js +176 -0
  41. package/node_modules/@noble/hashes/scrypt.d.ts +98 -0
  42. package/node_modules/@noble/hashes/scrypt.js +304 -0
  43. package/node_modules/@noble/hashes/sha2.d.ts +176 -0
  44. package/node_modules/@noble/hashes/sha2.js +446 -0
  45. package/node_modules/@noble/hashes/sha3-addons.d.ts +533 -0
  46. package/node_modules/@noble/hashes/sha3-addons.js +973 -0
  47. package/node_modules/@noble/hashes/sha3.d.ts +208 -0
  48. package/node_modules/@noble/hashes/sha3.js +475 -0
  49. package/node_modules/@noble/hashes/src/_blake.ts +67 -0
  50. package/node_modules/@noble/hashes/src/_md.ts +227 -0
  51. package/node_modules/@noble/hashes/src/_u64.ts +111 -0
  52. package/node_modules/@noble/hashes/src/argon2.ts +693 -0
  53. package/node_modules/@noble/hashes/src/blake1.ts +677 -0
  54. package/node_modules/@noble/hashes/src/blake2.ts +648 -0
  55. package/node_modules/@noble/hashes/src/blake3.ts +344 -0
  56. package/node_modules/@noble/hashes/src/eskdf.ts +265 -0
  57. package/node_modules/@noble/hashes/src/hkdf.ts +161 -0
  58. package/node_modules/@noble/hashes/src/hmac.ts +130 -0
  59. package/node_modules/@noble/hashes/src/index.ts +33 -0
  60. package/node_modules/@noble/hashes/src/legacy.ts +361 -0
  61. package/node_modules/@noble/hashes/src/pbkdf2.ts +219 -0
  62. package/node_modules/@noble/hashes/src/scrypt.ts +375 -0
  63. package/node_modules/@noble/hashes/src/sha2.ts +486 -0
  64. package/node_modules/@noble/hashes/src/sha3-addons.ts +1157 -0
  65. package/node_modules/@noble/hashes/src/sha3.ts +525 -0
  66. package/node_modules/@noble/hashes/src/utils.ts +978 -0
  67. package/node_modules/@noble/hashes/src/webcrypto.ts +283 -0
  68. package/node_modules/@noble/hashes/utils.d.ts +560 -0
  69. package/node_modules/@noble/hashes/utils.js +687 -0
  70. package/node_modules/@noble/hashes/webcrypto.d.ts +121 -0
  71. package/node_modules/@noble/hashes/webcrypto.js +228 -0
  72. package/node_modules/@poe-code/agent-mcp-config/dist/apply.js +23 -9
  73. package/node_modules/@poe-code/config-mutations/README.md +2 -0
  74. package/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.js +4 -5
  75. package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.d.ts +3 -4
  76. package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.js +3 -3
  77. package/node_modules/@poe-code/config-mutations/dist/template/render.js +1 -1
  78. package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.d.ts +2 -2
  79. package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.js +3 -6
  80. package/node_modules/@poe-code/config-mutations/dist/types.d.ts +4 -2
  81. package/node_modules/@poe-code/process-runner/README.md +2 -1
  82. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.d.ts +1 -0
  83. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.js +1 -0
  84. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.workerd.d.ts +2 -0
  85. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.workerd.js +1 -0
  86. package/node_modules/@poe-code/process-runner/dist/types.d.ts +1 -1
  87. package/node_modules/@poe-code/process-runner/dist/workspace-transfer.d.ts +6 -5
  88. package/node_modules/@poe-code/process-runner/dist/workspace-transfer.js +67 -29
  89. package/node_modules/@poe-code/process-runner/package.json +13 -0
  90. package/node_modules/@poe-code/safe-fs/LICENSE +21 -0
  91. package/node_modules/@poe-code/safe-fs/PROVENANCE.json +428 -0
  92. package/node_modules/@poe-code/safe-fs/README.md +411 -0
  93. package/node_modules/@poe-code/safe-fs/dist/bridge/confinement.d.ts +3 -0
  94. package/node_modules/@poe-code/safe-fs/dist/bridge/confinement.js +171 -0
  95. package/node_modules/@poe-code/safe-fs/dist/bridge/filesystem.d.ts +93 -0
  96. package/node_modules/@poe-code/safe-fs/dist/bridge/filesystem.js +453 -0
  97. package/node_modules/@poe-code/safe-fs/dist/bridge/index.d.ts +7 -0
  98. package/node_modules/@poe-code/safe-fs/dist/bridge/index.js +19 -0
  99. package/node_modules/@poe-code/safe-fs/dist/bridge/stats.d.ts +4 -0
  100. package/node_modules/@poe-code/safe-fs/dist/bridge/stats.js +37 -0
  101. package/node_modules/@poe-code/safe-fs/dist/bridge/types.d.ts +81 -0
  102. package/node_modules/@poe-code/safe-fs/dist/bridge/types.js +1 -0
  103. package/node_modules/@poe-code/safe-fs/dist/bridge/values.d.ts +6 -0
  104. package/node_modules/@poe-code/safe-fs/dist/bridge/values.js +65 -0
  105. package/node_modules/@poe-code/safe-fs/dist/config/memory.d.ts +3 -0
  106. package/node_modules/@poe-code/safe-fs/dist/config/memory.js +7 -0
  107. package/node_modules/@poe-code/safe-fs/dist/config/real.d.ts +5 -0
  108. package/node_modules/@poe-code/safe-fs/dist/config/real.js +16 -0
  109. package/node_modules/@poe-code/safe-fs/dist/config/registry.d.ts +2 -0
  110. package/node_modules/@poe-code/safe-fs/dist/config/registry.js +15 -0
  111. package/node_modules/@poe-code/safe-fs/dist/config.d.ts +15 -0
  112. package/node_modules/@poe-code/safe-fs/dist/config.js +46 -0
  113. package/node_modules/@poe-code/safe-fs/dist/config.node.d.ts +2 -0
  114. package/node_modules/@poe-code/safe-fs/dist/config.node.js +11 -0
  115. package/node_modules/@poe-code/safe-fs/dist/config.portable.d.ts +3 -0
  116. package/node_modules/@poe-code/safe-fs/dist/config.portable.js +9 -0
  117. package/node_modules/@poe-code/safe-fs/dist/contracts/abort.d.ts +5 -0
  118. package/node_modules/@poe-code/safe-fs/dist/contracts/abort.js +34 -0
  119. package/node_modules/@poe-code/safe-fs/dist/contracts/cleanup.d.ts +1 -0
  120. package/node_modules/@poe-code/safe-fs/dist/contracts/cleanup.js +9 -0
  121. package/node_modules/@poe-code/safe-fs/dist/contracts/descriptor.d.ts +38 -0
  122. package/node_modules/@poe-code/safe-fs/dist/contracts/descriptor.js +1 -0
  123. package/node_modules/@poe-code/safe-fs/dist/contracts/errors.d.ts +53 -0
  124. package/node_modules/@poe-code/safe-fs/dist/contracts/errors.js +99 -0
  125. package/node_modules/@poe-code/safe-fs/dist/contracts/filesystem.d.ts +379 -0
  126. package/node_modules/@poe-code/safe-fs/dist/contracts/filesystem.js +1 -0
  127. package/node_modules/@poe-code/safe-fs/dist/contracts/index.d.ts +6 -0
  128. package/node_modules/@poe-code/safe-fs/dist/contracts/index.js +6 -0
  129. package/node_modules/@poe-code/safe-fs/dist/contracts/io.d.ts +12 -0
  130. package/node_modules/@poe-code/safe-fs/dist/contracts/io.js +321 -0
  131. package/node_modules/@poe-code/safe-fs/dist/contracts/object.d.ts +134 -0
  132. package/node_modules/@poe-code/safe-fs/dist/contracts/object.js +97 -0
  133. package/node_modules/@poe-code/safe-fs/dist/contracts/path.d.ts +3 -0
  134. package/node_modules/@poe-code/safe-fs/dist/contracts/path.js +2 -0
  135. package/node_modules/@poe-code/safe-fs/dist/contracts/portable-path.d.ts +21 -0
  136. package/node_modules/@poe-code/safe-fs/dist/contracts/portable-path.js +78 -0
  137. package/node_modules/@poe-code/safe-fs/dist/contracts/virtual-path.d.ts +15 -0
  138. package/node_modules/@poe-code/safe-fs/dist/contracts/virtual-path.js +162 -0
  139. package/node_modules/@poe-code/safe-fs/dist/core.d.ts +19 -0
  140. package/node_modules/@poe-code/safe-fs/dist/core.js +17 -0
  141. package/node_modules/@poe-code/safe-fs/dist/fs/capabilities.d.ts +10 -0
  142. package/node_modules/@poe-code/safe-fs/dist/fs/capabilities.js +216 -0
  143. package/node_modules/@poe-code/safe-fs/dist/fs/conditional-chmod.d.ts +7 -0
  144. package/node_modules/@poe-code/safe-fs/dist/fs/conditional-chmod.js +19 -0
  145. package/node_modules/@poe-code/safe-fs/dist/fs/descriptor.d.ts +21 -0
  146. package/node_modules/@poe-code/safe-fs/dist/fs/descriptor.js +279 -0
  147. package/node_modules/@poe-code/safe-fs/dist/fs/devices/index.d.ts +59 -0
  148. package/node_modules/@poe-code/safe-fs/dist/fs/devices/index.js +875 -0
  149. package/node_modules/@poe-code/safe-fs/dist/fs/devices/path.d.ts +7 -0
  150. package/node_modules/@poe-code/safe-fs/dist/fs/devices/path.js +250 -0
  151. package/node_modules/@poe-code/safe-fs/dist/fs/devices/stream.d.ts +6 -0
  152. package/node_modules/@poe-code/safe-fs/dist/fs/devices/stream.js +136 -0
  153. package/node_modules/@poe-code/safe-fs/dist/fs/directory-admission.d.ts +3 -0
  154. package/node_modules/@poe-code/safe-fs/dist/fs/directory-admission.js +14 -0
  155. package/node_modules/@poe-code/safe-fs/dist/fs/memory/atomic-view.d.ts +11 -0
  156. package/node_modules/@poe-code/safe-fs/dist/fs/memory/atomic-view.js +13 -0
  157. package/node_modules/@poe-code/safe-fs/dist/fs/memory/index.d.ts +186 -0
  158. package/node_modules/@poe-code/safe-fs/dist/fs/memory/index.js +3771 -0
  159. package/node_modules/@poe-code/safe-fs/dist/fs/memory/ledger.d.ts +26 -0
  160. package/node_modules/@poe-code/safe-fs/dist/fs/memory/ledger.js +96 -0
  161. package/node_modules/@poe-code/safe-fs/dist/fs/memory/limits.d.ts +13 -0
  162. package/node_modules/@poe-code/safe-fs/dist/fs/memory/limits.js +26 -0
  163. package/node_modules/@poe-code/safe-fs/dist/fs/memory/missing-target.d.ts +15 -0
  164. package/node_modules/@poe-code/safe-fs/dist/fs/memory/missing-target.js +144 -0
  165. package/node_modules/@poe-code/safe-fs/dist/fs/mount/comparison.d.ts +19 -0
  166. package/node_modules/@poe-code/safe-fs/dist/fs/mount/comparison.js +118 -0
  167. package/node_modules/@poe-code/safe-fs/dist/fs/mount/identity.d.ts +6 -0
  168. package/node_modules/@poe-code/safe-fs/dist/fs/mount/identity.js +29 -0
  169. package/node_modules/@poe-code/safe-fs/dist/fs/mount/index.d.ts +74 -0
  170. package/node_modules/@poe-code/safe-fs/dist/fs/mount/index.js +1291 -0
  171. package/node_modules/@poe-code/safe-fs/dist/fs/object-authority.d.ts +27 -0
  172. package/node_modules/@poe-code/safe-fs/dist/fs/object-authority.js +287 -0
  173. package/node_modules/@poe-code/safe-fs/dist/fs/object-publication/index.d.ts +45 -0
  174. package/node_modules/@poe-code/safe-fs/dist/fs/object-publication/index.js +531 -0
  175. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/index.d.ts +87 -0
  176. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/index.js +1185 -0
  177. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/memory-publication.d.ts +42 -0
  178. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/memory-publication.js +558 -0
  179. package/node_modules/@poe-code/safe-fs/dist/fs/path-namespace.d.ts +4 -0
  180. package/node_modules/@poe-code/safe-fs/dist/fs/path-namespace.js +63 -0
  181. package/node_modules/@poe-code/safe-fs/dist/fs/quota/index.d.ts +12 -0
  182. package/node_modules/@poe-code/safe-fs/dist/fs/quota/index.js +520 -0
  183. package/node_modules/@poe-code/safe-fs/dist/fs/readonly/index.d.ts +37 -0
  184. package/node_modules/@poe-code/safe-fs/dist/fs/readonly/index.js +208 -0
  185. package/node_modules/@poe-code/safe-fs/dist/fs/real/allocation.d.ts +1 -0
  186. package/node_modules/@poe-code/safe-fs/dist/fs/real/allocation.js +8 -0
  187. package/node_modules/@poe-code/safe-fs/dist/fs/real/index.d.ts +105 -0
  188. package/node_modules/@poe-code/safe-fs/dist/fs/real/index.js +1259 -0
  189. package/node_modules/@poe-code/safe-fs/dist/fs/s3/authority.d.ts +7 -0
  190. package/node_modules/@poe-code/safe-fs/dist/fs/s3/authority.js +38 -0
  191. package/node_modules/@poe-code/safe-fs/dist/fs/s3/filesystem.d.ts +130 -0
  192. package/node_modules/@poe-code/safe-fs/dist/fs/s3/filesystem.js +1137 -0
  193. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/bytes.d.ts +1 -0
  194. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/bytes.js +9 -0
  195. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/index.d.ts +2 -0
  196. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/index.js +1 -0
  197. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-fetch.d.ts +15 -0
  198. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-fetch.js +74 -0
  199. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-node.d.ts +4 -0
  200. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-node.js +111 -0
  201. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request.d.ts +17 -0
  202. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request.js +89 -0
  203. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/signature.d.ts +20 -0
  204. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/signature.js +76 -0
  205. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/transport.d.ts +3 -0
  206. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/transport.js +478 -0
  207. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/types.d.ts +30 -0
  208. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/types.js +1 -0
  209. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/xml.d.ts +14 -0
  210. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/xml.js +192 -0
  211. package/node_modules/@poe-code/safe-fs/dist/fs/s3/index.d.ts +8 -0
  212. package/node_modules/@poe-code/safe-fs/dist/fs/s3/index.js +4 -0
  213. package/node_modules/@poe-code/safe-fs/dist/fs/s3/key-order.d.ts +2 -0
  214. package/node_modules/@poe-code/safe-fs/dist/fs/s3/key-order.js +11 -0
  215. package/node_modules/@poe-code/safe-fs/dist/fs/s3/manifest-admission.d.ts +8 -0
  216. package/node_modules/@poe-code/safe-fs/dist/fs/s3/manifest-admission.js +167 -0
  217. package/node_modules/@poe-code/safe-fs/dist/fs/s3/mock.d.ts +48 -0
  218. package/node_modules/@poe-code/safe-fs/dist/fs/s3/mock.js +249 -0
  219. package/node_modules/@poe-code/safe-fs/dist/fs/s3/namespace.d.ts +13 -0
  220. package/node_modules/@poe-code/safe-fs/dist/fs/s3/namespace.js +400 -0
  221. package/node_modules/@poe-code/safe-fs/dist/fs/s3/registry.d.ts +10 -0
  222. package/node_modules/@poe-code/safe-fs/dist/fs/s3/registry.js +73 -0
  223. package/node_modules/@poe-code/safe-fs/dist/fs/s3/transport.d.ts +103 -0
  224. package/node_modules/@poe-code/safe-fs/dist/fs/s3/transport.js +28 -0
  225. package/node_modules/@poe-code/safe-fs/dist/fs/scoped.d.ts +19 -0
  226. package/node_modules/@poe-code/safe-fs/dist/fs/scoped.js +663 -0
  227. package/node_modules/@poe-code/safe-fs/dist/fs/staging-ancestry.d.ts +8 -0
  228. package/node_modules/@poe-code/safe-fs/dist/fs/staging-ancestry.js +115 -0
  229. package/node_modules/@poe-code/safe-fs/dist/fs/staging-cleanup.d.ts +5 -0
  230. package/node_modules/@poe-code/safe-fs/dist/fs/staging-cleanup.js +63 -0
  231. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/index.d.ts +2 -0
  232. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/index.js +1 -0
  233. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/resource-id.d.ts +18 -0
  234. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/resource-id.js +109 -0
  235. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/webdav.d.ts +141 -0
  236. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/webdav.js +1377 -0
  237. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/xml.d.ts +15 -0
  238. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/xml.js +59 -0
  239. package/node_modules/@poe-code/safe-fs/dist/index.d.ts +25 -0
  240. package/node_modules/@poe-code/safe-fs/dist/index.js +21 -0
  241. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/linux-x64-glibc.node +0 -0
  242. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/loader.d.ts +5 -0
  243. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/loader.mjs +120 -0
  244. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/manifest.json +46 -0
  245. package/node_modules/@poe-code/safe-fs/dist/node/filesystem.d.ts +19 -0
  246. package/node_modules/@poe-code/safe-fs/dist/node/filesystem.js +30 -0
  247. package/node_modules/@poe-code/safe-fs/dist/node/host.d.ts +3 -0
  248. package/node_modules/@poe-code/safe-fs/dist/node/host.js +78 -0
  249. package/node_modules/@poe-code/safe-fs/dist/node/index.d.ts +3 -0
  250. package/node_modules/@poe-code/safe-fs/dist/node/index.js +2 -0
  251. package/node_modules/@poe-code/safe-fs/dist/node/native-seek-unavailable.d.ts +1 -0
  252. package/node_modules/@poe-code/safe-fs/dist/node/native-seek-unavailable.js +5 -0
  253. package/node_modules/@poe-code/safe-fs/dist/node/native-seek.d.ts +3 -0
  254. package/node_modules/@poe-code/safe-fs/dist/node/native-seek.js +54 -0
  255. package/node_modules/@poe-code/safe-fs/dist/node/stats.d.ts +1 -0
  256. package/node_modules/@poe-code/safe-fs/dist/node/stats.js +1 -0
  257. package/node_modules/@poe-code/safe-fs/dist/node/values.d.ts +1 -0
  258. package/node_modules/@poe-code/safe-fs/dist/node/values.js +1 -0
  259. package/node_modules/@poe-code/safe-fs/dist/node-host.d.ts +1 -0
  260. package/node_modules/@poe-code/safe-fs/dist/node-host.js +1 -0
  261. package/node_modules/@poe-code/safe-fs/dist/node-unavailable.d.ts +1 -0
  262. package/node_modules/@poe-code/safe-fs/dist/node-unavailable.js +1 -0
  263. package/node_modules/@poe-code/safe-fs/dist/package.json +29 -0
  264. package/node_modules/@poe-code/safe-fs/dist/platform/browser-path.d.ts +1 -0
  265. package/node_modules/@poe-code/safe-fs/dist/platform/browser-path.js +1 -0
  266. package/node_modules/@poe-code/safe-fs/dist/platform/browser.d.ts +26 -0
  267. package/node_modules/@poe-code/safe-fs/dist/platform/browser.js +58 -0
  268. package/node_modules/@poe-code/safe-fs/dist/platform/node-path.d.ts +1 -0
  269. package/node_modules/@poe-code/safe-fs/dist/platform/node-path.js +1 -0
  270. package/node_modules/@poe-code/safe-fs/dist/platform/node.d.ts +26 -0
  271. package/node_modules/@poe-code/safe-fs/dist/platform/node.js +64 -0
  272. package/node_modules/@poe-code/safe-fs/dist/platform/transport-budget.d.ts +9 -0
  273. package/node_modules/@poe-code/safe-fs/dist/platform/transport-budget.js +17 -0
  274. package/node_modules/@poe-code/safe-fs/dist/python/emscripten.d.ts +15 -0
  275. package/node_modules/@poe-code/safe-fs/dist/python/emscripten.js +357 -0
  276. package/node_modules/@poe-code/safe-fs/dist/python/filesystem.d.ts +51 -0
  277. package/node_modules/@poe-code/safe-fs/dist/python/filesystem.js +243 -0
  278. package/node_modules/@poe-code/safe-fs/dist/python/flags.d.ts +3 -0
  279. package/node_modules/@poe-code/safe-fs/dist/python/flags.js +14 -0
  280. package/node_modules/@poe-code/safe-fs/dist/python/index.d.ts +9 -0
  281. package/node_modules/@poe-code/safe-fs/dist/python/index.js +5 -0
  282. package/node_modules/@poe-code/safe-fs/dist/python/native.d.ts +18 -0
  283. package/node_modules/@poe-code/safe-fs/dist/python/native.js +446 -0
  284. package/node_modules/@poe-code/safe-fs/dist/python/request.d.ts +2 -0
  285. package/node_modules/@poe-code/safe-fs/dist/python/request.js +61 -0
  286. package/node_modules/@poe-code/safe-fs/dist/python/stat.d.ts +8 -0
  287. package/node_modules/@poe-code/safe-fs/dist/python/stat.js +34 -0
  288. package/node_modules/@poe-code/safe-fs/dist/runtime-core.d.ts +27 -0
  289. package/node_modules/@poe-code/safe-fs/dist/runtime-core.js +57 -0
  290. package/node_modules/@poe-code/safe-fs/dist/testing/atomic-filesystem.d.ts +16 -0
  291. package/node_modules/@poe-code/safe-fs/dist/testing/atomic-filesystem.js +496 -0
  292. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-control.d.ts +23 -0
  293. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-control.js +39 -0
  294. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-metrics.d.ts +31 -0
  295. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-metrics.js +143 -0
  296. package/node_modules/@poe-code/safe-fs/dist/testing/object-publication.d.ts +19 -0
  297. package/node_modules/@poe-code/safe-fs/dist/testing/object-publication.js +209 -0
  298. package/node_modules/@poe-code/safe-fs/dist/xml.d.ts +1 -0
  299. package/node_modules/@poe-code/safe-fs/dist/xml.js +1 -0
  300. package/node_modules/@poe-code/safe-fs/package.json +189 -0
  301. package/node_modules/@poe-code/task-list/README.md +2 -0
  302. package/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.d.ts +1 -1
  303. package/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.js +11 -4
  304. package/node_modules/@poe-code/task-list/dist/backends/markdown-dir.js +2 -2
  305. package/node_modules/@poe-code/task-list/dist/backends/utils.js +5 -7
  306. package/node_modules/@poe-code/task-list/dist/backends/yaml-file.js +1 -1
  307. package/node_modules/@poe-code/task-list/dist/default-host.d.ts +2 -0
  308. package/node_modules/@poe-code/task-list/dist/default-host.js +2 -0
  309. package/node_modules/@poe-code/task-list/dist/default-host.workerd.d.ts +4 -0
  310. package/node_modules/@poe-code/task-list/dist/default-host.workerd.js +6 -0
  311. package/node_modules/@poe-code/task-list/dist/filesystem.d.ts +3 -0
  312. package/node_modules/@poe-code/task-list/dist/filesystem.js +32 -0
  313. package/node_modules/@poe-code/task-list/dist/move.js +3 -3
  314. package/node_modules/@poe-code/task-list/dist/open.js +2 -5
  315. package/node_modules/@poe-code/task-list/dist/paths.d.ts +12 -0
  316. package/node_modules/@poe-code/task-list/dist/paths.js +7 -0
  317. package/node_modules/@poe-code/task-list/dist/types.d.ts +6 -5
  318. package/node_modules/@poe-code/task-list/package.json +9 -0
  319. package/node_modules/@poe-code/terminal-text/LICENSE +21 -0
  320. package/node_modules/@poe-code/terminal-text/README.md +12 -0
  321. package/node_modules/@poe-code/terminal-text/dist/index.d.ts +2 -0
  322. package/node_modules/@poe-code/terminal-text/dist/index.js +20 -0
  323. package/node_modules/@poe-code/terminal-text/package.json +22 -0
  324. package/node_modules/@poe-code/xml-ast/LICENSE +21 -0
  325. package/node_modules/@poe-code/xml-ast/README.md +28 -0
  326. package/node_modules/@poe-code/xml-ast/dist/index.d.ts +47 -0
  327. package/node_modules/@poe-code/xml-ast/dist/index.js +635 -0
  328. package/node_modules/@poe-code/xml-ast/package.json +25 -0
  329. package/node_modules/auth-store/README.md +35 -0
  330. package/node_modules/auth-store/dist/index.browser.d.ts +4 -0
  331. package/node_modules/auth-store/dist/index.browser.js +2 -0
  332. package/node_modules/auth-store/dist/provider-store.d.ts +1 -1
  333. package/node_modules/auth-store/dist/safe-fs-secret-store.d.ts +21 -0
  334. package/node_modules/auth-store/dist/safe-fs-secret-store.js +119 -0
  335. package/node_modules/auth-store/dist/secret-store.d.ts +12 -0
  336. package/node_modules/auth-store/dist/secret-store.js +1 -0
  337. package/node_modules/auth-store/dist/transaction-lock.d.ts +2 -4
  338. package/node_modules/auth-store/dist/types.d.ts +2 -9
  339. package/node_modules/auth-store/package.json +16 -2
  340. package/node_modules/tiny-http-mcp-server/dist/composition.json +16 -1
  341. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/README.md +25 -0
  342. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/authorization-state.js +4 -4
  343. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/default-oauth-client-provider.js +6 -40
  344. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/oauth-form.d.ts +10 -0
  345. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/oauth-form.js +20 -0
  346. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/pkce.js +4 -3
  347. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/register-client.d.ts +14 -0
  348. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/register-client.js +53 -0
  349. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/resumable.d.ts +16 -2
  350. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/resumable.js +29 -9
  351. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/revoke-token.d.ts +12 -0
  352. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/revoke-token.js +23 -0
  353. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/token-endpoint.js +6 -19
  354. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/http-fetch.js +1 -1
  355. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.browser.d.ts +6 -2
  356. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.browser.js +5 -1
  357. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.d.ts +5 -2
  358. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.js +4 -1
  359. package/node_modules/tiny-http-mcp-server/package.json +4 -4
  360. package/node_modules/tiny-mcp-client/README.md +2 -0
  361. package/node_modules/tiny-mcp-client/dist/index.browser.d.ts +25 -23
  362. package/node_modules/tiny-mcp-client/dist/index.browser.js +116 -1
  363. package/node_modules/tiny-mcp-client/dist/index.d.ts +25 -23
  364. package/node_modules/tiny-mcp-client/dist/index.js +1034 -561
  365. package/node_modules/tiny-mcp-client/package.json +15 -0
  366. package/node_modules/tiny-stdio-mcp-server/dist/composition.json +1 -1
  367. package/node_modules/toolcraft-design/dist/components/table.js +6 -0
  368. package/node_modules/toolcraft-design/dist/escape-terminal-text.d.ts +1 -2
  369. package/node_modules/toolcraft-design/dist/escape-terminal-text.js +1 -20
  370. package/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.js +2 -1
  371. package/node_modules/toolcraft-design/dist/terminal-markdown/parser.js +2 -1
  372. package/node_modules/toolcraft-schema/dist/json-schema/utils.js +3 -0
  373. package/node_modules/toolcraft-schema/package.json +1 -1
  374. package/package.json +32 -7
@@ -0,0 +1,15 @@
1
+ import { type XmlLimits as DocumentLimits } from "../../xml.js";
2
+ import type { XmlElement } from "../../xml.js";
3
+ export type { XmlElement } from "../../xml.js";
4
+ export interface XmlLimits extends Omit<DocumentLimits, "onElement"> {
5
+ readonly maxResponses?: number;
6
+ }
7
+ export declare class XmlResponseLimitError extends SyntaxError {
8
+ }
9
+ export declare class XmlResourceLimitError extends SyntaxError {
10
+ }
11
+ export declare function parseXml(input: string, limits?: XmlLimits): XmlElement;
12
+ export declare function parseXmlSteps(input: string, limits?: XmlLimits): Generator<number, XmlElement, void>;
13
+ export declare function davChildren(element: XmlElement, localName: string): XmlElement[];
14
+ export declare function davChild(element: XmlElement, localName: string): XmlElement | undefined;
15
+ export declare function scalar(element: XmlElement): string;
@@ -0,0 +1,59 @@
1
+ import { parseXmlSteps as parseDocumentSteps, XmlLimitError } from "../../xml.js";
2
+ export class XmlResponseLimitError extends SyntaxError {
3
+ }
4
+ export class XmlResourceLimitError extends SyntaxError {
5
+ }
6
+ function invalid(message) { throw new SyntaxError(`Invalid WebDAV XML: ${message}`); }
7
+ export function parseXml(input, limits = {}) {
8
+ const parser = parseXmlSteps(input, limits);
9
+ try {
10
+ let step = parser.next();
11
+ while (!step.done)
12
+ step = parser.next();
13
+ return step.value;
14
+ }
15
+ catch (error) {
16
+ if (error instanceof XmlResourceLimitError)
17
+ throw new SyntaxError(error.message);
18
+ throw error;
19
+ }
20
+ }
21
+ export function* parseXmlSteps(input, limits = {}) {
22
+ const { maxResponses, ...documentLimits } = limits;
23
+ if (maxResponses !== undefined && maxResponses !== Infinity && (!Number.isSafeInteger(maxResponses) || maxResponses < 1)) {
24
+ throw new RangeError("XML limits must be positive integers or Infinity");
25
+ }
26
+ let responses = 0;
27
+ try {
28
+ return yield* parseDocumentSteps(input, { ...documentLimits, retainContent: false,
29
+ onElement(element, parent, depth) {
30
+ if (maxResponses !== undefined && depth === 2 && parent?.namespace === "DAV:" && parent.localName === "multistatus"
31
+ && element.namespace === "DAV:" && element.localName === "response" && ++responses > maxResponses) {
32
+ throw new XmlResponseLimitError("WebDAV XML response limit exceeded");
33
+ }
34
+ }
35
+ });
36
+ }
37
+ catch (error) {
38
+ if (error instanceof XmlLimitError)
39
+ throw new XmlResourceLimitError(`Invalid WebDAV XML: ${error.message}`);
40
+ if (error instanceof SyntaxError && error.message.startsWith("Invalid XML:")) {
41
+ error.message = error.message.replace("Invalid XML:", "Invalid WebDAV XML:");
42
+ }
43
+ throw error;
44
+ }
45
+ }
46
+ export function davChildren(element, localName) {
47
+ return element.children.filter((child) => child.namespace === "DAV:" && child.localName === localName);
48
+ }
49
+ export function davChild(element, localName) {
50
+ const children = davChildren(element, localName);
51
+ if (children.length > 1)
52
+ invalid(`duplicate DAV:${localName}`);
53
+ return children[0];
54
+ }
55
+ export function scalar(element) {
56
+ if (element.children.length)
57
+ invalid("expected text-only element");
58
+ return element.text.trim();
59
+ }
@@ -0,0 +1,25 @@
1
+ export * from "./contracts/index.js";
2
+ export * from "./bridge/index.js";
3
+ export { ObjectAuthority } from "./fs/object-authority.js";
4
+ export * from "./python/index.js";
5
+ export { openFileDescriptor } from "./fs/descriptor.js";
6
+ export type { DescriptorBackend, DescriptorOpenOptions } from "./fs/descriptor.js";
7
+ export * from "./fs/memory/index.js";
8
+ export * from "./fs/devices/index.js";
9
+ export * from "./fs/real/index.js";
10
+ export * from "./fs/s3/index.js";
11
+ export type { S3StreamGetInput, S3StreamGetOutput, S3StreamPutInput } from "./fs/s3/transport.js";
12
+ export * from "./fs/s3/http/index.js";
13
+ export * from "./fs/webdav/index.js";
14
+ export * from "./fs/readonly/index.js";
15
+ export * from "./fs/mount/index.js";
16
+ export * from "./fs/overlay/index.js";
17
+ export * from "./fs/quota/index.js";
18
+ export * from "./fs/object-publication/index.js";
19
+ export { scopeFileSystem, retainFileSystemCleanup } from "./fs/scoped.js";
20
+ export type { RetainedFileSystemCleanupView, RetainedFileSystemCleanupOptions } from "./fs/scoped.js";
21
+ export * from "./node/index.js";
22
+ export { createFileSystem, readConfigRecord, validateFileSystemConfig } from "./config.js";
23
+ export type { FileSystemConfig, FileSystemAdapterDescriptor, FileSystemAdapterRegistry } from "./config.js";
24
+ export { createNodeFileSystemAdapterRegistry } from "./config.node.js";
25
+ export { createPortableFileSystemAdapterRegistry } from "./config.portable.js";
@@ -0,0 +1,21 @@
1
+ export * from "./contracts/index.js";
2
+ export * from "./bridge/index.js";
3
+ export { ObjectAuthority } from "./fs/object-authority.js";
4
+ export * from "./python/index.js";
5
+ export { openFileDescriptor } from "./fs/descriptor.js";
6
+ export * from "./fs/memory/index.js";
7
+ export * from "./fs/devices/index.js";
8
+ export * from "./fs/real/index.js";
9
+ export * from "./fs/s3/index.js";
10
+ export * from "./fs/s3/http/index.js";
11
+ export * from "./fs/webdav/index.js";
12
+ export * from "./fs/readonly/index.js";
13
+ export * from "./fs/mount/index.js";
14
+ export * from "./fs/overlay/index.js";
15
+ export * from "./fs/quota/index.js";
16
+ export * from "./fs/object-publication/index.js";
17
+ export { scopeFileSystem, retainFileSystemCleanup } from "./fs/scoped.js";
18
+ export * from "./node/index.js";
19
+ export { createFileSystem, readConfigRecord, validateFileSystemConfig } from "./config.js";
20
+ export { createNodeFileSystemAdapterRegistry } from "./config.node.js";
21
+ export { createPortableFileSystemAdapterRegistry } from "./config.portable.js";
@@ -0,0 +1,5 @@
1
+ export interface NativeSeekBinding {
2
+ seekEnd(descriptor: number): Promise<{ offset: bigint; errno: number }>;
3
+ }
4
+
5
+ export function loadBinding(): Promise<NativeSeekBinding>;
@@ -0,0 +1,120 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { createHash } from "node:crypto";
3
+ import { constants } from "node:fs";
4
+ import { open } from "node:fs/promises";
5
+ import { createRequire } from "node:module";
6
+ import process from "node:process";
7
+ import { fileURLToPath } from "node:url";
8
+
9
+ const maxManifestBytes = 16384;
10
+ const maxBinaryBytes = 1048576;
11
+ let loading;
12
+
13
+ function failure(code, message) {
14
+ return Object.assign(new Error(message), { code });
15
+ }
16
+
17
+ function identifier(value) {
18
+ return typeof value === "string" && value.length > 0 && value.length <= 32
19
+ && [...value].every(character => "abcdefghijklmnopqrstuvwxyz0123456789_".includes(character));
20
+ }
21
+
22
+ function decimal(value) {
23
+ return typeof value === "string" && value.length > 0 && value.length <= 6
24
+ && [...value].every(character => "0123456789".includes(character));
25
+ }
26
+
27
+ function libcVersion(value) {
28
+ if (typeof value !== "string") return undefined;
29
+ const parts = value.split(".");
30
+ return parts.length === 2 && parts.every(decimal) ? parts.map(Number) : undefined;
31
+ }
32
+
33
+ function atLeast(version, minimum) {
34
+ return version[0] > minimum[0] || version[0] === minimum[0] && version[1] >= minimum[1];
35
+ }
36
+
37
+ async function readAsset(filename, limit) {
38
+ const handle = await open(filename, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
39
+ let failed = false;
40
+ let primary;
41
+ let bytes;
42
+ try {
43
+ const stat = await handle.stat();
44
+ if (!stat.isFile()) throw failure("EINVAL", "Native asset must be a regular file");
45
+ if (!Number.isSafeInteger(stat.size) || stat.size <= 0) throw failure("EINVAL", "Invalid native asset size");
46
+ if (stat.size > limit) throw failure("EFBIG", "Native asset exceeds its byte limit");
47
+ bytes = Buffer.alloc(stat.size);
48
+ let offset = 0;
49
+ while (offset < bytes.length) {
50
+ const remaining = bytes.length - offset;
51
+ const { bytesRead } = await handle.read(bytes, offset, remaining, offset);
52
+ if (!Number.isSafeInteger(bytesRead) || bytesRead <= 0 || bytesRead > remaining) throw failure("EIO", "Incomplete native asset read");
53
+ offset += bytesRead;
54
+ }
55
+ const { bytesRead } = await handle.read(Buffer.alloc(1), 0, 1, offset);
56
+ if (bytesRead !== 0) throw failure("EIO", "Native asset changed while reading");
57
+ } catch (error) {
58
+ failed = true;
59
+ primary = error;
60
+ }
61
+ try { await handle.close(); }
62
+ catch (error) { if (!failed) throw error; }
63
+ if (failed) throw primary;
64
+ return bytes;
65
+ }
66
+
67
+ function validateManifest(value) {
68
+ const invalid = () => { throw failure("EINVAL", "Invalid native seek manifest"); };
69
+ if (value === null || typeof value !== "object" || Array.isArray(value)
70
+ || value.version !== 1 || value.napi !== 6 || value.maxBinaryBytes !== maxBinaryBytes
71
+ || !Array.isArray(value.targets)) invalid();
72
+ const selected = new Set();
73
+ for (const target of value.targets) {
74
+ if (target === null || typeof target !== "object" || Array.isArray(target)
75
+ || !identifier(target.platform) || !identifier(target.arch) || !identifier(target.libc)
76
+ || !Number.isSafeInteger(target.size) || target.size <= 0 || target.size > maxBinaryBytes
77
+ || typeof target.sha256 !== "string" || target.sha256.length !== 64
78
+ || ![...target.sha256].every(character => "0123456789abcdef".includes(character))) invalid();
79
+ const minimum = libcVersion(target.minimumLibc);
80
+ if (!minimum || !atLeast(minimum, [2, 31])) invalid();
81
+ const key = `${target.platform}-${target.arch}-${target.libc}`;
82
+ if (selected.has(key)) invalid();
83
+ selected.add(key);
84
+ }
85
+ return value;
86
+ }
87
+
88
+ async function load() {
89
+ const platform = process.platform;
90
+ const arch = process.arch;
91
+ const napi = process.versions.napi;
92
+ if (platform !== "linux" || arch !== "x64" || !decimal(napi) || Number(napi) < 6) {
93
+ throw failure("ENOTSUP", "Native seek is unavailable for this runtime");
94
+ }
95
+ const report = process.report;
96
+ const getReport = report?.getReport;
97
+ if (typeof getReport !== "function") throw failure("ENOTSUP", "Native seek requires a known glibc runtime");
98
+ const version = libcVersion(Reflect.apply(getReport, report, [])?.header?.glibcVersionRuntime);
99
+ if (!version || !atLeast(version, [2, 31])) throw failure("ENOTSUP", "Native seek requires glibc 2.31 or newer");
100
+ const manifestPath = fileURLToPath(new URL("manifest.json", import.meta.url));
101
+ const manifest = validateManifest(JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(await readAsset(manifestPath, maxManifestBytes))));
102
+ const target = manifest.targets.find(candidate => candidate.platform === platform && candidate.arch === arch && candidate.libc === "glibc");
103
+ if (!target || !atLeast(version, libcVersion(target.minimumLibc))) throw failure("ENOTSUP", "Native seek has no compatible asset");
104
+ const filename = fileURLToPath(new URL(`${target.platform}-${target.arch}-${target.libc}.node`, import.meta.url));
105
+ const bytes = await readAsset(filename, maxBinaryBytes);
106
+ if (bytes.length !== target.size || createHash("sha256").update(bytes).digest("hex") !== target.sha256) {
107
+ throw failure("EIO", "Native seek asset integrity check failed");
108
+ }
109
+ const require = createRequire(import.meta.url);
110
+ const binding = require(filename);
111
+ if (binding === null || typeof binding !== "object" || typeof binding.seekEnd !== "function") {
112
+ throw failure("EIO", "Invalid native seek binding");
113
+ }
114
+ return binding;
115
+ }
116
+
117
+ export function loadBinding() {
118
+ loading ??= Promise.resolve().then(load);
119
+ return loading;
120
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "version": 1,
3
+ "napi": 6,
4
+ "maxBinaryBytes": 1048576,
5
+ "targets": [
6
+ {
7
+ "platform": "linux",
8
+ "arch": "x64",
9
+ "libc": "glibc",
10
+ "minimumLibc": "2.31",
11
+ "size": 17064,
12
+ "sha256": "7e0b6e24f5e49a0a058e3d95c2aee8b438a753d4f36052537b91084a81ef0d53"
13
+ }
14
+ ],
15
+ "build": {
16
+ "sourceSha256": "e689d83731bc7ce2ab9632d5927f7f6c8af05a5258b057efa9c1566a888ced6e",
17
+ "loaderSha256": "337c49bc6744b137633eeb1fd19c19568fdc6d5eb0dfdc34d6bf45dd02573e38",
18
+ "declarationSha256": "19105e59e4bcc7a1706f74d261a5b09d2404eccaa27cc0bbc9d2af0dc9ef3684",
19
+ "headers": {
20
+ "version": "1.9.0",
21
+ "files": {
22
+ "node_api.h": {
23
+ "size": 10370,
24
+ "sha256": "2d4560831e525b47b060ec8a0864ab73993df9e20215ce9f0fe7b24cd31af32a"
25
+ },
26
+ "node_api_types.h": {
27
+ "size": 1930,
28
+ "sha256": "a25356630d3058f0a0c8937d9f297e9471e037fda58c2696d8a505c2bd99cb00"
29
+ },
30
+ "js_native_api.h": {
31
+ "size": 31081,
32
+ "sha256": "0953395662ea63697cd7a77a9320d94aa2829f9c9569abf3a74272b7a2923ce8"
33
+ },
34
+ "js_native_api_types.h": {
35
+ "size": 6896,
36
+ "sha256": "e785c16a9ce200e801242275cfd59090b029b5dae309a1a258f48d1570bf35ab"
37
+ }
38
+ }
39
+ },
40
+ "compiler": {
41
+ "path": "/usr/bin/cc",
42
+ "sha256": "1b99826121ae6682a634e5efe09bd3e3df58ce58e0b28f849114ab5b89139c26",
43
+ "version": "x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nCopyright (C) 2023 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,19 @@
1
+ import type * as FsPromises from "node:fs/promises";
2
+ import type { FileSystem, FsOptions } from "../contracts/filesystem.js";
3
+ import { FileSystemBridge } from "../bridge/filesystem.js";
4
+ export type NodeFsImplementation = Pick<typeof FsPromises, "access" | "appendFile" | "chmod" | "copyFile" | "cp" | "link" | "lstat" | "mkdir" | "mkdtemp" | "readFile" | "readdir" | "readlink" | "realpath" | "unlink" | "rename" | "rm" | "rmdir" | "stat" | "symlink" | "truncate" | "utimes" | "writeFile">;
5
+ export interface NodeFsBridgeOptions {
6
+ readonly cwd?: string;
7
+ /** Optional confinement boundary; defaults to cwd. */
8
+ readonly root?: string;
9
+ readonly signal?: AbortSignal;
10
+ /** Trusted per-read backend byte cap, enforced before copying or decoding. */
11
+ readonly readFileMaxBytes?: number;
12
+ /** Reserve host resources; release after decoding and actual backend settlement, including cancellation. */
13
+ readonly reserveReadFile?: () => () => void;
14
+ }
15
+ export interface NodeFsBridgeFileSystem extends FileSystem {
16
+ rmdir?(path: string, options?: FsOptions): Promise<void>;
17
+ }
18
+ export declare const getNodeFsBridgeProvider: typeof FileSystemBridge.getProvider;
19
+ export declare function createNodeFsBridge(fs: FileSystem, options?: NodeFsBridgeOptions): NodeFsImplementation;
@@ -0,0 +1,30 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { randomBytes } from "node:crypto";
3
+ import { posix } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { FileSystemBridge } from "../bridge/filesystem.js";
6
+ export const getNodeFsBridgeProvider = FileSystemBridge.getProvider;
7
+ export function createNodeFsBridge(fs, options = {}) {
8
+ const bridge = new FileSystemBridge(fs, options, {
9
+ codec: {
10
+ isEncoding: Buffer.isEncoding,
11
+ encode(text, encoding) {
12
+ if (!Buffer.isEncoding(encoding))
13
+ throw new TypeError("Invalid encoding");
14
+ return Buffer.from(text, encoding);
15
+ },
16
+ decode(bytes, encoding) {
17
+ if (!Buffer.isEncoding(encoding))
18
+ throw new TypeError("Invalid encoding");
19
+ return Buffer.from(bytes).toString(encoding);
20
+ }
21
+ },
22
+ copyBytes: Buffer.from,
23
+ pathValue(value) {
24
+ return value instanceof URL ? fileURLToPath(value) : Buffer.isBuffer(value) ? value.toString("utf8") : value;
25
+ },
26
+ randomSuffix() { return randomBytes(6).toString("hex").slice(0, 6); },
27
+ paths: posix
28
+ });
29
+ return bridge;
30
+ }
@@ -0,0 +1,3 @@
1
+ import type { FileSystem } from "../contracts/filesystem.js";
2
+ /** Trusted host access with native paths and symlink semantics; this is not a rooted sandbox. */
3
+ export declare function createHostFileSystem(): FileSystem;
@@ -0,0 +1,78 @@
1
+ import * as fs from "node:fs/promises";
2
+ function snapshot(stat) {
3
+ return {
4
+ type: stat.isDirectory()
5
+ ? "directory"
6
+ : stat.isSymbolicLink()
7
+ ? "symlink"
8
+ : stat.isFile()
9
+ ? "file"
10
+ : "character",
11
+ size: stat.size,
12
+ mode: stat.mode,
13
+ mtimeMs: stat.mtimeMs,
14
+ atimeMs: stat.atimeMs,
15
+ ctimeMs: stat.ctimeMs,
16
+ birthtimeMs: stat.birthtimeMs
17
+ };
18
+ }
19
+ /** Trusted host access with native paths and symlink semantics; this is not a rooted sandbox. */
20
+ export function createHostFileSystem() {
21
+ async function perform(options, action) {
22
+ options?.signal?.throwIfAborted();
23
+ const result = await action();
24
+ options?.signal?.throwIfAborted();
25
+ return result;
26
+ }
27
+ return {
28
+ capabilities: {
29
+ read: true,
30
+ write: true,
31
+ append: true,
32
+ stat: true,
33
+ readdir: true,
34
+ mkdir: true,
35
+ recursiveMkdir: true,
36
+ rename: true,
37
+ remove: true,
38
+ removeDirectory: true,
39
+ recursiveRemove: true,
40
+ symlinks: true,
41
+ hardlinks: true,
42
+ permissions: true,
43
+ timestamps: true,
44
+ exclusiveCreate: true
45
+ },
46
+ readFile: (path, options) => perform(options, () => fs.readFile(path, options?.signal ? { signal: options.signal } : undefined)),
47
+ writeFile: (path, data, options) => perform(options, () => fs.writeFile(path, data, options)),
48
+ appendFile: (path, data, options) => perform(options, () => fs.appendFile(path, data, options)),
49
+ stat: (path, options) => perform(options, async () => snapshot(await fs.stat(path))),
50
+ lstat: (path, options) => perform(options, async () => snapshot(await fs.lstat(path))),
51
+ readdir: (path, options) => perform(options, async () => (await fs.readdir(path, { withFileTypes: true })).map((entry) => ({
52
+ name: entry.name,
53
+ type: entry.isDirectory()
54
+ ? "directory"
55
+ : entry.isSymbolicLink()
56
+ ? "symlink"
57
+ : entry.isFile()
58
+ ? "file"
59
+ : "character"
60
+ }))),
61
+ mkdir: (path, options) => perform(options, async () => {
62
+ await fs.mkdir(path, options);
63
+ }),
64
+ rm: (path, options) => perform(options, () => fs.rm(path, options)),
65
+ unlink: (path, options) => perform(options, () => fs.unlink(path)),
66
+ rmdir: (path, options) => perform(options, () => fs.rmdir(path)),
67
+ rename: (source, destination, options) => perform(options, () => fs.rename(source, destination)),
68
+ copyFile: (source, destination, options) => perform(options, () => fs.copyFile(source, destination, options?.exclusive ? fs.constants.COPYFILE_EXCL : 0)),
69
+ realpath: (path, options) => perform(options, () => fs.realpath(path)),
70
+ access: (path, mode, options) => perform(options, () => fs.access(path, mode)),
71
+ readlink: (path, options) => perform(options, () => fs.readlink(path)),
72
+ symlink: (target, path, options) => perform(options, () => fs.symlink(target, path)),
73
+ link: (source, destination, options) => perform(options, () => fs.link(source, destination)),
74
+ chmod: (path, mode, options) => perform(options, () => fs.chmod(path, mode)),
75
+ utimes: (path, atimeMs, mtimeMs, options) => perform(options, () => fs.utimes(path, atimeMs / 1000, mtimeMs / 1000)),
76
+ truncate: (path, length, options) => perform(options, () => fs.truncate(path, length))
77
+ };
78
+ }
@@ -0,0 +1,3 @@
1
+ export { createNodeFsBridge, getNodeFsBridgeProvider } from "./filesystem.js";
2
+ export type { NodeFsBridgeOptions, NodeFsBridgeFileSystem, NodeFsImplementation } from "./filesystem.js";
3
+ export { createHostFileSystem } from "./host.js";
@@ -0,0 +1,2 @@
1
+ export { createNodeFsBridge, getNodeFsBridgeProvider } from "./filesystem.js";
2
+ export { createHostFileSystem } from "./host.js";
@@ -0,0 +1 @@
1
+ export declare function loadBinding(): Promise<never>;
@@ -0,0 +1,5 @@
1
+ import { FsError } from "../contracts/errors.js";
2
+ // Workers support native file reads, but cannot load the optional Node addon.
3
+ export async function loadBinding() {
4
+ throw new FsError("ENOTSUP", { message: "Native seek is unavailable in Workers" });
5
+ }
@@ -0,0 +1,3 @@
1
+ import type { NativeSeekBinding } from "#safe-fs-native-seek";
2
+ export declare function loadNativeSeekBinding(signal?: AbortSignal): Promise<NativeSeekBinding>;
3
+ export declare function callNativeSeekEnd(binding: NativeSeekBinding, seek: NativeSeekBinding["seekEnd"], descriptor: number): Promise<bigint>;
@@ -0,0 +1,54 @@
1
+ import { getSystemErrorName } from "node:util";
2
+ import { FsError, isErrnoCode } from "../contracts/errors.js";
3
+ export async function loadNativeSeekBinding(signal) {
4
+ signal?.throwIfAborted();
5
+ const initialization = (async () => {
6
+ const module = await import("#safe-fs-native-seek");
7
+ signal?.throwIfAborted();
8
+ const load = module.loadBinding;
9
+ signal?.throwIfAborted();
10
+ if (typeof load !== "function")
11
+ throw new FsError("EIO");
12
+ const binding = await Reflect.apply(load, module, []);
13
+ signal?.throwIfAborted();
14
+ if (binding === null || typeof binding !== "object" || Array.isArray(binding))
15
+ throw new FsError("EIO");
16
+ return binding;
17
+ })();
18
+ if (!signal)
19
+ return initialization;
20
+ return new Promise((resolve, reject) => {
21
+ const abort = () => { signal.removeEventListener("abort", abort); reject(signal.reason); };
22
+ initialization.then(binding => {
23
+ signal.removeEventListener("abort", abort);
24
+ if (signal.aborted)
25
+ reject(signal.reason);
26
+ else
27
+ resolve(binding);
28
+ }, error => {
29
+ signal.removeEventListener("abort", abort);
30
+ reject(signal.aborted ? signal.reason : error);
31
+ });
32
+ signal.addEventListener("abort", abort, { once: true });
33
+ if (signal.aborted)
34
+ abort();
35
+ });
36
+ }
37
+ export async function callNativeSeekEnd(binding, seek, descriptor) {
38
+ const result = await Reflect.apply(seek, binding, [descriptor]);
39
+ if (result === null || typeof result !== "object" || Array.isArray(result))
40
+ throw new FsError("EIO");
41
+ const { offset, errno } = result;
42
+ if (typeof offset !== "bigint" || typeof errno !== "number" || !Number.isSafeInteger(errno)
43
+ || errno < 0 || errno > 2147483647)
44
+ throw new FsError("EIO");
45
+ if (errno !== 0) {
46
+ if (offset !== -1n)
47
+ throw new FsError("EIO");
48
+ const code = getSystemErrorName(-errno);
49
+ throw new FsError(isErrnoCode(code) ? code : "EIO");
50
+ }
51
+ if (offset < 0n || offset > 9223372036854775807n)
52
+ throw new FsError("EIO");
53
+ return offset;
54
+ }
@@ -0,0 +1 @@
1
+ export { bridgeDirent as nodeDirent, bridgeStats as nodeStats } from "../bridge/stats.js";
@@ -0,0 +1 @@
1
+ export { bridgeDirent as nodeDirent, bridgeStats as nodeStats } from "../bridge/stats.js";
@@ -0,0 +1 @@
1
+ export { abortError, booleanValue, checkSignal, onlyKeys, record, withSignal } from "../bridge/values.js";
@@ -0,0 +1 @@
1
+ export { abortError, booleanValue, checkSignal, onlyKeys, record, withSignal } from "../bridge/values.js";
@@ -0,0 +1 @@
1
+ export * from "./index.js";
@@ -0,0 +1 @@
1
+ export * from "./index.js";
@@ -0,0 +1,29 @@
1
+ {
2
+ "type": "module",
3
+ "imports": {
4
+ "#safe-fs-native-seek": {
5
+ "types": "./native/fs-seek/loader.d.ts",
6
+ "workerd": "./node/native-seek-unavailable.js",
7
+ "browser": null,
8
+ "default": "./native/fs-seek/loader.mjs"
9
+ },
10
+ "#safe-fs-platform": {
11
+ "workerd": "./platform/browser.js",
12
+ "browser": "./platform/browser.js",
13
+ "worker": "./platform/browser.js",
14
+ "default": "./platform/node.js"
15
+ },
16
+ "#safe-fs-platform-path": {
17
+ "workerd": "./platform/browser-path.js",
18
+ "browser": "./platform/browser-path.js",
19
+ "worker": "./platform/browser-path.js",
20
+ "default": "./platform/node-path.js"
21
+ },
22
+ "#safe-fs-s3-request": {
23
+ "workerd": "./fs/s3/http/request-fetch.js",
24
+ "browser": "./fs/s3/http/request-fetch.js",
25
+ "worker": "./fs/s3/http/request-fetch.js",
26
+ "default": "./fs/s3/http/request-node.js"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1 @@
1
+ export { posixPath as posix } from "../contracts/portable-path.js";
@@ -0,0 +1 @@
1
+ export { posixPath as posix } from "../contracts/portable-path.js";
@@ -0,0 +1,26 @@
1
+ import type { FsOptions } from "../contracts/filesystem.js";
2
+ import type { ScopedTransportBudgetFrame } from "./transport-budget.js";
3
+ export type PlatformErrno = number | undefined;
4
+ export type PlatformComparisonCallback<Callback> = Callback & never;
5
+ export declare const platform: Readonly<{
6
+ nativeFileSystem: Readonly<{
7
+ open: false;
8
+ permissions: false;
9
+ timestamps: false;
10
+ conditionalChmod: false;
11
+ trustedOwnedStaging: false;
12
+ atomicRename: false;
13
+ }>;
14
+ maxCollectionBytes: number;
15
+ errno(_code: string): PlatformErrno;
16
+ callbackAuthorities: false;
17
+ randomUUID(): string;
18
+ }>;
19
+ export declare const comparisonContext: Readonly<{
20
+ active(options: FsOptions): boolean;
21
+ run<Result>(options: FsOptions, action: (nested: FsOptions) => Promise<Result>): Promise<Result>;
22
+ }>;
23
+ export declare function getScopedTransportBudget(): readonly ScopedTransportBudgetFrame[] | undefined;
24
+ export declare function withScopedTransportBudget<Result>(frames: readonly ScopedTransportBudgetFrame[] | undefined, action: () => Result): Result;
25
+ export declare function runScopedTransportBudget<Result>(_admit: (options?: FsOptions) => void, action: () => Result, _credit?: number): Result;
26
+ export declare function chargeScopedTransportCall(options?: FsOptions): void;