@struktoai/mirage-node 0.0.7 → 0.0.8

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 (829) hide show
  1. package/README.md +143 -48
  2. package/dist/accessor/disk.d.ts +6 -0
  3. package/dist/accessor/disk.d.ts.map +1 -1
  4. package/dist/accessor/disk.js +8 -0
  5. package/dist/accessor/disk.js.map +1 -1
  6. package/dist/accessor/email.d.ts.map +1 -1
  7. package/dist/accessor/email.js +5 -0
  8. package/dist/accessor/email.js.map +1 -1
  9. package/dist/accessor/gridfs.d.ts.map +1 -1
  10. package/dist/accessor/gridfs.js +6 -1
  11. package/dist/accessor/gridfs.js.map +1 -1
  12. package/dist/accessor/hf_hub.d.ts +3 -7
  13. package/dist/accessor/hf_hub.d.ts.map +1 -1
  14. package/dist/accessor/hf_hub.js +10 -10
  15. package/dist/accessor/hf_hub.js.map +1 -1
  16. package/dist/cache/file/redis.d.ts +8 -7
  17. package/dist/cache/file/redis.d.ts.map +1 -1
  18. package/dist/cache/file/redis.js +46 -50
  19. package/dist/cache/file/redis.js.map +1 -1
  20. package/dist/commands/builtin/utils/http.js +13 -5
  21. package/dist/commands/builtin/utils/http.js.map +1 -1
  22. package/dist/commands/cli/builtin/hf/index.d.ts.map +1 -1
  23. package/dist/commands/cli/builtin/hf/index.js +4 -5
  24. package/dist/commands/cli/builtin/hf/index.js.map +1 -1
  25. package/dist/commands/cli/builtin/hf/upload.d.ts.map +1 -1
  26. package/dist/commands/cli/builtin/hf/upload.js +2 -5
  27. package/dist/commands/cli/builtin/hf/upload.js.map +1 -1
  28. package/dist/commands/cli/builtin/himalaya/builder.d.ts +2 -2
  29. package/dist/commands/cli/builtin/himalaya/builder.d.ts.map +1 -1
  30. package/dist/commands/cli/builtin/himalaya/builder.js +1 -1
  31. package/dist/commands/cli/builtin/himalaya/builder.js.map +1 -1
  32. package/dist/commands/cli/builtin/himalaya/deliver.d.ts +35 -7
  33. package/dist/commands/cli/builtin/himalaya/deliver.d.ts.map +1 -1
  34. package/dist/commands/cli/builtin/himalaya/deliver.js.map +1 -1
  35. package/dist/commands/cli/builtin/himalaya/index.d.ts.map +1 -1
  36. package/dist/commands/cli/builtin/himalaya/index.js +4 -5
  37. package/dist/commands/cli/builtin/himalaya/index.js.map +1 -1
  38. package/dist/commands/cli/builtin/himalaya/query.d.ts +2 -2
  39. package/dist/commands/cli/builtin/himalaya/query.d.ts.map +1 -1
  40. package/dist/commands/cli/builtin/himalaya/query.js +1 -1
  41. package/dist/commands/cli/builtin/himalaya/query.js.map +1 -1
  42. package/dist/commands/cli/builtin/himalaya/send.d.ts.map +1 -1
  43. package/dist/commands/cli/builtin/himalaya/send.js +2 -1
  44. package/dist/commands/cli/builtin/himalaya/send.js.map +1 -1
  45. package/dist/commands/cli/builtin/himalaya/smtp.d.ts +2 -2
  46. package/dist/commands/cli/builtin/himalaya/smtp.d.ts.map +1 -1
  47. package/dist/commands/cli/builtin/himalaya/smtp.js +5 -0
  48. package/dist/commands/cli/builtin/himalaya/smtp.js.map +1 -1
  49. package/dist/commands/cli/builtin/himalaya/util.d.ts +1 -1
  50. package/dist/commands/cli/builtin/himalaya/util.d.ts.map +1 -1
  51. package/dist/commands/cli/builtin/himalaya/util.js +6 -5
  52. package/dist/commands/cli/builtin/himalaya/util.js.map +1 -1
  53. package/dist/config.d.ts +57 -37
  54. package/dist/config.d.ts.map +1 -1
  55. package/dist/config.js +152 -277
  56. package/dist/config.js.map +1 -1
  57. package/dist/core/disk/capacity.d.ts +13 -0
  58. package/dist/core/disk/capacity.d.ts.map +1 -0
  59. package/dist/core/disk/capacity.js +93 -0
  60. package/dist/core/disk/capacity.js.map +1 -0
  61. package/dist/core/disk/constants.d.ts +0 -1
  62. package/dist/core/disk/constants.d.ts.map +1 -1
  63. package/dist/core/disk/constants.js +0 -1
  64. package/dist/core/disk/constants.js.map +1 -1
  65. package/dist/core/disk/copy.d.ts.map +1 -1
  66. package/dist/core/disk/copy.js +24 -13
  67. package/dist/core/disk/copy.js.map +1 -1
  68. package/dist/core/disk/mkdir.d.ts.map +1 -1
  69. package/dist/core/disk/mkdir.js +9 -0
  70. package/dist/core/disk/mkdir.js.map +1 -1
  71. package/dist/core/disk/read.d.ts +3 -3
  72. package/dist/core/disk/read.d.ts.map +1 -1
  73. package/dist/core/disk/read.js +4 -19
  74. package/dist/core/disk/read.js.map +1 -1
  75. package/dist/core/disk/rename.d.ts +3 -0
  76. package/dist/core/disk/rename.d.ts.map +1 -1
  77. package/dist/core/disk/rename.js +15 -1
  78. package/dist/core/disk/rename.js.map +1 -1
  79. package/dist/core/disk/rm.d.ts.map +1 -1
  80. package/dist/core/disk/rm.js +11 -1
  81. package/dist/core/disk/rm.js.map +1 -1
  82. package/dist/core/disk/rmdir.d.ts.map +1 -1
  83. package/dist/core/disk/rmdir.js +4 -0
  84. package/dist/core/disk/rmdir.js.map +1 -1
  85. package/dist/core/disk/set_attrs.d.ts +2 -9
  86. package/dist/core/disk/set_attrs.d.ts.map +1 -1
  87. package/dist/core/disk/set_attrs.js +2 -1
  88. package/dist/core/disk/set_attrs.js.map +1 -1
  89. package/dist/core/disk/stream.d.ts +8 -0
  90. package/dist/core/disk/stream.d.ts.map +1 -1
  91. package/dist/core/disk/stream.js +33 -13
  92. package/dist/core/disk/stream.js.map +1 -1
  93. package/dist/core/disk/unlink.d.ts.map +1 -1
  94. package/dist/core/disk/unlink.js +4 -0
  95. package/dist/core/disk/unlink.js.map +1 -1
  96. package/dist/core/disk/utils.d.ts +2 -0
  97. package/dist/core/disk/utils.d.ts.map +1 -1
  98. package/dist/core/disk/utils.js +68 -21
  99. package/dist/core/disk/utils.js.map +1 -1
  100. package/dist/core/disk/write.d.ts +7 -2
  101. package/dist/core/disk/write.d.ts.map +1 -1
  102. package/dist/core/disk/write.js +22 -16
  103. package/dist/core/disk/write.js.map +1 -1
  104. package/dist/core/email/_parse.d.ts +60 -12
  105. package/dist/core/email/_parse.d.ts.map +1 -1
  106. package/dist/core/email/_parse.js +2 -2
  107. package/dist/core/email/_parse.js.map +1 -1
  108. package/dist/core/email/client.d.ts +36 -9
  109. package/dist/core/email/client.d.ts.map +1 -1
  110. package/dist/core/email/client.js +15 -0
  111. package/dist/core/email/client.js.map +1 -1
  112. package/dist/core/email/config.d.ts +6 -9
  113. package/dist/core/email/config.d.ts.map +1 -1
  114. package/dist/core/email/config.js +31 -27
  115. package/dist/core/email/config.js.map +1 -1
  116. package/dist/core/email/readdir.d.ts +2 -2
  117. package/dist/core/email/readdir.d.ts.map +1 -1
  118. package/dist/core/email/readdir.js +1 -1
  119. package/dist/core/email/readdir.js.map +1 -1
  120. package/dist/core/email/render.d.ts +5 -5
  121. package/dist/core/email/render.d.ts.map +1 -1
  122. package/dist/core/email/render.js.map +1 -1
  123. package/dist/core/email/search.d.ts +2 -2
  124. package/dist/core/email/search.d.ts.map +1 -1
  125. package/dist/core/email/search.js +1 -1
  126. package/dist/core/email/search.js.map +1 -1
  127. package/dist/core/gridfs/client.d.ts +25 -2
  128. package/dist/core/gridfs/client.d.ts.map +1 -1
  129. package/dist/core/gridfs/client.js +74 -7
  130. package/dist/core/gridfs/client.js.map +1 -1
  131. package/dist/core/gridfs/constants.d.ts +1 -0
  132. package/dist/core/gridfs/constants.d.ts.map +1 -1
  133. package/dist/core/gridfs/constants.js +5 -0
  134. package/dist/core/gridfs/constants.js.map +1 -1
  135. package/dist/core/gridfs/driver.d.ts +1 -0
  136. package/dist/core/gridfs/driver.d.ts.map +1 -1
  137. package/dist/core/gridfs/driver.js +80 -67
  138. package/dist/core/gridfs/driver.js.map +1 -1
  139. package/dist/core/gridfs/events.d.ts +8 -3
  140. package/dist/core/gridfs/events.d.ts.map +1 -1
  141. package/dist/core/gridfs/events.js +11 -3
  142. package/dist/core/gridfs/events.js.map +1 -1
  143. package/dist/core/gridfs/read.d.ts +2 -7
  144. package/dist/core/gridfs/read.d.ts.map +1 -1
  145. package/dist/core/gridfs/read.js +4 -9
  146. package/dist/core/gridfs/read.js.map +1 -1
  147. package/dist/core/gridfs/stream.d.ts.map +1 -1
  148. package/dist/core/gridfs/stream.js +5 -2
  149. package/dist/core/gridfs/stream.js.map +1 -1
  150. package/dist/core/gridfs/write.d.ts +1 -1
  151. package/dist/core/gridfs/write.d.ts.map +1 -1
  152. package/dist/core/gridfs/write.js +2 -2
  153. package/dist/core/gridfs/write.js.map +1 -1
  154. package/dist/core/hf_buckets/driver.d.ts.map +1 -1
  155. package/dist/core/hf_buckets/driver.js +16 -0
  156. package/dist/core/hf_buckets/driver.js.map +1 -1
  157. package/dist/core/hf_buckets/read.d.ts +2 -6
  158. package/dist/core/hf_buckets/read.d.ts.map +1 -1
  159. package/dist/core/hf_buckets/read.js +1 -1
  160. package/dist/core/hf_buckets/read.js.map +1 -1
  161. package/dist/core/hf_buckets/stream.d.ts.map +1 -1
  162. package/dist/core/hf_buckets/stream.js +2 -0
  163. package/dist/core/hf_buckets/stream.js.map +1 -1
  164. package/dist/core/hf_hub/admin.d.ts +3 -4
  165. package/dist/core/hf_hub/admin.d.ts.map +1 -1
  166. package/dist/core/hf_hub/admin.js +4 -4
  167. package/dist/core/hf_hub/admin.js.map +1 -1
  168. package/dist/core/hf_hub/client.d.ts +11 -24
  169. package/dist/core/hf_hub/client.d.ts.map +1 -1
  170. package/dist/core/hf_hub/client.js +40 -97
  171. package/dist/core/hf_hub/client.js.map +1 -1
  172. package/dist/core/hf_hub/commit.d.ts +8 -9
  173. package/dist/core/hf_hub/commit.d.ts.map +1 -1
  174. package/dist/core/hf_hub/commit.js +4 -6
  175. package/dist/core/hf_hub/commit.js.map +1 -1
  176. package/dist/core/hf_hub/config.d.ts +5 -4
  177. package/dist/core/hf_hub/config.d.ts.map +1 -1
  178. package/dist/core/hf_hub/config.js +3 -1
  179. package/dist/core/hf_hub/config.js.map +1 -1
  180. package/dist/core/hf_hub/constants.d.ts +0 -1
  181. package/dist/core/hf_hub/constants.d.ts.map +1 -1
  182. package/dist/core/hf_hub/constants.js +0 -1
  183. package/dist/core/hf_hub/constants.js.map +1 -1
  184. package/dist/core/hf_hub/read.d.ts +2 -5
  185. package/dist/core/hf_hub/read.d.ts.map +1 -1
  186. package/dist/core/hf_hub/read.js.map +1 -1
  187. package/dist/core/hf_hub/stream.d.ts.map +1 -1
  188. package/dist/core/hf_hub/stream.js +2 -0
  189. package/dist/core/hf_hub/stream.js.map +1 -1
  190. package/dist/core/nextcloud/capacity.js.map +1 -1
  191. package/dist/core/nextcloud/checksum.js +4 -3
  192. package/dist/core/nextcloud/checksum.js.map +1 -1
  193. package/dist/core/nextcloud/constants.d.ts +2 -0
  194. package/dist/core/nextcloud/constants.d.ts.map +1 -1
  195. package/dist/core/nextcloud/constants.js +4 -0
  196. package/dist/core/nextcloud/constants.js.map +1 -1
  197. package/dist/core/nextcloud/copy.js.map +1 -1
  198. package/dist/core/nextcloud/dav.d.ts +9 -3
  199. package/dist/core/nextcloud/dav.d.ts.map +1 -1
  200. package/dist/core/nextcloud/dav.js +20 -2
  201. package/dist/core/nextcloud/dav.js.map +1 -1
  202. package/dist/core/nextcloud/read.d.ts +2 -6
  203. package/dist/core/nextcloud/read.d.ts.map +1 -1
  204. package/dist/core/nextcloud/read.js +1 -1
  205. package/dist/core/nextcloud/read.js.map +1 -1
  206. package/dist/core/nextcloud/search/query.js +2 -2
  207. package/dist/core/nextcloud/search/query.js.map +1 -1
  208. package/dist/core/nextcloud/search/response.d.ts +3 -2
  209. package/dist/core/nextcloud/search/response.d.ts.map +1 -1
  210. package/dist/core/nextcloud/search/response.js +5 -5
  211. package/dist/core/nextcloud/search/response.js.map +1 -1
  212. package/dist/core/nextcloud/search/types.d.ts +1 -1
  213. package/dist/core/nextcloud/search/types.d.ts.map +1 -1
  214. package/dist/core/nextcloud/set_attrs.js.map +1 -1
  215. package/dist/core/nextcloud/stat.d.ts.map +1 -1
  216. package/dist/core/nextcloud/stat.js +7 -9
  217. package/dist/core/nextcloud/stat.js.map +1 -1
  218. package/dist/core/nextcloud/stream.d.ts.map +1 -1
  219. package/dist/core/nextcloud/stream.js +2 -0
  220. package/dist/core/nextcloud/stream.js.map +1 -1
  221. package/dist/core/nextcloud/write.d.ts +7 -1
  222. package/dist/core/nextcloud/write.d.ts.map +1 -1
  223. package/dist/core/nextcloud/write.js +81 -8
  224. package/dist/core/nextcloud/write.js.map +1 -1
  225. package/dist/core/ssh/append.d.ts +1 -2
  226. package/dist/core/ssh/append.d.ts.map +1 -1
  227. package/dist/core/ssh/append.js +1 -4
  228. package/dist/core/ssh/append.js.map +1 -1
  229. package/dist/core/ssh/checksum.d.ts.map +1 -1
  230. package/dist/core/ssh/checksum.js +1 -0
  231. package/dist/core/ssh/checksum.js.map +1 -1
  232. package/dist/core/ssh/rm.d.ts.map +1 -1
  233. package/dist/core/ssh/rm.js +15 -6
  234. package/dist/core/ssh/rm.js.map +1 -1
  235. package/dist/core/ssh/rmdir.d.ts.map +1 -1
  236. package/dist/core/ssh/rmdir.js +2 -22
  237. package/dist/core/ssh/rmdir.js.map +1 -1
  238. package/dist/core/ssh/set_attrs.d.ts +2 -9
  239. package/dist/core/ssh/set_attrs.d.ts.map +1 -1
  240. package/dist/core/ssh/set_attrs.js +1 -1
  241. package/dist/core/ssh/set_attrs.js.map +1 -1
  242. package/dist/core/ssh/stat.d.ts.map +1 -1
  243. package/dist/core/ssh/stat.js +5 -4
  244. package/dist/core/ssh/stat.js.map +1 -1
  245. package/dist/core/ssh/stream.d.ts.map +1 -1
  246. package/dist/core/ssh/stream.js +10 -1
  247. package/dist/core/ssh/stream.js.map +1 -1
  248. package/dist/core/ssh/utils.d.ts +8 -2
  249. package/dist/core/ssh/utils.d.ts.map +1 -1
  250. package/dist/core/ssh/utils.js +24 -3
  251. package/dist/core/ssh/utils.js.map +1 -1
  252. package/dist/core/ssh/write.d.ts +1 -2
  253. package/dist/core/ssh/write.d.ts.map +1 -1
  254. package/dist/core/ssh/write.js +1 -4
  255. package/dist/core/ssh/write.js.map +1 -1
  256. package/dist/fuse/constants.d.ts +3 -2
  257. package/dist/fuse/constants.d.ts.map +1 -1
  258. package/dist/fuse/constants.js +6 -3
  259. package/dist/fuse/constants.js.map +1 -1
  260. package/dist/fuse/fs.d.ts +1 -1
  261. package/dist/fuse/fs.d.ts.map +1 -1
  262. package/dist/fuse/fs.js +6 -3
  263. package/dist/fuse/fs.js.map +1 -1
  264. package/dist/fuse/mount.d.ts +5 -0
  265. package/dist/fuse/mount.d.ts.map +1 -1
  266. package/dist/fuse/mount.js +47 -15
  267. package/dist/fuse/mount.js.map +1 -1
  268. package/dist/index.d.ts +130 -159
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +86 -135
  271. package/dist/index.js.map +1 -1
  272. package/dist/io/gateway.d.ts +6 -0
  273. package/dist/io/gateway.d.ts.map +1 -0
  274. package/dist/io/gateway.js +357 -0
  275. package/dist/io/gateway.js.map +1 -0
  276. package/dist/io/network.d.ts +35 -0
  277. package/dist/io/network.d.ts.map +1 -0
  278. package/dist/io/network.js +187 -0
  279. package/dist/io/network.js.map +1 -0
  280. package/dist/io/spool.js +3 -3
  281. package/dist/io/spool.js.map +1 -1
  282. package/dist/mount/constants.d.ts +9 -2
  283. package/dist/mount/constants.d.ts.map +1 -1
  284. package/dist/mount/constants.js +9 -2
  285. package/dist/mount/constants.js.map +1 -1
  286. package/dist/mount/errors.d.ts +2 -11
  287. package/dist/mount/errors.d.ts.map +1 -1
  288. package/dist/mount/errors.js +28 -42
  289. package/dist/mount/errors.js.map +1 -1
  290. package/dist/mount/nfs.d.ts +2 -2
  291. package/dist/mount/nfs.d.ts.map +1 -1
  292. package/dist/mount/nfs.js +8 -20
  293. package/dist/mount/nfs.js.map +1 -1
  294. package/dist/mount/sftp.d.ts +3 -3
  295. package/dist/mount/sftp.d.ts.map +1 -1
  296. package/dist/mount/sftp.js +26 -53
  297. package/dist/mount/sftp.js.map +1 -1
  298. package/dist/observe/disk_store.js +1 -1
  299. package/dist/observe/disk_store.js.map +1 -1
  300. package/dist/runtime/js/host/constants.d.ts +1 -1
  301. package/dist/runtime/js/host/constants.d.ts.map +1 -1
  302. package/dist/runtime/js/host/constants.js +9 -8
  303. package/dist/runtime/js/host/constants.js.map +1 -1
  304. package/dist/runtime/js/host/descriptors.d.ts +11 -71
  305. package/dist/runtime/js/host/descriptors.d.ts.map +1 -1
  306. package/dist/runtime/js/host/descriptors.js +16 -202
  307. package/dist/runtime/js/host/descriptors.js.map +1 -1
  308. package/dist/runtime/js/host/fs.d.ts.map +1 -1
  309. package/dist/runtime/js/host/fs.js +491 -135
  310. package/dist/runtime/js/host/fs.js.map +1 -1
  311. package/dist/runtime/js/host/list.d.ts +21 -0
  312. package/dist/runtime/js/host/list.d.ts.map +1 -0
  313. package/dist/runtime/js/host/list.js +107 -0
  314. package/dist/runtime/js/host/list.js.map +1 -0
  315. package/dist/runtime/js/host/stat.d.ts +10 -0
  316. package/dist/runtime/js/host/stat.d.ts.map +1 -0
  317. package/dist/runtime/js/host/stat.js +70 -0
  318. package/dist/runtime/js/host/stat.js.map +1 -0
  319. package/dist/runtime/python/local/runtime.d.ts +8 -7
  320. package/dist/runtime/python/local/runtime.d.ts.map +1 -1
  321. package/dist/runtime/python/local/runtime.js +51 -74
  322. package/dist/runtime/python/local/runtime.js.map +1 -1
  323. package/dist/runtime/sandbox/apple_container/constants.d.ts +2 -3
  324. package/dist/runtime/sandbox/apple_container/constants.d.ts.map +1 -1
  325. package/dist/runtime/sandbox/apple_container/constants.js +4 -11
  326. package/dist/runtime/sandbox/apple_container/constants.js.map +1 -1
  327. package/dist/runtime/sandbox/apple_container/runtime.d.ts +14 -10
  328. package/dist/runtime/sandbox/apple_container/runtime.d.ts.map +1 -1
  329. package/dist/runtime/sandbox/apple_container/runtime.js +38 -57
  330. package/dist/runtime/sandbox/apple_container/runtime.js.map +1 -1
  331. package/dist/runtime/sandbox/daytona/constants.d.ts +27 -0
  332. package/dist/runtime/sandbox/daytona/constants.d.ts.map +1 -0
  333. package/dist/runtime/sandbox/daytona/constants.js +47 -0
  334. package/dist/runtime/sandbox/daytona/constants.js.map +1 -0
  335. package/dist/runtime/sandbox/daytona/runtime.d.ts +6 -4
  336. package/dist/runtime/sandbox/daytona/runtime.d.ts.map +1 -1
  337. package/dist/runtime/sandbox/daytona/runtime.js +13 -9
  338. package/dist/runtime/sandbox/daytona/runtime.js.map +1 -1
  339. package/dist/runtime/sandbox/docker/constants.d.ts +6 -1
  340. package/dist/runtime/sandbox/docker/constants.d.ts.map +1 -1
  341. package/dist/runtime/sandbox/docker/constants.js +6 -1
  342. package/dist/runtime/sandbox/docker/constants.js.map +1 -1
  343. package/dist/runtime/sandbox/docker/runtime.d.ts +8 -6
  344. package/dist/runtime/sandbox/docker/runtime.d.ts.map +1 -1
  345. package/dist/runtime/sandbox/docker/runtime.js +22 -28
  346. package/dist/runtime/sandbox/docker/runtime.js.map +1 -1
  347. package/dist/runtime/sandbox/microsandbox/constants.d.ts +1 -3
  348. package/dist/runtime/sandbox/microsandbox/constants.d.ts.map +1 -1
  349. package/dist/runtime/sandbox/microsandbox/constants.js +1 -5
  350. package/dist/runtime/sandbox/microsandbox/constants.js.map +1 -1
  351. package/dist/runtime/sandbox/microsandbox/runtime.d.ts +9 -8
  352. package/dist/runtime/sandbox/microsandbox/runtime.d.ts.map +1 -1
  353. package/dist/runtime/sandbox/microsandbox/runtime.js +26 -56
  354. package/dist/runtime/sandbox/microsandbox/runtime.js.map +1 -1
  355. package/dist/runtime/sandbox/program.d.ts +165 -0
  356. package/dist/runtime/sandbox/program.d.ts.map +1 -0
  357. package/dist/runtime/sandbox/program.js +724 -0
  358. package/dist/runtime/sandbox/program.js.map +1 -0
  359. package/dist/runtime/sandbox/sandlock/constants.d.ts +1 -1
  360. package/dist/runtime/sandbox/sandlock/constants.d.ts.map +1 -1
  361. package/dist/runtime/sandbox/sandlock/constants.js +1 -1
  362. package/dist/runtime/sandbox/sandlock/constants.js.map +1 -1
  363. package/dist/runtime/sandbox/sandlock/runtime.d.ts +5 -6
  364. package/dist/runtime/sandbox/sandlock/runtime.d.ts.map +1 -1
  365. package/dist/runtime/sandbox/sandlock/runtime.js +27 -16
  366. package/dist/runtime/sandbox/sandlock/runtime.js.map +1 -1
  367. package/dist/runtime/sandbox/smolvm/constants.d.ts +2 -3
  368. package/dist/runtime/sandbox/smolvm/constants.d.ts.map +1 -1
  369. package/dist/runtime/sandbox/smolvm/constants.js +6 -13
  370. package/dist/runtime/sandbox/smolvm/constants.js.map +1 -1
  371. package/dist/runtime/sandbox/smolvm/runtime.d.ts +9 -8
  372. package/dist/runtime/sandbox/smolvm/runtime.d.ts.map +1 -1
  373. package/dist/runtime/sandbox/smolvm/runtime.js +24 -45
  374. package/dist/runtime/sandbox/smolvm/runtime.js.map +1 -1
  375. package/dist/runtime/sandbox/ssh/runtime.d.ts +23 -12
  376. package/dist/runtime/sandbox/ssh/runtime.d.ts.map +1 -1
  377. package/dist/runtime/sandbox/ssh/runtime.js +88 -30
  378. package/dist/runtime/sandbox/ssh/runtime.js.map +1 -1
  379. package/dist/secrets/config.d.ts +2 -2
  380. package/dist/secrets/config.d.ts.map +1 -1
  381. package/dist/secrets/onepassword.d.ts +5 -8
  382. package/dist/secrets/onepassword.d.ts.map +1 -1
  383. package/dist/secrets/onepassword.js.map +1 -1
  384. package/dist/shell/console/redis/constants.d.ts +1 -0
  385. package/dist/shell/console/redis/constants.d.ts.map +1 -1
  386. package/dist/shell/console/redis/constants.js +3 -0
  387. package/dist/shell/console/redis/constants.js.map +1 -1
  388. package/dist/shell/console/redis/store.d.ts +24 -9
  389. package/dist/shell/console/redis/store.d.ts.map +1 -1
  390. package/dist/shell/console/redis/store.js +48 -16
  391. package/dist/shell/console/redis/store.js.map +1 -1
  392. package/dist/shell/job_table/redis.d.ts +52 -0
  393. package/dist/shell/job_table/redis.d.ts.map +1 -0
  394. package/dist/shell/job_table/redis.js +156 -0
  395. package/dist/shell/job_table/redis.js.map +1 -0
  396. package/dist/utils/loader.d.ts.map +1 -1
  397. package/dist/utils/loader.js +1 -3
  398. package/dist/utils/loader.js.map +1 -1
  399. package/dist/vfs/aliyun/aliyun.d.ts +4 -5
  400. package/dist/vfs/aliyun/aliyun.d.ts.map +1 -1
  401. package/dist/vfs/aliyun/aliyun.js +2 -4
  402. package/dist/vfs/aliyun/aliyun.js.map +1 -1
  403. package/dist/vfs/aliyun/config.d.ts +40 -6
  404. package/dist/vfs/aliyun/config.d.ts.map +1 -1
  405. package/dist/vfs/aliyun/config.js +5 -6
  406. package/dist/vfs/aliyun/config.js.map +1 -1
  407. package/dist/vfs/backblaze/backblaze.d.ts +4 -5
  408. package/dist/vfs/backblaze/backblaze.d.ts.map +1 -1
  409. package/dist/vfs/backblaze/backblaze.js +2 -4
  410. package/dist/vfs/backblaze/backblaze.js.map +1 -1
  411. package/dist/vfs/backblaze/config.d.ts +40 -6
  412. package/dist/vfs/backblaze/config.d.ts.map +1 -1
  413. package/dist/vfs/backblaze/config.js +5 -6
  414. package/dist/vfs/backblaze/config.js.map +1 -1
  415. package/dist/vfs/ceph/ceph.d.ts +4 -5
  416. package/dist/vfs/ceph/ceph.d.ts.map +1 -1
  417. package/dist/vfs/ceph/ceph.js +2 -4
  418. package/dist/vfs/ceph/ceph.js.map +1 -1
  419. package/dist/vfs/ceph/config.d.ts +42 -5
  420. package/dist/vfs/ceph/config.d.ts.map +1 -1
  421. package/dist/vfs/ceph/config.js +7 -5
  422. package/dist/vfs/ceph/config.js.map +1 -1
  423. package/dist/vfs/databricks_volume/config.d.ts +2 -2
  424. package/dist/vfs/databricks_volume/config.d.ts.map +1 -1
  425. package/dist/vfs/databricks_volume/config.js +1 -1
  426. package/dist/vfs/databricks_volume/config.js.map +1 -1
  427. package/dist/vfs/databricks_volume/databricks_volume.d.ts +6 -9
  428. package/dist/vfs/databricks_volume/databricks_volume.d.ts.map +1 -1
  429. package/dist/vfs/databricks_volume/databricks_volume.js +4 -9
  430. package/dist/vfs/databricks_volume/databricks_volume.js.map +1 -1
  431. package/dist/vfs/digitalocean/config.d.ts +40 -6
  432. package/dist/vfs/digitalocean/config.d.ts.map +1 -1
  433. package/dist/vfs/digitalocean/config.js +5 -6
  434. package/dist/vfs/digitalocean/config.js.map +1 -1
  435. package/dist/vfs/digitalocean/digitalocean.d.ts +4 -5
  436. package/dist/vfs/digitalocean/digitalocean.d.ts.map +1 -1
  437. package/dist/vfs/digitalocean/digitalocean.js +2 -4
  438. package/dist/vfs/digitalocean/digitalocean.js.map +1 -1
  439. package/dist/vfs/discord/discord.d.ts +7 -10
  440. package/dist/vfs/discord/discord.d.ts.map +1 -1
  441. package/dist/vfs/discord/discord.js +7 -12
  442. package/dist/vfs/discord/discord.js.map +1 -1
  443. package/dist/vfs/disk/disk.d.ts +14 -14
  444. package/dist/vfs/disk/disk.d.ts.map +1 -1
  445. package/dist/vfs/disk/disk.js +87 -52
  446. package/dist/vfs/disk/disk.js.map +1 -1
  447. package/dist/vfs/dropbox/config.d.ts +7 -12
  448. package/dist/vfs/dropbox/config.d.ts.map +1 -1
  449. package/dist/vfs/dropbox/config.js +18 -15
  450. package/dist/vfs/dropbox/config.js.map +1 -1
  451. package/dist/vfs/email/email.d.ts +13 -11
  452. package/dist/vfs/email/email.d.ts.map +1 -1
  453. package/dist/vfs/email/email.js +31 -16
  454. package/dist/vfs/email/email.js.map +1 -1
  455. package/dist/vfs/email/index.d.ts +1 -2
  456. package/dist/vfs/email/index.d.ts.map +1 -1
  457. package/dist/vfs/email/index.js +1 -2
  458. package/dist/vfs/email/index.js.map +1 -1
  459. package/dist/vfs/gcs/config.d.ts +36 -28
  460. package/dist/vfs/gcs/config.d.ts.map +1 -1
  461. package/dist/vfs/gcs/config.js +15 -39
  462. package/dist/vfs/gcs/config.js.map +1 -1
  463. package/dist/vfs/gcs/gcs.d.ts +4 -5
  464. package/dist/vfs/gcs/gcs.d.ts.map +1 -1
  465. package/dist/vfs/gcs/gcs.js +2 -4
  466. package/dist/vfs/gcs/gcs.js.map +1 -1
  467. package/dist/vfs/gridfs/config.d.ts +6 -7
  468. package/dist/vfs/gridfs/config.d.ts.map +1 -1
  469. package/dist/vfs/gridfs/config.js +25 -11
  470. package/dist/vfs/gridfs/config.js.map +1 -1
  471. package/dist/vfs/gridfs/gridfs.d.ts +10 -18
  472. package/dist/vfs/gridfs/gridfs.d.ts.map +1 -1
  473. package/dist/vfs/gridfs/gridfs.js +23 -40
  474. package/dist/vfs/gridfs/gridfs.js.map +1 -1
  475. package/dist/vfs/hf_buckets/config.d.ts +14 -17
  476. package/dist/vfs/hf_buckets/config.d.ts.map +1 -1
  477. package/dist/vfs/hf_buckets/config.js +41 -28
  478. package/dist/vfs/hf_buckets/config.js.map +1 -1
  479. package/dist/vfs/hf_buckets/hf_buckets.d.ts +10 -15
  480. package/dist/vfs/hf_buckets/hf_buckets.d.ts.map +1 -1
  481. package/dist/vfs/hf_buckets/hf_buckets.js +14 -22
  482. package/dist/vfs/hf_buckets/hf_buckets.js.map +1 -1
  483. package/dist/vfs/hf_datasets/config.d.ts +1 -4
  484. package/dist/vfs/hf_datasets/config.d.ts.map +1 -1
  485. package/dist/vfs/hf_datasets/config.js +1 -3
  486. package/dist/vfs/hf_datasets/config.js.map +1 -1
  487. package/dist/vfs/hf_datasets/hf_datasets.d.ts +4 -7
  488. package/dist/vfs/hf_datasets/hf_datasets.d.ts.map +1 -1
  489. package/dist/vfs/hf_datasets/hf_datasets.js +4 -6
  490. package/dist/vfs/hf_datasets/hf_datasets.js.map +1 -1
  491. package/dist/vfs/hf_hub/base.d.ts +4 -8
  492. package/dist/vfs/hf_hub/base.d.ts.map +1 -1
  493. package/dist/vfs/hf_hub/base.js +7 -11
  494. package/dist/vfs/hf_hub/base.js.map +1 -1
  495. package/dist/vfs/hf_models/config.d.ts +1 -4
  496. package/dist/vfs/hf_models/config.d.ts.map +1 -1
  497. package/dist/vfs/hf_models/config.js +1 -3
  498. package/dist/vfs/hf_models/config.js.map +1 -1
  499. package/dist/vfs/hf_models/hf_models.d.ts +4 -7
  500. package/dist/vfs/hf_models/hf_models.d.ts.map +1 -1
  501. package/dist/vfs/hf_models/hf_models.js +4 -6
  502. package/dist/vfs/hf_models/hf_models.js.map +1 -1
  503. package/dist/vfs/hf_spaces/config.d.ts +1 -4
  504. package/dist/vfs/hf_spaces/config.d.ts.map +1 -1
  505. package/dist/vfs/hf_spaces/config.js +1 -3
  506. package/dist/vfs/hf_spaces/config.js.map +1 -1
  507. package/dist/vfs/hf_spaces/hf_spaces.d.ts +4 -7
  508. package/dist/vfs/hf_spaces/hf_spaces.d.ts.map +1 -1
  509. package/dist/vfs/hf_spaces/hf_spaces.js +4 -6
  510. package/dist/vfs/hf_spaces/hf_spaces.js.map +1 -1
  511. package/dist/vfs/jaeger/jaeger.d.ts +7 -9
  512. package/dist/vfs/jaeger/jaeger.d.ts.map +1 -1
  513. package/dist/vfs/jaeger/jaeger.js +7 -11
  514. package/dist/vfs/jaeger/jaeger.js.map +1 -1
  515. package/dist/vfs/lancedb/lancedb.d.ts +10 -11
  516. package/dist/vfs/lancedb/lancedb.d.ts.map +1 -1
  517. package/dist/vfs/lancedb/lancedb.js +4 -5
  518. package/dist/vfs/lancedb/lancedb.js.map +1 -1
  519. package/dist/vfs/lancedb/store.d.ts +2 -2
  520. package/dist/vfs/lancedb/store.d.ts.map +1 -1
  521. package/dist/vfs/lancedb/store.js +3 -0
  522. package/dist/vfs/lancedb/store.js.map +1 -1
  523. package/dist/vfs/minio/config.d.ts +42 -5
  524. package/dist/vfs/minio/config.d.ts.map +1 -1
  525. package/dist/vfs/minio/config.js +7 -5
  526. package/dist/vfs/minio/config.js.map +1 -1
  527. package/dist/vfs/minio/minio.d.ts +4 -5
  528. package/dist/vfs/minio/minio.d.ts.map +1 -1
  529. package/dist/vfs/minio/minio.js +2 -4
  530. package/dist/vfs/minio/minio.js.map +1 -1
  531. package/dist/vfs/mongodb/mongodb.d.ts +10 -11
  532. package/dist/vfs/mongodb/mongodb.d.ts.map +1 -1
  533. package/dist/vfs/mongodb/mongodb.js +6 -7
  534. package/dist/vfs/mongodb/mongodb.js.map +1 -1
  535. package/dist/vfs/mongodb/store.d.ts +2 -1
  536. package/dist/vfs/mongodb/store.d.ts.map +1 -1
  537. package/dist/vfs/mongodb/store.js +11 -3
  538. package/dist/vfs/mongodb/store.js.map +1 -1
  539. package/dist/vfs/nextcloud/config.d.ts +5 -8
  540. package/dist/vfs/nextcloud/config.d.ts.map +1 -1
  541. package/dist/vfs/nextcloud/config.js +19 -13
  542. package/dist/vfs/nextcloud/config.js.map +1 -1
  543. package/dist/vfs/nextcloud/nextcloud.d.ts +8 -14
  544. package/dist/vfs/nextcloud/nextcloud.d.ts.map +1 -1
  545. package/dist/vfs/nextcloud/nextcloud.js +18 -29
  546. package/dist/vfs/nextcloud/nextcloud.js.map +1 -1
  547. package/dist/vfs/notion/notion.d.ts +7 -10
  548. package/dist/vfs/notion/notion.d.ts.map +1 -1
  549. package/dist/vfs/notion/notion.js +7 -10
  550. package/dist/vfs/notion/notion.js.map +1 -1
  551. package/dist/vfs/oci/config.d.ts +41 -27
  552. package/dist/vfs/oci/config.d.ts.map +1 -1
  553. package/dist/vfs/oci/config.js +18 -45
  554. package/dist/vfs/oci/config.js.map +1 -1
  555. package/dist/vfs/oci/oci.d.ts +4 -5
  556. package/dist/vfs/oci/oci.d.ts.map +1 -1
  557. package/dist/vfs/oci/oci.js +2 -4
  558. package/dist/vfs/oci/oci.js.map +1 -1
  559. package/dist/vfs/postgres/postgres.d.ts +10 -11
  560. package/dist/vfs/postgres/postgres.d.ts.map +1 -1
  561. package/dist/vfs/postgres/postgres.js +5 -6
  562. package/dist/vfs/postgres/postgres.js.map +1 -1
  563. package/dist/vfs/postgres/store.d.ts +3 -3
  564. package/dist/vfs/postgres/store.d.ts.map +1 -1
  565. package/dist/vfs/postgres/store.js +1 -0
  566. package/dist/vfs/postgres/store.js.map +1 -1
  567. package/dist/vfs/qingstor/config.d.ts +40 -6
  568. package/dist/vfs/qingstor/config.d.ts.map +1 -1
  569. package/dist/vfs/qingstor/config.js +5 -6
  570. package/dist/vfs/qingstor/config.js.map +1 -1
  571. package/dist/vfs/qingstor/qingstor.d.ts +4 -5
  572. package/dist/vfs/qingstor/qingstor.d.ts.map +1 -1
  573. package/dist/vfs/qingstor/qingstor.js +2 -4
  574. package/dist/vfs/qingstor/qingstor.js.map +1 -1
  575. package/dist/vfs/r2/config.d.ts +39 -28
  576. package/dist/vfs/r2/config.d.ts.map +1 -1
  577. package/dist/vfs/r2/config.js +24 -48
  578. package/dist/vfs/r2/config.js.map +1 -1
  579. package/dist/vfs/r2/r2.d.ts +4 -5
  580. package/dist/vfs/r2/r2.d.ts.map +1 -1
  581. package/dist/vfs/r2/r2.js +2 -4
  582. package/dist/vfs/r2/r2.js.map +1 -1
  583. package/dist/vfs/redis/redis.d.ts +3 -0
  584. package/dist/vfs/redis/redis.d.ts.map +1 -1
  585. package/dist/vfs/redis/redis.js +1 -1
  586. package/dist/vfs/redis/redis.js.map +1 -1
  587. package/dist/vfs/redis/store.d.ts +2 -0
  588. package/dist/vfs/redis/store.d.ts.map +1 -1
  589. package/dist/vfs/redis/store.js +13 -2
  590. package/dist/vfs/redis/store.js.map +1 -1
  591. package/dist/vfs/registry.d.ts.map +1 -1
  592. package/dist/vfs/registry.js +111 -105
  593. package/dist/vfs/registry.js.map +1 -1
  594. package/dist/vfs/s3/config.d.ts +12 -23
  595. package/dist/vfs/s3/config.d.ts.map +1 -1
  596. package/dist/vfs/s3/config.js +16 -31
  597. package/dist/vfs/s3/config.js.map +1 -1
  598. package/dist/vfs/s3/s3.d.ts +6 -9
  599. package/dist/vfs/s3/s3.d.ts.map +1 -1
  600. package/dist/vfs/s3/s3.js +11 -14
  601. package/dist/vfs/s3/s3.js.map +1 -1
  602. package/dist/vfs/s3_alias.d.ts +69 -53
  603. package/dist/vfs/s3_alias.d.ts.map +1 -1
  604. package/dist/vfs/s3_alias.js +86 -82
  605. package/dist/vfs/s3_alias.js.map +1 -1
  606. package/dist/vfs/scaleway/config.d.ts +40 -6
  607. package/dist/vfs/scaleway/config.d.ts.map +1 -1
  608. package/dist/vfs/scaleway/config.js +5 -6
  609. package/dist/vfs/scaleway/config.js.map +1 -1
  610. package/dist/vfs/scaleway/scaleway.d.ts +4 -5
  611. package/dist/vfs/scaleway/scaleway.d.ts.map +1 -1
  612. package/dist/vfs/scaleway/scaleway.js +2 -4
  613. package/dist/vfs/scaleway/scaleway.js.map +1 -1
  614. package/dist/vfs/seaweedfs/config.d.ts +42 -5
  615. package/dist/vfs/seaweedfs/config.d.ts.map +1 -1
  616. package/dist/vfs/seaweedfs/config.js +7 -5
  617. package/dist/vfs/seaweedfs/config.js.map +1 -1
  618. package/dist/vfs/seaweedfs/seaweedfs.d.ts +4 -5
  619. package/dist/vfs/seaweedfs/seaweedfs.d.ts.map +1 -1
  620. package/dist/vfs/seaweedfs/seaweedfs.js +2 -4
  621. package/dist/vfs/seaweedfs/seaweedfs.js.map +1 -1
  622. package/dist/vfs/slack/slack.d.ts +7 -10
  623. package/dist/vfs/slack/slack.d.ts.map +1 -1
  624. package/dist/vfs/slack/slack.js +7 -12
  625. package/dist/vfs/slack/slack.js.map +1 -1
  626. package/dist/vfs/ssh/config.d.ts +5 -9
  627. package/dist/vfs/ssh/config.d.ts.map +1 -1
  628. package/dist/vfs/ssh/config.js +28 -18
  629. package/dist/vfs/ssh/config.js.map +1 -1
  630. package/dist/vfs/ssh/ssh.d.ts +8 -17
  631. package/dist/vfs/ssh/ssh.d.ts.map +1 -1
  632. package/dist/vfs/ssh/ssh.js +25 -43
  633. package/dist/vfs/ssh/ssh.js.map +1 -1
  634. package/dist/vfs/supabase/config.d.ts +40 -27
  635. package/dist/vfs/supabase/config.d.ts.map +1 -1
  636. package/dist/vfs/supabase/config.js +24 -48
  637. package/dist/vfs/supabase/config.js.map +1 -1
  638. package/dist/vfs/supabase/supabase.d.ts +4 -5
  639. package/dist/vfs/supabase/supabase.d.ts.map +1 -1
  640. package/dist/vfs/supabase/supabase.js +2 -4
  641. package/dist/vfs/supabase/supabase.js.map +1 -1
  642. package/dist/vfs/tencent/config.d.ts +40 -6
  643. package/dist/vfs/tencent/config.d.ts.map +1 -1
  644. package/dist/vfs/tencent/config.js +5 -6
  645. package/dist/vfs/tencent/config.js.map +1 -1
  646. package/dist/vfs/tencent/tencent.d.ts +4 -5
  647. package/dist/vfs/tencent/tencent.d.ts.map +1 -1
  648. package/dist/vfs/tencent/tencent.js +2 -4
  649. package/dist/vfs/tencent/tencent.js.map +1 -1
  650. package/dist/vfs/tidb_filesystem/config.d.ts +2 -0
  651. package/dist/vfs/tidb_filesystem/config.d.ts.map +1 -0
  652. package/dist/{mount/types.js → vfs/tidb_filesystem/config.js} +2 -2
  653. package/dist/vfs/tidb_filesystem/config.js.map +1 -0
  654. package/dist/vfs/tidb_filesystem/tidb_filesystem.d.ts +16 -0
  655. package/dist/vfs/tidb_filesystem/tidb_filesystem.d.ts.map +1 -0
  656. package/dist/vfs/tidb_filesystem/tidb_filesystem.js +39 -0
  657. package/dist/vfs/tidb_filesystem/tidb_filesystem.js.map +1 -0
  658. package/dist/vfs/wasabi/config.d.ts +35 -28
  659. package/dist/vfs/wasabi/config.d.ts.map +1 -1
  660. package/dist/vfs/wasabi/config.js +20 -45
  661. package/dist/vfs/wasabi/config.js.map +1 -1
  662. package/dist/vfs/wasabi/wasabi.d.ts +4 -5
  663. package/dist/vfs/wasabi/wasabi.d.ts.map +1 -1
  664. package/dist/vfs/wasabi/wasabi.js +2 -4
  665. package/dist/vfs/wasabi/wasabi.js.map +1 -1
  666. package/dist/workspace/{session → mount/namespace}/cas.lua +7 -2
  667. package/dist/workspace/mount/namespace/disk.d.ts +12 -7
  668. package/dist/workspace/mount/namespace/disk.d.ts.map +1 -1
  669. package/dist/workspace/mount/namespace/disk.js +37 -21
  670. package/dist/workspace/mount/namespace/disk.js.map +1 -1
  671. package/dist/workspace/mount/namespace/redis.d.ts +14 -9
  672. package/dist/workspace/mount/namespace/redis.d.ts.map +1 -1
  673. package/dist/workspace/mount/namespace/redis.js +29 -14
  674. package/dist/workspace/mount/namespace/redis.js.map +1 -1
  675. package/dist/workspace/nfs.d.ts.map +1 -1
  676. package/dist/workspace/nfs.js +3 -1
  677. package/dist/workspace/nfs.js.map +1 -1
  678. package/dist/workspace/record/disk.d.ts +12 -5
  679. package/dist/workspace/record/disk.d.ts.map +1 -1
  680. package/dist/workspace/record/disk.js +119 -72
  681. package/dist/workspace/record/disk.js.map +1 -1
  682. package/dist/workspace/store/disk.d.ts +12 -5
  683. package/dist/workspace/store/disk.d.ts.map +1 -1
  684. package/dist/workspace/store/disk.js +20 -4
  685. package/dist/workspace/store/disk.js.map +1 -1
  686. package/dist/workspace/store/redis.d.ts +13 -7
  687. package/dist/workspace/store/redis.d.ts.map +1 -1
  688. package/dist/workspace/store/redis.js +53 -26
  689. package/dist/workspace/store/redis.js.map +1 -1
  690. package/dist/workspace.d.ts +3 -1
  691. package/dist/workspace.d.ts.map +1 -1
  692. package/dist/workspace.js +22 -21
  693. package/dist/workspace.js.map +1 -1
  694. package/package.json +13 -17
  695. package/dist/compression_codecs.d.ts +0 -2
  696. package/dist/compression_codecs.d.ts.map +0 -1
  697. package/dist/compression_codecs.js +0 -42
  698. package/dist/compression_codecs.js.map +0 -1
  699. package/dist/core/disk/append.d.ts +0 -4
  700. package/dist/core/disk/append.d.ts.map +0 -1
  701. package/dist/core/disk/append.js +0 -30
  702. package/dist/core/disk/append.js.map +0 -1
  703. package/dist/mount/core.d.ts +0 -313
  704. package/dist/mount/core.d.ts.map +0 -1
  705. package/dist/mount/core.js +0 -915
  706. package/dist/mount/core.js.map +0 -1
  707. package/dist/mount/platform/macos.d.ts +0 -2
  708. package/dist/mount/platform/macos.d.ts.map +0 -1
  709. package/dist/mount/platform/macos.js +0 -23
  710. package/dist/mount/platform/macos.js.map +0 -1
  711. package/dist/mount/types.d.ts +0 -37
  712. package/dist/mount/types.d.ts.map +0 -1
  713. package/dist/mount/types.js.map +0 -1
  714. package/dist/observe/redis_store.d.ts +0 -27
  715. package/dist/observe/redis_store.d.ts.map +0 -1
  716. package/dist/observe/redis_store.js +0 -81
  717. package/dist/observe/redis_store.js.map +0 -1
  718. package/dist/runtime/sandbox/cli.d.ts +0 -56
  719. package/dist/runtime/sandbox/cli.d.ts.map +0 -1
  720. package/dist/runtime/sandbox/cli.js +0 -260
  721. package/dist/runtime/sandbox/cli.js.map +0 -1
  722. package/dist/runtime/sandbox/ssh/constants.d.ts +0 -12
  723. package/dist/runtime/sandbox/ssh/constants.d.ts.map +0 -1
  724. package/dist/runtime/sandbox/ssh/constants.js +0 -32
  725. package/dist/runtime/sandbox/ssh/constants.js.map +0 -1
  726. package/dist/vfs/aliyun/prompt.d.ts +0 -2
  727. package/dist/vfs/aliyun/prompt.d.ts.map +0 -1
  728. package/dist/vfs/aliyun/prompt.js +0 -19
  729. package/dist/vfs/aliyun/prompt.js.map +0 -1
  730. package/dist/vfs/backblaze/prompt.d.ts +0 -2
  731. package/dist/vfs/backblaze/prompt.d.ts.map +0 -1
  732. package/dist/vfs/backblaze/prompt.js +0 -19
  733. package/dist/vfs/backblaze/prompt.js.map +0 -1
  734. package/dist/vfs/ceph/prompt.d.ts +0 -2
  735. package/dist/vfs/ceph/prompt.d.ts.map +0 -1
  736. package/dist/vfs/ceph/prompt.js +0 -19
  737. package/dist/vfs/ceph/prompt.js.map +0 -1
  738. package/dist/vfs/digitalocean/prompt.d.ts +0 -2
  739. package/dist/vfs/digitalocean/prompt.d.ts.map +0 -1
  740. package/dist/vfs/digitalocean/prompt.js +0 -19
  741. package/dist/vfs/digitalocean/prompt.js.map +0 -1
  742. package/dist/vfs/disk/prompt.d.ts +0 -2
  743. package/dist/vfs/disk/prompt.d.ts.map +0 -1
  744. package/dist/vfs/disk/prompt.js +0 -17
  745. package/dist/vfs/disk/prompt.js.map +0 -1
  746. package/dist/vfs/email/prompt.d.ts +0 -3
  747. package/dist/vfs/email/prompt.d.ts.map +0 -1
  748. package/dist/vfs/email/prompt.js +0 -29
  749. package/dist/vfs/email/prompt.js.map +0 -1
  750. package/dist/vfs/gcs/prompt.d.ts +0 -2
  751. package/dist/vfs/gcs/prompt.d.ts.map +0 -1
  752. package/dist/vfs/gcs/prompt.js +0 -19
  753. package/dist/vfs/gcs/prompt.js.map +0 -1
  754. package/dist/vfs/gridfs/prompt.d.ts +0 -2
  755. package/dist/vfs/gridfs/prompt.d.ts.map +0 -1
  756. package/dist/vfs/gridfs/prompt.js +0 -19
  757. package/dist/vfs/gridfs/prompt.js.map +0 -1
  758. package/dist/vfs/hf_buckets/prompt.d.ts +0 -2
  759. package/dist/vfs/hf_buckets/prompt.d.ts.map +0 -1
  760. package/dist/vfs/hf_buckets/prompt.js +0 -18
  761. package/dist/vfs/hf_buckets/prompt.js.map +0 -1
  762. package/dist/vfs/hf_datasets/prompt.d.ts +0 -2
  763. package/dist/vfs/hf_datasets/prompt.d.ts.map +0 -1
  764. package/dist/vfs/hf_datasets/prompt.js +0 -18
  765. package/dist/vfs/hf_datasets/prompt.js.map +0 -1
  766. package/dist/vfs/hf_models/prompt.d.ts +0 -2
  767. package/dist/vfs/hf_models/prompt.d.ts.map +0 -1
  768. package/dist/vfs/hf_models/prompt.js +0 -18
  769. package/dist/vfs/hf_models/prompt.js.map +0 -1
  770. package/dist/vfs/hf_spaces/prompt.d.ts +0 -2
  771. package/dist/vfs/hf_spaces/prompt.d.ts.map +0 -1
  772. package/dist/vfs/hf_spaces/prompt.js +0 -18
  773. package/dist/vfs/hf_spaces/prompt.js.map +0 -1
  774. package/dist/vfs/jaeger/config.d.ts +0 -15
  775. package/dist/vfs/jaeger/config.d.ts.map +0 -1
  776. package/dist/vfs/jaeger/config.js +0 -28
  777. package/dist/vfs/jaeger/config.js.map +0 -1
  778. package/dist/vfs/minio/prompt.d.ts +0 -2
  779. package/dist/vfs/minio/prompt.d.ts.map +0 -1
  780. package/dist/vfs/minio/prompt.js +0 -19
  781. package/dist/vfs/minio/prompt.js.map +0 -1
  782. package/dist/vfs/nextcloud/prompt.d.ts +0 -2
  783. package/dist/vfs/nextcloud/prompt.d.ts.map +0 -1
  784. package/dist/vfs/nextcloud/prompt.js +0 -6
  785. package/dist/vfs/nextcloud/prompt.js.map +0 -1
  786. package/dist/vfs/oci/prompt.d.ts +0 -2
  787. package/dist/vfs/oci/prompt.d.ts.map +0 -1
  788. package/dist/vfs/oci/prompt.js +0 -19
  789. package/dist/vfs/oci/prompt.js.map +0 -1
  790. package/dist/vfs/qingstor/prompt.d.ts +0 -2
  791. package/dist/vfs/qingstor/prompt.d.ts.map +0 -1
  792. package/dist/vfs/qingstor/prompt.js +0 -19
  793. package/dist/vfs/qingstor/prompt.js.map +0 -1
  794. package/dist/vfs/r2/prompt.d.ts +0 -2
  795. package/dist/vfs/r2/prompt.d.ts.map +0 -1
  796. package/dist/vfs/r2/prompt.js +0 -19
  797. package/dist/vfs/r2/prompt.js.map +0 -1
  798. package/dist/vfs/scaleway/prompt.d.ts +0 -2
  799. package/dist/vfs/scaleway/prompt.d.ts.map +0 -1
  800. package/dist/vfs/scaleway/prompt.js +0 -19
  801. package/dist/vfs/scaleway/prompt.js.map +0 -1
  802. package/dist/vfs/seaweedfs/prompt.d.ts +0 -2
  803. package/dist/vfs/seaweedfs/prompt.d.ts.map +0 -1
  804. package/dist/vfs/seaweedfs/prompt.js +0 -19
  805. package/dist/vfs/seaweedfs/prompt.js.map +0 -1
  806. package/dist/vfs/ssh/prompt.d.ts +0 -2
  807. package/dist/vfs/ssh/prompt.d.ts.map +0 -1
  808. package/dist/vfs/ssh/prompt.js +0 -18
  809. package/dist/vfs/ssh/prompt.js.map +0 -1
  810. package/dist/vfs/supabase/prompt.d.ts +0 -2
  811. package/dist/vfs/supabase/prompt.d.ts.map +0 -1
  812. package/dist/vfs/supabase/prompt.js +0 -19
  813. package/dist/vfs/supabase/prompt.js.map +0 -1
  814. package/dist/vfs/tencent/prompt.d.ts +0 -2
  815. package/dist/vfs/tencent/prompt.d.ts.map +0 -1
  816. package/dist/vfs/tencent/prompt.js +0 -19
  817. package/dist/vfs/tencent/prompt.js.map +0 -1
  818. package/dist/vfs/wasabi/prompt.d.ts +0 -2
  819. package/dist/vfs/wasabi/prompt.d.ts.map +0 -1
  820. package/dist/vfs/wasabi/prompt.js +0 -19
  821. package/dist/vfs/wasabi/prompt.js.map +0 -1
  822. package/dist/workspace/session/disk.d.ts +0 -13
  823. package/dist/workspace/session/disk.d.ts.map +0 -1
  824. package/dist/workspace/session/disk.js +0 -29
  825. package/dist/workspace/session/disk.js.map +0 -1
  826. package/dist/workspace/session/redis.d.ts +0 -31
  827. package/dist/workspace/session/redis.d.ts.map +0 -1
  828. package/dist/workspace/session/redis.js +0 -87
  829. package/dist/workspace/session/redis.js.map +0 -1
