@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.
- package/README.md +143 -48
- package/dist/accessor/disk.d.ts +6 -0
- package/dist/accessor/disk.d.ts.map +1 -1
- package/dist/accessor/disk.js +8 -0
- package/dist/accessor/disk.js.map +1 -1
- package/dist/accessor/email.d.ts.map +1 -1
- package/dist/accessor/email.js +5 -0
- package/dist/accessor/email.js.map +1 -1
- package/dist/accessor/gridfs.d.ts.map +1 -1
- package/dist/accessor/gridfs.js +6 -1
- package/dist/accessor/gridfs.js.map +1 -1
- package/dist/accessor/hf_hub.d.ts +3 -7
- package/dist/accessor/hf_hub.d.ts.map +1 -1
- package/dist/accessor/hf_hub.js +10 -10
- package/dist/accessor/hf_hub.js.map +1 -1
- package/dist/cache/file/redis.d.ts +8 -7
- package/dist/cache/file/redis.d.ts.map +1 -1
- package/dist/cache/file/redis.js +46 -50
- package/dist/cache/file/redis.js.map +1 -1
- package/dist/commands/builtin/utils/http.js +13 -5
- package/dist/commands/builtin/utils/http.js.map +1 -1
- package/dist/commands/cli/builtin/hf/index.d.ts.map +1 -1
- package/dist/commands/cli/builtin/hf/index.js +4 -5
- package/dist/commands/cli/builtin/hf/index.js.map +1 -1
- package/dist/commands/cli/builtin/hf/upload.d.ts.map +1 -1
- package/dist/commands/cli/builtin/hf/upload.js +2 -5
- package/dist/commands/cli/builtin/hf/upload.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/builder.d.ts +2 -2
- package/dist/commands/cli/builtin/himalaya/builder.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/builder.js +1 -1
- package/dist/commands/cli/builtin/himalaya/builder.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/deliver.d.ts +35 -7
- package/dist/commands/cli/builtin/himalaya/deliver.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/deliver.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/index.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/index.js +4 -5
- package/dist/commands/cli/builtin/himalaya/index.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/query.d.ts +2 -2
- package/dist/commands/cli/builtin/himalaya/query.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/query.js +1 -1
- package/dist/commands/cli/builtin/himalaya/query.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/send.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/send.js +2 -1
- package/dist/commands/cli/builtin/himalaya/send.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/smtp.d.ts +2 -2
- package/dist/commands/cli/builtin/himalaya/smtp.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/smtp.js +5 -0
- package/dist/commands/cli/builtin/himalaya/smtp.js.map +1 -1
- package/dist/commands/cli/builtin/himalaya/util.d.ts +1 -1
- package/dist/commands/cli/builtin/himalaya/util.d.ts.map +1 -1
- package/dist/commands/cli/builtin/himalaya/util.js +6 -5
- package/dist/commands/cli/builtin/himalaya/util.js.map +1 -1
- package/dist/config.d.ts +57 -37
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +152 -277
- package/dist/config.js.map +1 -1
- package/dist/core/disk/capacity.d.ts +13 -0
- package/dist/core/disk/capacity.d.ts.map +1 -0
- package/dist/core/disk/capacity.js +93 -0
- package/dist/core/disk/capacity.js.map +1 -0
- package/dist/core/disk/constants.d.ts +0 -1
- package/dist/core/disk/constants.d.ts.map +1 -1
- package/dist/core/disk/constants.js +0 -1
- package/dist/core/disk/constants.js.map +1 -1
- package/dist/core/disk/copy.d.ts.map +1 -1
- package/dist/core/disk/copy.js +24 -13
- package/dist/core/disk/copy.js.map +1 -1
- package/dist/core/disk/mkdir.d.ts.map +1 -1
- package/dist/core/disk/mkdir.js +9 -0
- package/dist/core/disk/mkdir.js.map +1 -1
- package/dist/core/disk/read.d.ts +3 -3
- package/dist/core/disk/read.d.ts.map +1 -1
- package/dist/core/disk/read.js +4 -19
- package/dist/core/disk/read.js.map +1 -1
- package/dist/core/disk/rename.d.ts +3 -0
- package/dist/core/disk/rename.d.ts.map +1 -1
- package/dist/core/disk/rename.js +15 -1
- package/dist/core/disk/rename.js.map +1 -1
- package/dist/core/disk/rm.d.ts.map +1 -1
- package/dist/core/disk/rm.js +11 -1
- package/dist/core/disk/rm.js.map +1 -1
- package/dist/core/disk/rmdir.d.ts.map +1 -1
- package/dist/core/disk/rmdir.js +4 -0
- package/dist/core/disk/rmdir.js.map +1 -1
- package/dist/core/disk/set_attrs.d.ts +2 -9
- package/dist/core/disk/set_attrs.d.ts.map +1 -1
- package/dist/core/disk/set_attrs.js +2 -1
- package/dist/core/disk/set_attrs.js.map +1 -1
- package/dist/core/disk/stream.d.ts +8 -0
- package/dist/core/disk/stream.d.ts.map +1 -1
- package/dist/core/disk/stream.js +33 -13
- package/dist/core/disk/stream.js.map +1 -1
- package/dist/core/disk/unlink.d.ts.map +1 -1
- package/dist/core/disk/unlink.js +4 -0
- package/dist/core/disk/unlink.js.map +1 -1
- package/dist/core/disk/utils.d.ts +2 -0
- package/dist/core/disk/utils.d.ts.map +1 -1
- package/dist/core/disk/utils.js +68 -21
- package/dist/core/disk/utils.js.map +1 -1
- package/dist/core/disk/write.d.ts +7 -2
- package/dist/core/disk/write.d.ts.map +1 -1
- package/dist/core/disk/write.js +22 -16
- package/dist/core/disk/write.js.map +1 -1
- package/dist/core/email/_parse.d.ts +60 -12
- package/dist/core/email/_parse.d.ts.map +1 -1
- package/dist/core/email/_parse.js +2 -2
- package/dist/core/email/_parse.js.map +1 -1
- package/dist/core/email/client.d.ts +36 -9
- package/dist/core/email/client.d.ts.map +1 -1
- package/dist/core/email/client.js +15 -0
- package/dist/core/email/client.js.map +1 -1
- package/dist/core/email/config.d.ts +6 -9
- package/dist/core/email/config.d.ts.map +1 -1
- package/dist/core/email/config.js +31 -27
- package/dist/core/email/config.js.map +1 -1
- package/dist/core/email/readdir.d.ts +2 -2
- package/dist/core/email/readdir.d.ts.map +1 -1
- package/dist/core/email/readdir.js +1 -1
- package/dist/core/email/readdir.js.map +1 -1
- package/dist/core/email/render.d.ts +5 -5
- package/dist/core/email/render.d.ts.map +1 -1
- package/dist/core/email/render.js.map +1 -1
- package/dist/core/email/search.d.ts +2 -2
- package/dist/core/email/search.d.ts.map +1 -1
- package/dist/core/email/search.js +1 -1
- package/dist/core/email/search.js.map +1 -1
- package/dist/core/gridfs/client.d.ts +25 -2
- package/dist/core/gridfs/client.d.ts.map +1 -1
- package/dist/core/gridfs/client.js +74 -7
- package/dist/core/gridfs/client.js.map +1 -1
- package/dist/core/gridfs/constants.d.ts +1 -0
- package/dist/core/gridfs/constants.d.ts.map +1 -1
- package/dist/core/gridfs/constants.js +5 -0
- package/dist/core/gridfs/constants.js.map +1 -1
- package/dist/core/gridfs/driver.d.ts +1 -0
- package/dist/core/gridfs/driver.d.ts.map +1 -1
- package/dist/core/gridfs/driver.js +80 -67
- package/dist/core/gridfs/driver.js.map +1 -1
- package/dist/core/gridfs/events.d.ts +8 -3
- package/dist/core/gridfs/events.d.ts.map +1 -1
- package/dist/core/gridfs/events.js +11 -3
- package/dist/core/gridfs/events.js.map +1 -1
- package/dist/core/gridfs/read.d.ts +2 -7
- package/dist/core/gridfs/read.d.ts.map +1 -1
- package/dist/core/gridfs/read.js +4 -9
- package/dist/core/gridfs/read.js.map +1 -1
- package/dist/core/gridfs/stream.d.ts.map +1 -1
- package/dist/core/gridfs/stream.js +5 -2
- package/dist/core/gridfs/stream.js.map +1 -1
- package/dist/core/gridfs/write.d.ts +1 -1
- package/dist/core/gridfs/write.d.ts.map +1 -1
- package/dist/core/gridfs/write.js +2 -2
- package/dist/core/gridfs/write.js.map +1 -1
- package/dist/core/hf_buckets/driver.d.ts.map +1 -1
- package/dist/core/hf_buckets/driver.js +16 -0
- package/dist/core/hf_buckets/driver.js.map +1 -1
- package/dist/core/hf_buckets/read.d.ts +2 -6
- package/dist/core/hf_buckets/read.d.ts.map +1 -1
- package/dist/core/hf_buckets/read.js +1 -1
- package/dist/core/hf_buckets/read.js.map +1 -1
- package/dist/core/hf_buckets/stream.d.ts.map +1 -1
- package/dist/core/hf_buckets/stream.js +2 -0
- package/dist/core/hf_buckets/stream.js.map +1 -1
- package/dist/core/hf_hub/admin.d.ts +3 -4
- package/dist/core/hf_hub/admin.d.ts.map +1 -1
- package/dist/core/hf_hub/admin.js +4 -4
- package/dist/core/hf_hub/admin.js.map +1 -1
- package/dist/core/hf_hub/client.d.ts +11 -24
- package/dist/core/hf_hub/client.d.ts.map +1 -1
- package/dist/core/hf_hub/client.js +40 -97
- package/dist/core/hf_hub/client.js.map +1 -1
- package/dist/core/hf_hub/commit.d.ts +8 -9
- package/dist/core/hf_hub/commit.d.ts.map +1 -1
- package/dist/core/hf_hub/commit.js +4 -6
- package/dist/core/hf_hub/commit.js.map +1 -1
- package/dist/core/hf_hub/config.d.ts +5 -4
- package/dist/core/hf_hub/config.d.ts.map +1 -1
- package/dist/core/hf_hub/config.js +3 -1
- package/dist/core/hf_hub/config.js.map +1 -1
- package/dist/core/hf_hub/constants.d.ts +0 -1
- package/dist/core/hf_hub/constants.d.ts.map +1 -1
- package/dist/core/hf_hub/constants.js +0 -1
- package/dist/core/hf_hub/constants.js.map +1 -1
- package/dist/core/hf_hub/read.d.ts +2 -5
- package/dist/core/hf_hub/read.d.ts.map +1 -1
- package/dist/core/hf_hub/read.js.map +1 -1
- package/dist/core/hf_hub/stream.d.ts.map +1 -1
- package/dist/core/hf_hub/stream.js +2 -0
- package/dist/core/hf_hub/stream.js.map +1 -1
- package/dist/core/nextcloud/capacity.js.map +1 -1
- package/dist/core/nextcloud/checksum.js +4 -3
- package/dist/core/nextcloud/checksum.js.map +1 -1
- package/dist/core/nextcloud/constants.d.ts +2 -0
- package/dist/core/nextcloud/constants.d.ts.map +1 -1
- package/dist/core/nextcloud/constants.js +4 -0
- package/dist/core/nextcloud/constants.js.map +1 -1
- package/dist/core/nextcloud/copy.js.map +1 -1
- package/dist/core/nextcloud/dav.d.ts +9 -3
- package/dist/core/nextcloud/dav.d.ts.map +1 -1
- package/dist/core/nextcloud/dav.js +20 -2
- package/dist/core/nextcloud/dav.js.map +1 -1
- package/dist/core/nextcloud/read.d.ts +2 -6
- package/dist/core/nextcloud/read.d.ts.map +1 -1
- package/dist/core/nextcloud/read.js +1 -1
- package/dist/core/nextcloud/read.js.map +1 -1
- package/dist/core/nextcloud/search/query.js +2 -2
- package/dist/core/nextcloud/search/query.js.map +1 -1
- package/dist/core/nextcloud/search/response.d.ts +3 -2
- package/dist/core/nextcloud/search/response.d.ts.map +1 -1
- package/dist/core/nextcloud/search/response.js +5 -5
- package/dist/core/nextcloud/search/response.js.map +1 -1
- package/dist/core/nextcloud/search/types.d.ts +1 -1
- package/dist/core/nextcloud/search/types.d.ts.map +1 -1
- package/dist/core/nextcloud/set_attrs.js.map +1 -1
- package/dist/core/nextcloud/stat.d.ts.map +1 -1
- package/dist/core/nextcloud/stat.js +7 -9
- package/dist/core/nextcloud/stat.js.map +1 -1
- package/dist/core/nextcloud/stream.d.ts.map +1 -1
- package/dist/core/nextcloud/stream.js +2 -0
- package/dist/core/nextcloud/stream.js.map +1 -1
- package/dist/core/nextcloud/write.d.ts +7 -1
- package/dist/core/nextcloud/write.d.ts.map +1 -1
- package/dist/core/nextcloud/write.js +81 -8
- package/dist/core/nextcloud/write.js.map +1 -1
- package/dist/core/ssh/append.d.ts +1 -2
- package/dist/core/ssh/append.d.ts.map +1 -1
- package/dist/core/ssh/append.js +1 -4
- package/dist/core/ssh/append.js.map +1 -1
- package/dist/core/ssh/checksum.d.ts.map +1 -1
- package/dist/core/ssh/checksum.js +1 -0
- package/dist/core/ssh/checksum.js.map +1 -1
- package/dist/core/ssh/rm.d.ts.map +1 -1
- package/dist/core/ssh/rm.js +15 -6
- package/dist/core/ssh/rm.js.map +1 -1
- package/dist/core/ssh/rmdir.d.ts.map +1 -1
- package/dist/core/ssh/rmdir.js +2 -22
- package/dist/core/ssh/rmdir.js.map +1 -1
- package/dist/core/ssh/set_attrs.d.ts +2 -9
- package/dist/core/ssh/set_attrs.d.ts.map +1 -1
- package/dist/core/ssh/set_attrs.js +1 -1
- package/dist/core/ssh/set_attrs.js.map +1 -1
- package/dist/core/ssh/stat.d.ts.map +1 -1
- package/dist/core/ssh/stat.js +5 -4
- package/dist/core/ssh/stat.js.map +1 -1
- package/dist/core/ssh/stream.d.ts.map +1 -1
- package/dist/core/ssh/stream.js +10 -1
- package/dist/core/ssh/stream.js.map +1 -1
- package/dist/core/ssh/utils.d.ts +8 -2
- package/dist/core/ssh/utils.d.ts.map +1 -1
- package/dist/core/ssh/utils.js +24 -3
- package/dist/core/ssh/utils.js.map +1 -1
- package/dist/core/ssh/write.d.ts +1 -2
- package/dist/core/ssh/write.d.ts.map +1 -1
- package/dist/core/ssh/write.js +1 -4
- package/dist/core/ssh/write.js.map +1 -1
- package/dist/fuse/constants.d.ts +3 -2
- package/dist/fuse/constants.d.ts.map +1 -1
- package/dist/fuse/constants.js +6 -3
- package/dist/fuse/constants.js.map +1 -1
- package/dist/fuse/fs.d.ts +1 -1
- package/dist/fuse/fs.d.ts.map +1 -1
- package/dist/fuse/fs.js +6 -3
- package/dist/fuse/fs.js.map +1 -1
- package/dist/fuse/mount.d.ts +5 -0
- package/dist/fuse/mount.d.ts.map +1 -1
- package/dist/fuse/mount.js +47 -15
- package/dist/fuse/mount.js.map +1 -1
- package/dist/index.d.ts +130 -159
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -135
- package/dist/index.js.map +1 -1
- package/dist/io/gateway.d.ts +6 -0
- package/dist/io/gateway.d.ts.map +1 -0
- package/dist/io/gateway.js +357 -0
- package/dist/io/gateway.js.map +1 -0
- package/dist/io/network.d.ts +35 -0
- package/dist/io/network.d.ts.map +1 -0
- package/dist/io/network.js +187 -0
- package/dist/io/network.js.map +1 -0
- package/dist/io/spool.js +3 -3
- package/dist/io/spool.js.map +1 -1
- package/dist/mount/constants.d.ts +9 -2
- package/dist/mount/constants.d.ts.map +1 -1
- package/dist/mount/constants.js +9 -2
- package/dist/mount/constants.js.map +1 -1
- package/dist/mount/errors.d.ts +2 -11
- package/dist/mount/errors.d.ts.map +1 -1
- package/dist/mount/errors.js +28 -42
- package/dist/mount/errors.js.map +1 -1
- package/dist/mount/nfs.d.ts +2 -2
- package/dist/mount/nfs.d.ts.map +1 -1
- package/dist/mount/nfs.js +8 -20
- package/dist/mount/nfs.js.map +1 -1
- package/dist/mount/sftp.d.ts +3 -3
- package/dist/mount/sftp.d.ts.map +1 -1
- package/dist/mount/sftp.js +26 -53
- package/dist/mount/sftp.js.map +1 -1
- package/dist/observe/disk_store.js +1 -1
- package/dist/observe/disk_store.js.map +1 -1
- package/dist/runtime/js/host/constants.d.ts +1 -1
- package/dist/runtime/js/host/constants.d.ts.map +1 -1
- package/dist/runtime/js/host/constants.js +9 -8
- package/dist/runtime/js/host/constants.js.map +1 -1
- package/dist/runtime/js/host/descriptors.d.ts +11 -71
- package/dist/runtime/js/host/descriptors.d.ts.map +1 -1
- package/dist/runtime/js/host/descriptors.js +16 -202
- package/dist/runtime/js/host/descriptors.js.map +1 -1
- package/dist/runtime/js/host/fs.d.ts.map +1 -1
- package/dist/runtime/js/host/fs.js +491 -135
- package/dist/runtime/js/host/fs.js.map +1 -1
- package/dist/runtime/js/host/list.d.ts +21 -0
- package/dist/runtime/js/host/list.d.ts.map +1 -0
- package/dist/runtime/js/host/list.js +107 -0
- package/dist/runtime/js/host/list.js.map +1 -0
- package/dist/runtime/js/host/stat.d.ts +10 -0
- package/dist/runtime/js/host/stat.d.ts.map +1 -0
- package/dist/runtime/js/host/stat.js +70 -0
- package/dist/runtime/js/host/stat.js.map +1 -0
- package/dist/runtime/python/local/runtime.d.ts +8 -7
- package/dist/runtime/python/local/runtime.d.ts.map +1 -1
- package/dist/runtime/python/local/runtime.js +51 -74
- package/dist/runtime/python/local/runtime.js.map +1 -1
- package/dist/runtime/sandbox/apple_container/constants.d.ts +2 -3
- package/dist/runtime/sandbox/apple_container/constants.d.ts.map +1 -1
- package/dist/runtime/sandbox/apple_container/constants.js +4 -11
- package/dist/runtime/sandbox/apple_container/constants.js.map +1 -1
- package/dist/runtime/sandbox/apple_container/runtime.d.ts +14 -10
- package/dist/runtime/sandbox/apple_container/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/apple_container/runtime.js +38 -57
- package/dist/runtime/sandbox/apple_container/runtime.js.map +1 -1
- package/dist/runtime/sandbox/daytona/constants.d.ts +27 -0
- package/dist/runtime/sandbox/daytona/constants.d.ts.map +1 -0
- package/dist/runtime/sandbox/daytona/constants.js +47 -0
- package/dist/runtime/sandbox/daytona/constants.js.map +1 -0
- package/dist/runtime/sandbox/daytona/runtime.d.ts +6 -4
- package/dist/runtime/sandbox/daytona/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/daytona/runtime.js +13 -9
- package/dist/runtime/sandbox/daytona/runtime.js.map +1 -1
- package/dist/runtime/sandbox/docker/constants.d.ts +6 -1
- package/dist/runtime/sandbox/docker/constants.d.ts.map +1 -1
- package/dist/runtime/sandbox/docker/constants.js +6 -1
- package/dist/runtime/sandbox/docker/constants.js.map +1 -1
- package/dist/runtime/sandbox/docker/runtime.d.ts +8 -6
- package/dist/runtime/sandbox/docker/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/docker/runtime.js +22 -28
- package/dist/runtime/sandbox/docker/runtime.js.map +1 -1
- package/dist/runtime/sandbox/microsandbox/constants.d.ts +1 -3
- package/dist/runtime/sandbox/microsandbox/constants.d.ts.map +1 -1
- package/dist/runtime/sandbox/microsandbox/constants.js +1 -5
- package/dist/runtime/sandbox/microsandbox/constants.js.map +1 -1
- package/dist/runtime/sandbox/microsandbox/runtime.d.ts +9 -8
- package/dist/runtime/sandbox/microsandbox/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/microsandbox/runtime.js +26 -56
- package/dist/runtime/sandbox/microsandbox/runtime.js.map +1 -1
- package/dist/runtime/sandbox/program.d.ts +165 -0
- package/dist/runtime/sandbox/program.d.ts.map +1 -0
- package/dist/runtime/sandbox/program.js +724 -0
- package/dist/runtime/sandbox/program.js.map +1 -0
- package/dist/runtime/sandbox/sandlock/constants.d.ts +1 -1
- package/dist/runtime/sandbox/sandlock/constants.d.ts.map +1 -1
- package/dist/runtime/sandbox/sandlock/constants.js +1 -1
- package/dist/runtime/sandbox/sandlock/constants.js.map +1 -1
- package/dist/runtime/sandbox/sandlock/runtime.d.ts +5 -6
- package/dist/runtime/sandbox/sandlock/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/sandlock/runtime.js +27 -16
- package/dist/runtime/sandbox/sandlock/runtime.js.map +1 -1
- package/dist/runtime/sandbox/smolvm/constants.d.ts +2 -3
- package/dist/runtime/sandbox/smolvm/constants.d.ts.map +1 -1
- package/dist/runtime/sandbox/smolvm/constants.js +6 -13
- package/dist/runtime/sandbox/smolvm/constants.js.map +1 -1
- package/dist/runtime/sandbox/smolvm/runtime.d.ts +9 -8
- package/dist/runtime/sandbox/smolvm/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/smolvm/runtime.js +24 -45
- package/dist/runtime/sandbox/smolvm/runtime.js.map +1 -1
- package/dist/runtime/sandbox/ssh/runtime.d.ts +23 -12
- package/dist/runtime/sandbox/ssh/runtime.d.ts.map +1 -1
- package/dist/runtime/sandbox/ssh/runtime.js +88 -30
- package/dist/runtime/sandbox/ssh/runtime.js.map +1 -1
- package/dist/secrets/config.d.ts +2 -2
- package/dist/secrets/config.d.ts.map +1 -1
- package/dist/secrets/onepassword.d.ts +5 -8
- package/dist/secrets/onepassword.d.ts.map +1 -1
- package/dist/secrets/onepassword.js.map +1 -1
- package/dist/shell/console/redis/constants.d.ts +1 -0
- package/dist/shell/console/redis/constants.d.ts.map +1 -1
- package/dist/shell/console/redis/constants.js +3 -0
- package/dist/shell/console/redis/constants.js.map +1 -1
- package/dist/shell/console/redis/store.d.ts +24 -9
- package/dist/shell/console/redis/store.d.ts.map +1 -1
- package/dist/shell/console/redis/store.js +48 -16
- package/dist/shell/console/redis/store.js.map +1 -1
- package/dist/shell/job_table/redis.d.ts +52 -0
- package/dist/shell/job_table/redis.d.ts.map +1 -0
- package/dist/shell/job_table/redis.js +156 -0
- package/dist/shell/job_table/redis.js.map +1 -0
- package/dist/utils/loader.d.ts.map +1 -1
- package/dist/utils/loader.js +1 -3
- package/dist/utils/loader.js.map +1 -1
- package/dist/vfs/aliyun/aliyun.d.ts +4 -5
- package/dist/vfs/aliyun/aliyun.d.ts.map +1 -1
- package/dist/vfs/aliyun/aliyun.js +2 -4
- package/dist/vfs/aliyun/aliyun.js.map +1 -1
- package/dist/vfs/aliyun/config.d.ts +40 -6
- package/dist/vfs/aliyun/config.d.ts.map +1 -1
- package/dist/vfs/aliyun/config.js +5 -6
- package/dist/vfs/aliyun/config.js.map +1 -1
- package/dist/vfs/backblaze/backblaze.d.ts +4 -5
- package/dist/vfs/backblaze/backblaze.d.ts.map +1 -1
- package/dist/vfs/backblaze/backblaze.js +2 -4
- package/dist/vfs/backblaze/backblaze.js.map +1 -1
- package/dist/vfs/backblaze/config.d.ts +40 -6
- package/dist/vfs/backblaze/config.d.ts.map +1 -1
- package/dist/vfs/backblaze/config.js +5 -6
- package/dist/vfs/backblaze/config.js.map +1 -1
- package/dist/vfs/ceph/ceph.d.ts +4 -5
- package/dist/vfs/ceph/ceph.d.ts.map +1 -1
- package/dist/vfs/ceph/ceph.js +2 -4
- package/dist/vfs/ceph/ceph.js.map +1 -1
- package/dist/vfs/ceph/config.d.ts +42 -5
- package/dist/vfs/ceph/config.d.ts.map +1 -1
- package/dist/vfs/ceph/config.js +7 -5
- package/dist/vfs/ceph/config.js.map +1 -1
- package/dist/vfs/databricks_volume/config.d.ts +2 -2
- package/dist/vfs/databricks_volume/config.d.ts.map +1 -1
- package/dist/vfs/databricks_volume/config.js +1 -1
- package/dist/vfs/databricks_volume/config.js.map +1 -1
- package/dist/vfs/databricks_volume/databricks_volume.d.ts +6 -9
- package/dist/vfs/databricks_volume/databricks_volume.d.ts.map +1 -1
- package/dist/vfs/databricks_volume/databricks_volume.js +4 -9
- package/dist/vfs/databricks_volume/databricks_volume.js.map +1 -1
- package/dist/vfs/digitalocean/config.d.ts +40 -6
- package/dist/vfs/digitalocean/config.d.ts.map +1 -1
- package/dist/vfs/digitalocean/config.js +5 -6
- package/dist/vfs/digitalocean/config.js.map +1 -1
- package/dist/vfs/digitalocean/digitalocean.d.ts +4 -5
- package/dist/vfs/digitalocean/digitalocean.d.ts.map +1 -1
- package/dist/vfs/digitalocean/digitalocean.js +2 -4
- package/dist/vfs/digitalocean/digitalocean.js.map +1 -1
- package/dist/vfs/discord/discord.d.ts +7 -10
- package/dist/vfs/discord/discord.d.ts.map +1 -1
- package/dist/vfs/discord/discord.js +7 -12
- package/dist/vfs/discord/discord.js.map +1 -1
- package/dist/vfs/disk/disk.d.ts +14 -14
- package/dist/vfs/disk/disk.d.ts.map +1 -1
- package/dist/vfs/disk/disk.js +87 -52
- package/dist/vfs/disk/disk.js.map +1 -1
- package/dist/vfs/dropbox/config.d.ts +7 -12
- package/dist/vfs/dropbox/config.d.ts.map +1 -1
- package/dist/vfs/dropbox/config.js +18 -15
- package/dist/vfs/dropbox/config.js.map +1 -1
- package/dist/vfs/email/email.d.ts +13 -11
- package/dist/vfs/email/email.d.ts.map +1 -1
- package/dist/vfs/email/email.js +31 -16
- package/dist/vfs/email/email.js.map +1 -1
- package/dist/vfs/email/index.d.ts +1 -2
- package/dist/vfs/email/index.d.ts.map +1 -1
- package/dist/vfs/email/index.js +1 -2
- package/dist/vfs/email/index.js.map +1 -1
- package/dist/vfs/gcs/config.d.ts +36 -28
- package/dist/vfs/gcs/config.d.ts.map +1 -1
- package/dist/vfs/gcs/config.js +15 -39
- package/dist/vfs/gcs/config.js.map +1 -1
- package/dist/vfs/gcs/gcs.d.ts +4 -5
- package/dist/vfs/gcs/gcs.d.ts.map +1 -1
- package/dist/vfs/gcs/gcs.js +2 -4
- package/dist/vfs/gcs/gcs.js.map +1 -1
- package/dist/vfs/gridfs/config.d.ts +6 -7
- package/dist/vfs/gridfs/config.d.ts.map +1 -1
- package/dist/vfs/gridfs/config.js +25 -11
- package/dist/vfs/gridfs/config.js.map +1 -1
- package/dist/vfs/gridfs/gridfs.d.ts +10 -18
- package/dist/vfs/gridfs/gridfs.d.ts.map +1 -1
- package/dist/vfs/gridfs/gridfs.js +23 -40
- package/dist/vfs/gridfs/gridfs.js.map +1 -1
- package/dist/vfs/hf_buckets/config.d.ts +14 -17
- package/dist/vfs/hf_buckets/config.d.ts.map +1 -1
- package/dist/vfs/hf_buckets/config.js +41 -28
- package/dist/vfs/hf_buckets/config.js.map +1 -1
- package/dist/vfs/hf_buckets/hf_buckets.d.ts +10 -15
- package/dist/vfs/hf_buckets/hf_buckets.d.ts.map +1 -1
- package/dist/vfs/hf_buckets/hf_buckets.js +14 -22
- package/dist/vfs/hf_buckets/hf_buckets.js.map +1 -1
- package/dist/vfs/hf_datasets/config.d.ts +1 -4
- package/dist/vfs/hf_datasets/config.d.ts.map +1 -1
- package/dist/vfs/hf_datasets/config.js +1 -3
- package/dist/vfs/hf_datasets/config.js.map +1 -1
- package/dist/vfs/hf_datasets/hf_datasets.d.ts +4 -7
- package/dist/vfs/hf_datasets/hf_datasets.d.ts.map +1 -1
- package/dist/vfs/hf_datasets/hf_datasets.js +4 -6
- package/dist/vfs/hf_datasets/hf_datasets.js.map +1 -1
- package/dist/vfs/hf_hub/base.d.ts +4 -8
- package/dist/vfs/hf_hub/base.d.ts.map +1 -1
- package/dist/vfs/hf_hub/base.js +7 -11
- package/dist/vfs/hf_hub/base.js.map +1 -1
- package/dist/vfs/hf_models/config.d.ts +1 -4
- package/dist/vfs/hf_models/config.d.ts.map +1 -1
- package/dist/vfs/hf_models/config.js +1 -3
- package/dist/vfs/hf_models/config.js.map +1 -1
- package/dist/vfs/hf_models/hf_models.d.ts +4 -7
- package/dist/vfs/hf_models/hf_models.d.ts.map +1 -1
- package/dist/vfs/hf_models/hf_models.js +4 -6
- package/dist/vfs/hf_models/hf_models.js.map +1 -1
- package/dist/vfs/hf_spaces/config.d.ts +1 -4
- package/dist/vfs/hf_spaces/config.d.ts.map +1 -1
- package/dist/vfs/hf_spaces/config.js +1 -3
- package/dist/vfs/hf_spaces/config.js.map +1 -1
- package/dist/vfs/hf_spaces/hf_spaces.d.ts +4 -7
- package/dist/vfs/hf_spaces/hf_spaces.d.ts.map +1 -1
- package/dist/vfs/hf_spaces/hf_spaces.js +4 -6
- package/dist/vfs/hf_spaces/hf_spaces.js.map +1 -1
- package/dist/vfs/jaeger/jaeger.d.ts +7 -9
- package/dist/vfs/jaeger/jaeger.d.ts.map +1 -1
- package/dist/vfs/jaeger/jaeger.js +7 -11
- package/dist/vfs/jaeger/jaeger.js.map +1 -1
- package/dist/vfs/lancedb/lancedb.d.ts +10 -11
- package/dist/vfs/lancedb/lancedb.d.ts.map +1 -1
- package/dist/vfs/lancedb/lancedb.js +4 -5
- package/dist/vfs/lancedb/lancedb.js.map +1 -1
- package/dist/vfs/lancedb/store.d.ts +2 -2
- package/dist/vfs/lancedb/store.d.ts.map +1 -1
- package/dist/vfs/lancedb/store.js +3 -0
- package/dist/vfs/lancedb/store.js.map +1 -1
- package/dist/vfs/minio/config.d.ts +42 -5
- package/dist/vfs/minio/config.d.ts.map +1 -1
- package/dist/vfs/minio/config.js +7 -5
- package/dist/vfs/minio/config.js.map +1 -1
- package/dist/vfs/minio/minio.d.ts +4 -5
- package/dist/vfs/minio/minio.d.ts.map +1 -1
- package/dist/vfs/minio/minio.js +2 -4
- package/dist/vfs/minio/minio.js.map +1 -1
- package/dist/vfs/mongodb/mongodb.d.ts +10 -11
- package/dist/vfs/mongodb/mongodb.d.ts.map +1 -1
- package/dist/vfs/mongodb/mongodb.js +6 -7
- package/dist/vfs/mongodb/mongodb.js.map +1 -1
- package/dist/vfs/mongodb/store.d.ts +2 -1
- package/dist/vfs/mongodb/store.d.ts.map +1 -1
- package/dist/vfs/mongodb/store.js +11 -3
- package/dist/vfs/mongodb/store.js.map +1 -1
- package/dist/vfs/nextcloud/config.d.ts +5 -8
- package/dist/vfs/nextcloud/config.d.ts.map +1 -1
- package/dist/vfs/nextcloud/config.js +19 -13
- package/dist/vfs/nextcloud/config.js.map +1 -1
- package/dist/vfs/nextcloud/nextcloud.d.ts +8 -14
- package/dist/vfs/nextcloud/nextcloud.d.ts.map +1 -1
- package/dist/vfs/nextcloud/nextcloud.js +18 -29
- package/dist/vfs/nextcloud/nextcloud.js.map +1 -1
- package/dist/vfs/notion/notion.d.ts +7 -10
- package/dist/vfs/notion/notion.d.ts.map +1 -1
- package/dist/vfs/notion/notion.js +7 -10
- package/dist/vfs/notion/notion.js.map +1 -1
- package/dist/vfs/oci/config.d.ts +41 -27
- package/dist/vfs/oci/config.d.ts.map +1 -1
- package/dist/vfs/oci/config.js +18 -45
- package/dist/vfs/oci/config.js.map +1 -1
- package/dist/vfs/oci/oci.d.ts +4 -5
- package/dist/vfs/oci/oci.d.ts.map +1 -1
- package/dist/vfs/oci/oci.js +2 -4
- package/dist/vfs/oci/oci.js.map +1 -1
- package/dist/vfs/postgres/postgres.d.ts +10 -11
- package/dist/vfs/postgres/postgres.d.ts.map +1 -1
- package/dist/vfs/postgres/postgres.js +5 -6
- package/dist/vfs/postgres/postgres.js.map +1 -1
- package/dist/vfs/postgres/store.d.ts +3 -3
- package/dist/vfs/postgres/store.d.ts.map +1 -1
- package/dist/vfs/postgres/store.js +1 -0
- package/dist/vfs/postgres/store.js.map +1 -1
- package/dist/vfs/qingstor/config.d.ts +40 -6
- package/dist/vfs/qingstor/config.d.ts.map +1 -1
- package/dist/vfs/qingstor/config.js +5 -6
- package/dist/vfs/qingstor/config.js.map +1 -1
- package/dist/vfs/qingstor/qingstor.d.ts +4 -5
- package/dist/vfs/qingstor/qingstor.d.ts.map +1 -1
- package/dist/vfs/qingstor/qingstor.js +2 -4
- package/dist/vfs/qingstor/qingstor.js.map +1 -1
- package/dist/vfs/r2/config.d.ts +39 -28
- package/dist/vfs/r2/config.d.ts.map +1 -1
- package/dist/vfs/r2/config.js +24 -48
- package/dist/vfs/r2/config.js.map +1 -1
- package/dist/vfs/r2/r2.d.ts +4 -5
- package/dist/vfs/r2/r2.d.ts.map +1 -1
- package/dist/vfs/r2/r2.js +2 -4
- package/dist/vfs/r2/r2.js.map +1 -1
- package/dist/vfs/redis/redis.d.ts +3 -0
- package/dist/vfs/redis/redis.d.ts.map +1 -1
- package/dist/vfs/redis/redis.js +1 -1
- package/dist/vfs/redis/redis.js.map +1 -1
- package/dist/vfs/redis/store.d.ts +2 -0
- package/dist/vfs/redis/store.d.ts.map +1 -1
- package/dist/vfs/redis/store.js +13 -2
- package/dist/vfs/redis/store.js.map +1 -1
- package/dist/vfs/registry.d.ts.map +1 -1
- package/dist/vfs/registry.js +111 -105
- package/dist/vfs/registry.js.map +1 -1
- package/dist/vfs/s3/config.d.ts +12 -23
- package/dist/vfs/s3/config.d.ts.map +1 -1
- package/dist/vfs/s3/config.js +16 -31
- package/dist/vfs/s3/config.js.map +1 -1
- package/dist/vfs/s3/s3.d.ts +6 -9
- package/dist/vfs/s3/s3.d.ts.map +1 -1
- package/dist/vfs/s3/s3.js +11 -14
- package/dist/vfs/s3/s3.js.map +1 -1
- package/dist/vfs/s3_alias.d.ts +69 -53
- package/dist/vfs/s3_alias.d.ts.map +1 -1
- package/dist/vfs/s3_alias.js +86 -82
- package/dist/vfs/s3_alias.js.map +1 -1
- package/dist/vfs/scaleway/config.d.ts +40 -6
- package/dist/vfs/scaleway/config.d.ts.map +1 -1
- package/dist/vfs/scaleway/config.js +5 -6
- package/dist/vfs/scaleway/config.js.map +1 -1
- package/dist/vfs/scaleway/scaleway.d.ts +4 -5
- package/dist/vfs/scaleway/scaleway.d.ts.map +1 -1
- package/dist/vfs/scaleway/scaleway.js +2 -4
- package/dist/vfs/scaleway/scaleway.js.map +1 -1
- package/dist/vfs/seaweedfs/config.d.ts +42 -5
- package/dist/vfs/seaweedfs/config.d.ts.map +1 -1
- package/dist/vfs/seaweedfs/config.js +7 -5
- package/dist/vfs/seaweedfs/config.js.map +1 -1
- package/dist/vfs/seaweedfs/seaweedfs.d.ts +4 -5
- package/dist/vfs/seaweedfs/seaweedfs.d.ts.map +1 -1
- package/dist/vfs/seaweedfs/seaweedfs.js +2 -4
- package/dist/vfs/seaweedfs/seaweedfs.js.map +1 -1
- package/dist/vfs/slack/slack.d.ts +7 -10
- package/dist/vfs/slack/slack.d.ts.map +1 -1
- package/dist/vfs/slack/slack.js +7 -12
- package/dist/vfs/slack/slack.js.map +1 -1
- package/dist/vfs/ssh/config.d.ts +5 -9
- package/dist/vfs/ssh/config.d.ts.map +1 -1
- package/dist/vfs/ssh/config.js +28 -18
- package/dist/vfs/ssh/config.js.map +1 -1
- package/dist/vfs/ssh/ssh.d.ts +8 -17
- package/dist/vfs/ssh/ssh.d.ts.map +1 -1
- package/dist/vfs/ssh/ssh.js +25 -43
- package/dist/vfs/ssh/ssh.js.map +1 -1
- package/dist/vfs/supabase/config.d.ts +40 -27
- package/dist/vfs/supabase/config.d.ts.map +1 -1
- package/dist/vfs/supabase/config.js +24 -48
- package/dist/vfs/supabase/config.js.map +1 -1
- package/dist/vfs/supabase/supabase.d.ts +4 -5
- package/dist/vfs/supabase/supabase.d.ts.map +1 -1
- package/dist/vfs/supabase/supabase.js +2 -4
- package/dist/vfs/supabase/supabase.js.map +1 -1
- package/dist/vfs/tencent/config.d.ts +40 -6
- package/dist/vfs/tencent/config.d.ts.map +1 -1
- package/dist/vfs/tencent/config.js +5 -6
- package/dist/vfs/tencent/config.js.map +1 -1
- package/dist/vfs/tencent/tencent.d.ts +4 -5
- package/dist/vfs/tencent/tencent.d.ts.map +1 -1
- package/dist/vfs/tencent/tencent.js +2 -4
- package/dist/vfs/tencent/tencent.js.map +1 -1
- package/dist/vfs/tidb_filesystem/config.d.ts +2 -0
- package/dist/vfs/tidb_filesystem/config.d.ts.map +1 -0
- package/dist/{mount/types.js → vfs/tidb_filesystem/config.js} +2 -2
- package/dist/vfs/tidb_filesystem/config.js.map +1 -0
- package/dist/vfs/tidb_filesystem/tidb_filesystem.d.ts +16 -0
- package/dist/vfs/tidb_filesystem/tidb_filesystem.d.ts.map +1 -0
- package/dist/vfs/tidb_filesystem/tidb_filesystem.js +39 -0
- package/dist/vfs/tidb_filesystem/tidb_filesystem.js.map +1 -0
- package/dist/vfs/wasabi/config.d.ts +35 -28
- package/dist/vfs/wasabi/config.d.ts.map +1 -1
- package/dist/vfs/wasabi/config.js +20 -45
- package/dist/vfs/wasabi/config.js.map +1 -1
- package/dist/vfs/wasabi/wasabi.d.ts +4 -5
- package/dist/vfs/wasabi/wasabi.d.ts.map +1 -1
- package/dist/vfs/wasabi/wasabi.js +2 -4
- package/dist/vfs/wasabi/wasabi.js.map +1 -1
- package/dist/workspace/{session → mount/namespace}/cas.lua +7 -2
- package/dist/workspace/mount/namespace/disk.d.ts +12 -7
- package/dist/workspace/mount/namespace/disk.d.ts.map +1 -1
- package/dist/workspace/mount/namespace/disk.js +37 -21
- package/dist/workspace/mount/namespace/disk.js.map +1 -1
- package/dist/workspace/mount/namespace/redis.d.ts +14 -9
- package/dist/workspace/mount/namespace/redis.d.ts.map +1 -1
- package/dist/workspace/mount/namespace/redis.js +29 -14
- package/dist/workspace/mount/namespace/redis.js.map +1 -1
- package/dist/workspace/nfs.d.ts.map +1 -1
- package/dist/workspace/nfs.js +3 -1
- package/dist/workspace/nfs.js.map +1 -1
- package/dist/workspace/record/disk.d.ts +12 -5
- package/dist/workspace/record/disk.d.ts.map +1 -1
- package/dist/workspace/record/disk.js +119 -72
- package/dist/workspace/record/disk.js.map +1 -1
- package/dist/workspace/store/disk.d.ts +12 -5
- package/dist/workspace/store/disk.d.ts.map +1 -1
- package/dist/workspace/store/disk.js +20 -4
- package/dist/workspace/store/disk.js.map +1 -1
- package/dist/workspace/store/redis.d.ts +13 -7
- package/dist/workspace/store/redis.d.ts.map +1 -1
- package/dist/workspace/store/redis.js +53 -26
- package/dist/workspace/store/redis.js.map +1 -1
- package/dist/workspace.d.ts +3 -1
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +22 -21
- package/dist/workspace.js.map +1 -1
- package/package.json +13 -17
- package/dist/compression_codecs.d.ts +0 -2
- package/dist/compression_codecs.d.ts.map +0 -1
- package/dist/compression_codecs.js +0 -42
- package/dist/compression_codecs.js.map +0 -1
- package/dist/core/disk/append.d.ts +0 -4
- package/dist/core/disk/append.d.ts.map +0 -1
- package/dist/core/disk/append.js +0 -30
- package/dist/core/disk/append.js.map +0 -1
- package/dist/mount/core.d.ts +0 -313
- package/dist/mount/core.d.ts.map +0 -1
- package/dist/mount/core.js +0 -915
- package/dist/mount/core.js.map +0 -1
- package/dist/mount/platform/macos.d.ts +0 -2
- package/dist/mount/platform/macos.d.ts.map +0 -1
- package/dist/mount/platform/macos.js +0 -23
- package/dist/mount/platform/macos.js.map +0 -1
- package/dist/mount/types.d.ts +0 -37
- package/dist/mount/types.d.ts.map +0 -1
- package/dist/mount/types.js.map +0 -1
- package/dist/observe/redis_store.d.ts +0 -27
- package/dist/observe/redis_store.d.ts.map +0 -1
- package/dist/observe/redis_store.js +0 -81
- package/dist/observe/redis_store.js.map +0 -1
- package/dist/runtime/sandbox/cli.d.ts +0 -56
- package/dist/runtime/sandbox/cli.d.ts.map +0 -1
- package/dist/runtime/sandbox/cli.js +0 -260
- package/dist/runtime/sandbox/cli.js.map +0 -1
- package/dist/runtime/sandbox/ssh/constants.d.ts +0 -12
- package/dist/runtime/sandbox/ssh/constants.d.ts.map +0 -1
- package/dist/runtime/sandbox/ssh/constants.js +0 -32
- package/dist/runtime/sandbox/ssh/constants.js.map +0 -1
- package/dist/vfs/aliyun/prompt.d.ts +0 -2
- package/dist/vfs/aliyun/prompt.d.ts.map +0 -1
- package/dist/vfs/aliyun/prompt.js +0 -19
- package/dist/vfs/aliyun/prompt.js.map +0 -1
- package/dist/vfs/backblaze/prompt.d.ts +0 -2
- package/dist/vfs/backblaze/prompt.d.ts.map +0 -1
- package/dist/vfs/backblaze/prompt.js +0 -19
- package/dist/vfs/backblaze/prompt.js.map +0 -1
- package/dist/vfs/ceph/prompt.d.ts +0 -2
- package/dist/vfs/ceph/prompt.d.ts.map +0 -1
- package/dist/vfs/ceph/prompt.js +0 -19
- package/dist/vfs/ceph/prompt.js.map +0 -1
- package/dist/vfs/digitalocean/prompt.d.ts +0 -2
- package/dist/vfs/digitalocean/prompt.d.ts.map +0 -1
- package/dist/vfs/digitalocean/prompt.js +0 -19
- package/dist/vfs/digitalocean/prompt.js.map +0 -1
- package/dist/vfs/disk/prompt.d.ts +0 -2
- package/dist/vfs/disk/prompt.d.ts.map +0 -1
- package/dist/vfs/disk/prompt.js +0 -17
- package/dist/vfs/disk/prompt.js.map +0 -1
- package/dist/vfs/email/prompt.d.ts +0 -3
- package/dist/vfs/email/prompt.d.ts.map +0 -1
- package/dist/vfs/email/prompt.js +0 -29
- package/dist/vfs/email/prompt.js.map +0 -1
- package/dist/vfs/gcs/prompt.d.ts +0 -2
- package/dist/vfs/gcs/prompt.d.ts.map +0 -1
- package/dist/vfs/gcs/prompt.js +0 -19
- package/dist/vfs/gcs/prompt.js.map +0 -1
- package/dist/vfs/gridfs/prompt.d.ts +0 -2
- package/dist/vfs/gridfs/prompt.d.ts.map +0 -1
- package/dist/vfs/gridfs/prompt.js +0 -19
- package/dist/vfs/gridfs/prompt.js.map +0 -1
- package/dist/vfs/hf_buckets/prompt.d.ts +0 -2
- package/dist/vfs/hf_buckets/prompt.d.ts.map +0 -1
- package/dist/vfs/hf_buckets/prompt.js +0 -18
- package/dist/vfs/hf_buckets/prompt.js.map +0 -1
- package/dist/vfs/hf_datasets/prompt.d.ts +0 -2
- package/dist/vfs/hf_datasets/prompt.d.ts.map +0 -1
- package/dist/vfs/hf_datasets/prompt.js +0 -18
- package/dist/vfs/hf_datasets/prompt.js.map +0 -1
- package/dist/vfs/hf_models/prompt.d.ts +0 -2
- package/dist/vfs/hf_models/prompt.d.ts.map +0 -1
- package/dist/vfs/hf_models/prompt.js +0 -18
- package/dist/vfs/hf_models/prompt.js.map +0 -1
- package/dist/vfs/hf_spaces/prompt.d.ts +0 -2
- package/dist/vfs/hf_spaces/prompt.d.ts.map +0 -1
- package/dist/vfs/hf_spaces/prompt.js +0 -18
- package/dist/vfs/hf_spaces/prompt.js.map +0 -1
- package/dist/vfs/jaeger/config.d.ts +0 -15
- package/dist/vfs/jaeger/config.d.ts.map +0 -1
- package/dist/vfs/jaeger/config.js +0 -28
- package/dist/vfs/jaeger/config.js.map +0 -1
- package/dist/vfs/minio/prompt.d.ts +0 -2
- package/dist/vfs/minio/prompt.d.ts.map +0 -1
- package/dist/vfs/minio/prompt.js +0 -19
- package/dist/vfs/minio/prompt.js.map +0 -1
- package/dist/vfs/nextcloud/prompt.d.ts +0 -2
- package/dist/vfs/nextcloud/prompt.d.ts.map +0 -1
- package/dist/vfs/nextcloud/prompt.js +0 -6
- package/dist/vfs/nextcloud/prompt.js.map +0 -1
- package/dist/vfs/oci/prompt.d.ts +0 -2
- package/dist/vfs/oci/prompt.d.ts.map +0 -1
- package/dist/vfs/oci/prompt.js +0 -19
- package/dist/vfs/oci/prompt.js.map +0 -1
- package/dist/vfs/qingstor/prompt.d.ts +0 -2
- package/dist/vfs/qingstor/prompt.d.ts.map +0 -1
- package/dist/vfs/qingstor/prompt.js +0 -19
- package/dist/vfs/qingstor/prompt.js.map +0 -1
- package/dist/vfs/r2/prompt.d.ts +0 -2
- package/dist/vfs/r2/prompt.d.ts.map +0 -1
- package/dist/vfs/r2/prompt.js +0 -19
- package/dist/vfs/r2/prompt.js.map +0 -1
- package/dist/vfs/scaleway/prompt.d.ts +0 -2
- package/dist/vfs/scaleway/prompt.d.ts.map +0 -1
- package/dist/vfs/scaleway/prompt.js +0 -19
- package/dist/vfs/scaleway/prompt.js.map +0 -1
- package/dist/vfs/seaweedfs/prompt.d.ts +0 -2
- package/dist/vfs/seaweedfs/prompt.d.ts.map +0 -1
- package/dist/vfs/seaweedfs/prompt.js +0 -19
- package/dist/vfs/seaweedfs/prompt.js.map +0 -1
- package/dist/vfs/ssh/prompt.d.ts +0 -2
- package/dist/vfs/ssh/prompt.d.ts.map +0 -1
- package/dist/vfs/ssh/prompt.js +0 -18
- package/dist/vfs/ssh/prompt.js.map +0 -1
- package/dist/vfs/supabase/prompt.d.ts +0 -2
- package/dist/vfs/supabase/prompt.d.ts.map +0 -1
- package/dist/vfs/supabase/prompt.js +0 -19
- package/dist/vfs/supabase/prompt.js.map +0 -1
- package/dist/vfs/tencent/prompt.d.ts +0 -2
- package/dist/vfs/tencent/prompt.d.ts.map +0 -1
- package/dist/vfs/tencent/prompt.js +0 -19
- package/dist/vfs/tencent/prompt.js.map +0 -1
- package/dist/vfs/wasabi/prompt.d.ts +0 -2
- package/dist/vfs/wasabi/prompt.d.ts.map +0 -1
- package/dist/vfs/wasabi/prompt.js +0 -19
- package/dist/vfs/wasabi/prompt.js.map +0 -1
- package/dist/workspace/session/disk.d.ts +0 -13
- package/dist/workspace/session/disk.d.ts.map +0 -1
- package/dist/workspace/session/disk.js +0 -29
- package/dist/workspace/session/disk.js.map +0 -1
- package/dist/workspace/session/redis.d.ts +0 -31
- package/dist/workspace/session/redis.d.ts.map +0 -1
- package/dist/workspace/session/redis.js +0 -87
- 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
|
|
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,
|
|
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
|
|
19
|
+
length = Math.max(length, at + offset);
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
async read(offset, size) {
|
package/dist/io/spool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/io/spool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAmB,MAAM,iCAAiC,CAAA;AAElF,KAAK,UAAU,WAAW;IACxB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAA;IAChE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;QACtD,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,OAAO;YACL,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/io/spool.ts"],"names":[],"mappings":"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"}
|