@@ -0,0 +1,357 @@
1
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
+ import { liveEgress, opened } from '@struktoai/mirage-core/io/gateway';
15
+ import { networkRoute } from '@struktoai/mirage-core/io/network';
16
+ import { PolicyDenied } from '@struktoai/mirage-core/policy/errors';
17
+ import { postNetworkGate, preNetworkGate, } from '@struktoai/mirage-core/policy/policies';
18
+ import { runLanding } from '@struktoai/mirage-core/context/session_context';
19
+ import { runDetached } from '@struktoai/mirage-core/utils/async_context';
20
+ import { AsyncResource } from 'node:async_hooks';
21
+ import dns from 'node:dns/promises';
22
+ import net from 'node:net';
23
+ import { relayAt, watchNetwork } from "./network.js";
24
+ // The loopback address the gateway listens on.
25
+ const LOOPBACK = '127.0.0.1';
26
+ /** Abort a socket so its peer reads a reset, never a clean end. */
27
+ function reset(socket) {
28
+ if (!socket.destroyed)
29
+ socket.resetAndDestroy();
30
+ }
31
+ /**
32
+ * Copy both ways until both sides end, counting each, and cut the
33
+ * connection with a reset once it passes `limit`'s bytes or the deadline
34
+ * its seconds set as the attempt began. Mirrors Python's `_relay`.
35
+ */
36
+ function relay(client, server, limit, counts, deadline) {
37
+ const cap = limit?.maxBytes ?? null;
38
+ return new Promise((resolve) => {
39
+ let ended = 0;
40
+ let settled = false;
41
+ const timer = deadline === null
42
+ ? null
43
+ : setTimeout(() => {
44
+ finish('limit');
45
+ }, Math.max(deadline - Date.now(), 0));
46
+ const finish = (how) => {
47
+ if (settled)
48
+ return;
49
+ settled = true;
50
+ if (timer !== null)
51
+ clearTimeout(timer);
52
+ if (how === 'closed') {
53
+ client.end();
54
+ server.end();
55
+ }
56
+ else {
57
+ reset(client);
58
+ reset(server);
59
+ }
60
+ resolve(how);
61
+ };
62
+ const pump = (src, dst, side) => {
63
+ src.on('data', (chunk) => {
64
+ if (cap !== null && counts[0] + counts[1] + chunk.length > cap) {
65
+ const left = Math.max(cap - counts[0] - counts[1], 0);
66
+ counts[side] += left;
67
+ dst.write(chunk.subarray(0, left));
68
+ finish('limit');
69
+ return;
70
+ }
71
+ counts[side] += chunk.length;
72
+ if (!dst.write(chunk)) {
73
+ src.pause();
74
+ dst.once('drain', () => src.resume());
75
+ }
76
+ });
77
+ src.on('end', () => {
78
+ dst.end();
79
+ ended += 1;
80
+ if (ended === 2)
81
+ finish('closed');
82
+ });
83
+ src.on('error', () => {
84
+ finish('error');
85
+ });
86
+ src.on('close', () => {
87
+ finish(ended === 0 ? 'error' : 'closed');
88
+ });
89
+ };
90
+ pump(client, server, 0);
91
+ pump(server, client, 1);
92
+ });
93
+ }
94
+ /**
95
+ * The one relay each judged connection of the process passes: a loopback
96
+ * listener, started apart from any line so its own connections carry no
97
+ * egress. A connection is matched to its ticket by the port it comes from.
98
+ * Mirrors Python's `_Gateway`.
99
+ */
100
+ class Gateway {
101
+ // The listener on its way up, which every connection before it waits for.
102
+ static starting = null;
103
+ server;
104
+ port = 0;
105
+ tickets = new Map();
106
+ waiting = new Map();
107
+ constructor() {
108
+ this.server = net.createServer((socket) => {
109
+ void this.serve(socket);
110
+ });
111
+ this.server.unref();
112
+ }
113
+ listen() {
114
+ return new Promise((resolve) => {
115
+ this.server.listen(0, LOOPBACK, () => {
116
+ this.port = this.server.address().port;
117
+ relayAt(LOOPBACK, this.port);
118
+ resolve();
119
+ });
120
+ });
121
+ }
122
+ expect(local, ticket) {
123
+ const waiter = this.waiting.get(local);
124
+ this.waiting.delete(local);
125
+ if (waiter !== undefined)
126
+ waiter(ticket);
127
+ else
128
+ this.tickets.set(local, ticket);
129
+ }
130
+ claimed(peer) {
131
+ const ticket = this.tickets.get(peer);
132
+ this.tickets.delete(peer);
133
+ if (ticket !== undefined)
134
+ return Promise.resolve(ticket);
135
+ return new Promise((resolve) => this.waiting.set(peer, resolve));
136
+ }
137
+ async serve(client) {
138
+ client.on('error', (err) => {
139
+ console.debug('gateway: program side failed:', err);
140
+ });
141
+ client.pause();
142
+ const ticket = await this.claimed(client.remotePort ?? 0);
143
+ try {
144
+ await this.pass(ticket, client);
145
+ }
146
+ catch (err) {
147
+ console.debug('gateway: connection failed:', err);
148
+ reset(client);
149
+ }
150
+ }
151
+ /**
152
+ * The addresses a connection to `host` may reach, in the order its lookup
153
+ * (the program's own, else the system's) gives them, each the rule lets;
154
+ * the address itself for a bare one.
155
+ */
156
+ async reach(ticket) {
157
+ const { host, port, egress } = ticket;
158
+ const rule = egress.rule;
159
+ if (net.isIP(host) !== 0)
160
+ return ['', rule === null || rule.lets('', host, port) ? [host] : []];
161
+ const lookup = ticket.lookup;
162
+ const found = lookup === null
163
+ ? (await dns.lookup(host, { all: true, verbatim: true })).map((entry) => entry.address)
164
+ : await new Promise((resolve, reject) => {
165
+ lookup(host, { all: true }, (err, address) => {
166
+ if (err !== null)
167
+ reject(err);
168
+ else
169
+ resolve(Array.isArray(address) ? address.map((entry) => entry.address) : [address]);
170
+ });
171
+ });
172
+ return [host, found.filter((address) => rule === null || rule.lets(host, address, port))];
173
+ }
174
+ /**
175
+ * One address tried and, once it answers, relayed under `limit`, whose
176
+ * seconds count from the attempt; postNetwork hears how it went either
177
+ * way. Mirrors Python's `_Gateway._attempt`.
178
+ */
179
+ async attempt(ticket, policies, ctx, passed, limit, client) {
180
+ const started = Date.now();
181
+ const deadline = limit?.timeoutSeconds == null ? null : started + limit.timeoutSeconds * 1000;
182
+ const counts = [0, 0];
183
+ let ended = 'error';
184
+ let reached = false;
185
+ try {
186
+ const server = net.connect({ host: ctx.address, port: ctx.port });
187
+ const opened = await new Promise((resolve) => {
188
+ const timer = deadline === null
189
+ ? null
190
+ : setTimeout(() => {
191
+ resolve('late');
192
+ }, Math.max(deadline - Date.now(), 0));
193
+ server.once('connect', () => {
194
+ if (timer !== null)
195
+ clearTimeout(timer);
196
+ resolve('open');
197
+ });
198
+ server.once('error', () => {
199
+ if (timer !== null)
200
+ clearTimeout(timer);
201
+ resolve('failed');
202
+ });
203
+ });
204
+ if (opened !== 'open') {
205
+ server.destroy();
206
+ if (opened === 'late') {
207
+ ended = 'limit';
208
+ reached = true;
209
+ reset(client);
210
+ }
211
+ return reached;
212
+ }
213
+ reached = true;
214
+ client.resume();
215
+ ended = await relay(client, server, limit, counts, deadline);
216
+ }
217
+ finally {
218
+ const [sent, received] = counts;
219
+ await ticket
220
+ .run(() => runLanding(() => postNetworkGate(policies, {
221
+ ...ctx,
222
+ bytesSent: sent,
223
+ bytesReceived: received,
224
+ seconds: (Date.now() - started) / 1000,
225
+ ended,
226
+ }, passed)))
227
+ .catch((err) => {
228
+ console.debug('gateway: postNetwork failed:', err);
229
+ });
230
+ }
231
+ return reached;
232
+ }
233
+ /**
234
+ * Each address the connection may reach is a connection of its own:
235
+ * judged before it is tried, and told how it went, the one reached or the
236
+ * ones that failed on the way to it. Mirrors Python's `_Gateway._pass`.
237
+ */
238
+ async pass(ticket, client) {
239
+ const policies = ticket.egress.policies;
240
+ if (policies === null)
241
+ return;
242
+ const [host, addresses] = await this.reach(ticket);
243
+ for (const address of addresses) {
244
+ const ctx = await ticket.run(() => Promise.resolve(opened(host, address, ticket.port)));
245
+ let passed;
246
+ try {
247
+ passed = await ticket.run(() => preNetworkGate(policies, ctx));
248
+ }
249
+ catch (err) {
250
+ if (!(err instanceof PolicyDenied))
251
+ throw err;
252
+ console.debug(`gateway: ${address} refused:`, err.message);
253
+ continue;
254
+ }
255
+ if (await this.attempt(ticket, policies, ctx, passed[0], passed[1], client))
256
+ return;
257
+ }
258
+ reset(client);
259
+ }
260
+ }
261
+ let gateway = null;
262
+ function started() {
263
+ Gateway.starting ??= Promise.resolve(runDetached(async () => {
264
+ const made = new Gateway();
265
+ await made.listen();
266
+ gateway = made;
267
+ return made;
268
+ }));
269
+ return Gateway.starting;
270
+ }
271
+ /**
272
+ * The egress a socket's connection answers to when a policy may listen for
273
+ * it, null to connect as asked. Mirrors Python's `_through`.
274
+ */
275
+ function through(options) {
276
+ if (options.path !== undefined)
277
+ return null;
278
+ const egress = liveEgress().at(-1);
279
+ if (egress?.policies == null || egress.listening === false)
280
+ return null;
281
+ return egress;
282
+ }
283
+ // The connect the gateway hands a connection on to: the network rule's,
284
+ // taken as the gateway starts watching.
285
+ let connect = Reflect.get(net.Socket.prototype, 'connect');
286
+ let watching = false;
287
+ function connecting(...args) {
288
+ // net.connect hands over [options, callback] already normalized; a direct
289
+ // call passes (options, callback) or (port, host, callback).
290
+ const normalized = Array.isArray(args[0]) ? args[0] : null;
291
+ const first = normalized !== null ? normalized[0] : args[0];
292
+ const callback = (normalized ?? args).find((arg) => typeof arg === 'function');
293
+ let options;
294
+ if (typeof first === 'object' && first !== null) {
295
+ options = first;
296
+ }
297
+ else if (typeof first === 'number' || (typeof first === 'string' && /^\d+$/.test(first))) {
298
+ options = { port: Number(first), ...(typeof args[1] === 'string' ? { host: args[1] } : {}) };
299
+ }
300
+ else {
301
+ return Reflect.apply(connect, this, args);
302
+ }
303
+ const egress = through(options);
304
+ if (egress === null)
305
+ return Reflect.apply(connect, this, args);
306
+ // undici hands the port over as text.
307
+ const port = Number(options.port);
308
+ // A routed connection goes, and is judged, where its route names, its end
309
+ // looked up as the system looks it up.
310
+ const routed = networkRoute(options.host ?? 'localhost', port);
311
+ const ticket = {
312
+ host: routed?.[0] ?? options.host ?? 'localhost',
313
+ port: routed?.[1] ?? port,
314
+ egress,
315
+ lookup: routed === null ? (options.lookup ?? null) : null,
316
+ run: AsyncResource.bind((fn) => fn()),
317
+ };
318
+ const redirect = (made) => {
319
+ this.once('connect', () => {
320
+ made.expect(this.localPort ?? 0, ticket);
321
+ });
322
+ const redirected = {
323
+ ...options,
324
+ host: LOOPBACK,
325
+ port: made.port,
326
+ family: 4,
327
+ autoSelectFamily: false,
328
+ };
329
+ delete redirected.lookup;
330
+ return Reflect.apply(connect, this, typeof callback === 'function' ? [redirected, callback] : [redirected]);
331
+ };
332
+ if (gateway !== null && egress.listening === true)
333
+ return redirect(gateway);
334
+ // A connection opened before the gateway listens, or before the egress
335
+ // knows whether a policy listens, waits for both; its writes queue as a
336
+ // connecting socket's do.
337
+ Reflect.set(this, 'connecting', true);
338
+ void egress.hooked
339
+ .then((hooked) => (hooked ? started().then(redirect) : Reflect.apply(connect, this, args)))
340
+ .catch((err) => {
341
+ this.destroy(err instanceof Error ? err : new Error(String(err)));
342
+ });
343
+ return this;
344
+ }
345
+ /**
346
+ * Send every connection the process opens through `through`, once; one with
347
+ * no egress bound connects as asked. Mirrors Python's `_watch`.
348
+ */
349
+ export function watch() {
350
+ if (watching)
351
+ return;
352
+ watching = true;
353
+ watchNetwork();
354
+ connect = Reflect.get(net.Socket.prototype, 'connect');
355
+ net.Socket.prototype.connect = connecting;
356
+ }
357
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/io/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type NetworkRule } from '@struktoai/mirage-core/io/network';
2
+ import { Policies } from '@struktoai/mirage-core/policy/policies';
3
+ import net from 'node:net';
4
+ import { Agent } from 'undici';
5
+ export type ConnectOptions = net.TcpSocketConnectOpts & {
6
+ path?: string;
7
+ };
8
+ /**
9
+ * Let connections to a gateway listener through the connect hook, which
10
+ * judges each one behind it. Mirrors Python's `relay_at`.
11
+ */
12
+ export declare function relayAt(host: string, port: number): void;
13
+ /**
14
+ * The pool a fetch under `key` (a rule, or a workspace's policies) takes,
15
+ * built on first use; `unverified` for curl's -k.
16
+ */
17
+ export declare function rulePool(key: NetworkRule | Policies, unverified?: boolean): Agent;
18
+ /**
19
+ * What a fetch's pooled sockets are kept apart by: the policies of a
20
+ * workspace that may judge its connections, else the rule of the call
21
+ * making it, so no socket one workspace opened carries another's request
22
+ * past its rule or its policies; null to share the process's pool.
23
+ */
24
+ export declare function poolOwner(): NetworkRule | Policies | null;
25
+ /** Close the pools a rule or a workspace's policies hold, as the workspace closes. */
26
+ export declare function releaseNetwork(key: NetworkRule | Policies): Promise<void>;
27
+ /**
28
+ * Start judging every connection the process opens, once: each socket's
29
+ * connect asks the rule of the workspace whose line or op opens it, and
30
+ * fetch keeps one pool per rule. Called as the first workspace with a rule
31
+ * is built; a connection with no rule bound goes on at once. Mirrors
32
+ * Python's `watch_network`.
33
+ */
34
+ export declare function watchNetwork(): void;
35
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/io/network.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,WAAW,EAIjB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAA;AAGjE,OAAO,GAAG,MAAM,UAAU,CAAA;AAE1B,OAAO,EAAE,KAAK,EAA4C,MAAM,QAAQ,CAAA;AAKxE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,oBAAoB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAWzE;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAExD;AA0FD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,EAAE,UAAU,UAAQ,GAAG,KAAK,CAW/E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,WAAW,GAAG,QAAQ,GAAG,IAAI,CAKzD;AAED,sFAAsF;AACtF,wBAAsB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAWnC"}
@@ -0,0 +1,187 @@
1
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
+ import { liveEgress } from '@struktoai/mirage-core/io/gateway';
15
+ import { networkBound, networkLets, networkRoute, } from '@struktoai/mirage-core/io/network';
16
+ import { Policies } from '@struktoai/mirage-core/policy/policies';
17
+ import { AsyncResource } from 'node:async_hooks';
18
+ import dns, {} from 'node:dns';
19
+ import net from 'node:net';
20
+ import { constants } from 'node:os';
21
+ import { Agent, getGlobalDispatcher, setGlobalDispatcher } from 'undici';
22
+ const connect = Reflect.get(net.Socket.prototype, 'connect');
23
+ let watching = false;
24
+ // The listeners the gateway relays from, which a connect may always reach:
25
+ // the gateway judges what is behind them.
26
+ const relays = new Set();
27
+ /**
28
+ * Let connections to a gateway listener through the connect hook, which
29
+ * judges each one behind it. Mirrors Python's `relay_at`.
30
+ */
31
+ export function relayAt(host, port) {
32
+ relays.add(`${host}:${String(port)}`);
33
+ }
34
+ /** What a refused connection fails with, as Node's own connect errors read. */
35
+ function refusal(host, port) {
36
+ return Object.assign(new Error(`connect EACCES ${host}:${String(port)}`), {
37
+ code: 'EACCES',
38
+ errno: -constants.errno.EACCES,
39
+ syscall: 'connect',
40
+ address: host,
41
+ port,
42
+ });
43
+ }
44
+ /**
45
+ * `options` with a lookup that drops each address the rule refuses for the
46
+ * name it was resolved for, and fails when none is left.
47
+ */
48
+ function judged(options, lets) {
49
+ const lookup = options.lookup ?? dns.lookup;
50
+ const port = options.port;
51
+ const judge = (hostname, given, callback) => {
52
+ lookup(hostname, given, (err, address, family) => {
53
+ if (err !== null) {
54
+ callback(err, address, family);
55
+ }
56
+ else if (Array.isArray(address)) {
57
+ const left = address.filter((entry) => lets(hostname, entry.address, port));
58
+ if (left.length === 0)
59
+ callback(refusal(hostname, port), []);
60
+ else
61
+ callback(null, left);
62
+ }
63
+ else if (lets(hostname, address, port)) {
64
+ callback(null, address, family);
65
+ }
66
+ else {
67
+ callback(refusal(hostname, port), address, family);
68
+ }
69
+ });
70
+ };
71
+ return { ...options, lookup: judge };
72
+ }
73
+ function connecting(...args) {
74
+ if (networkBound() === null)
75
+ return Reflect.apply(connect, this, args);
76
+ // net.connect hands over [options, callback] already normalized; a
77
+ // direct call passes (options, callback) or (port, host, callback).
78
+ const normalized = Array.isArray(args[0]) ? args[0] : null;
79
+ const first = normalized !== null ? normalized[0] : args[0];
80
+ let options;
81
+ if (typeof first === 'object' && first !== null) {
82
+ options = first;
83
+ }
84
+ else if (typeof first === 'number' || (typeof first === 'string' && /^\d+$/.test(first))) {
85
+ options = { port: Number(first), ...(typeof args[1] === 'string' ? { host: args[1] } : {}) };
86
+ args = [options, args.find((arg) => typeof arg === 'function')];
87
+ }
88
+ else {
89
+ return Reflect.apply(connect, this, args);
90
+ }
91
+ if (options.path !== undefined)
92
+ return Reflect.apply(connect, this, args);
93
+ // Bound here, so a lookup a resolver answers on another context still
94
+ // asks the rule of the call that opened the connection.
95
+ const lets = AsyncResource.bind(networkLets);
96
+ if (relays.has(`${options.host ?? 'localhost'}:${String(options.port)}`)) {
97
+ return Reflect.apply(connect, this, args);
98
+ }
99
+ // A routed connection goes, and is judged, where its route names, its end
100
+ // looked up as the system looks it up; undici hands the port over as text.
101
+ const routed = networkRoute(options.host ?? 'localhost', Number(options.port));
102
+ if (routed !== null) {
103
+ options = { ...options, host: routed[0], port: routed[1] };
104
+ delete options.lookup;
105
+ if (normalized !== null)
106
+ normalized[0] = options;
107
+ else
108
+ args[0] = options;
109
+ }
110
+ const host = options.host ?? 'localhost';
111
+ if (net.isIP(host) !== 0) {
112
+ if (lets('', host, options.port))
113
+ return Reflect.apply(connect, this, args);
114
+ process.nextTick(() => this.destroy(refusal(host, options.port)));
115
+ return this;
116
+ }
117
+ const replaced = judged(options, lets);
118
+ if (normalized !== null)
119
+ normalized[0] = replaced;
120
+ else
121
+ args[0] = replaced;
122
+ return Reflect.apply(connect, this, args);
123
+ }
124
+ // The pools fetch keeps for each rule, and for each workspace whose policies
125
+ // listen for connections, verified and unverified (curl's -k), so a socket a
126
+ // workspace opened is never reused for a request another workspace's rule
127
+ // never let through or its policies never saw. A policies pool keeps no
128
+ // socket alive: preNetwork judges each line's connections, and a socket an
129
+ // earlier line opened would carry a later one past it, as Python opens a
130
+ // client per request.
131
+ const pools = new WeakMap();
132
+ /**
133
+ * The pool a fetch under `key` (a rule, or a workspace's policies) takes,
134
+ * built on first use; `unverified` for curl's -k.
135
+ */
136
+ export function rulePool(key, unverified = false) {
137
+ let held = pools.get(key);
138
+ if (held === undefined) {
139
+ held = {};
140
+ pools.set(key, held);
141
+ }
142
+ const reuse = key instanceof Policies ? { pipelining: 0 } : {};
143
+ if (unverified) {
144
+ return (held.unverified ??= new Agent({ ...reuse, connect: { rejectUnauthorized: false } }));
145
+ }
146
+ return (held.verified ??= new Agent(reuse));
147
+ }
148
+ /**
149
+ * What a fetch's pooled sockets are kept apart by: the policies of a
150
+ * workspace that may judge its connections, else the rule of the call
151
+ * making it, so no socket one workspace opened carries another's request
152
+ * past its rule or its policies; null to share the process's pool.
153
+ */
154
+ export function poolOwner() {
155
+ const bound = liveEgress().at(-1);
156
+ if (bound === undefined)
157
+ return networkBound();
158
+ if (bound.policies !== null && bound.listening !== false)
159
+ return bound.policies;
160
+ return bound.rule;
161
+ }
162
+ /** Close the pools a rule or a workspace's policies hold, as the workspace closes. */
163
+ export async function releaseNetwork(key) {
164
+ const held = pools.get(key);
165
+ pools.delete(key);
166
+ await Promise.all([held?.verified?.close(), held?.unverified?.close()]);
167
+ }
168
+ /**
169
+ * Start judging every connection the process opens, once: each socket's
170
+ * connect asks the rule of the workspace whose line or op opens it, and
171
+ * fetch keeps one pool per rule. Called as the first workspace with a rule
172
+ * is built; a connection with no rule bound goes on at once. Mirrors
173
+ * Python's `watch_network`.
174
+ */
175
+ export function watchNetwork() {
176
+ if (watching)
177
+ return;
178
+ watching = true;
179
+ net.Socket.prototype.connect = connecting;
180
+ setGlobalDispatcher(getGlobalDispatcher().compose((dispatch) => (options, handler) => {
181
+ const key = poolOwner();
182
+ if (key === null)
183
+ return dispatch(options, handler);
184
+ return rulePool(key).dispatch(options, handler);
185
+ }));
186
+ }
187
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/io/network.ts"],"names":[],"mappings":"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"}
package/dist/io/spool.js CHANGED
@@ -9,14 +9,14 @@ async function createStore() {
9
9
  const file = await open(join(directory, 'data'), 'w+');
10
10
  let length = 0;
11
11
  return {
12
- async append(data) {
12
+ async write(at, data) {
13
13
  let offset = 0;
14
14
  while (offset < data.length) {
15
- const { bytesWritten } = await file.write(data, offset, data.length - offset, length);
15
+ const { bytesWritten } = await file.write(data, offset, data.length - offset, at + offset);
16
16
  if (bytesWritten === 0)
17
17
  throw new Error('spool write made no progress');
18
18
  offset += bytesWritten;
19
- length += bytesWritten;
19
+ length = Math.max(length, at + offset);
20
20
  }
21
21
  },
22
22
  async read(offset, size) {
@@ -1 +1 @@
1
- {"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/io/spool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/io/spool.ts"],"names":[],"mappings":"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"}