@nimbus-sh/core 0.1.0
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/dist/_shared/ai-egress.d.ts +73 -0
- package/dist/_shared/ai-egress.d.ts.map +1 -0
- package/dist/_shared/ai-egress.js +88 -0
- package/dist/_shared/byte-stream.d.ts +59 -0
- package/dist/_shared/byte-stream.d.ts.map +1 -0
- package/dist/_shared/byte-stream.js +77 -0
- package/dist/_shared/bytes.d.ts +18 -0
- package/dist/_shared/bytes.d.ts.map +1 -0
- package/dist/_shared/bytes.js +17 -0
- package/dist/_shared/cache-stats.d.ts +145 -0
- package/dist/_shared/cache-stats.d.ts.map +1 -0
- package/dist/_shared/cache-stats.js +161 -0
- package/dist/_shared/crypto.d.ts +17 -0
- package/dist/_shared/crypto.d.ts.map +1 -0
- package/dist/_shared/crypto.js +131 -0
- package/dist/_shared/esbuild-facet-shim.d.ts +21 -0
- package/dist/_shared/esbuild-facet-shim.d.ts.map +1 -0
- package/dist/_shared/esbuild-facet-shim.js +22 -0
- package/dist/_shared/exports-resolver.d.ts +74 -0
- package/dist/_shared/exports-resolver.d.ts.map +1 -0
- package/dist/_shared/exports-resolver.js +284 -0
- package/dist/_shared/facet-vfs-cursor.d.ts +48 -0
- package/dist/_shared/facet-vfs-cursor.d.ts.map +1 -0
- package/dist/_shared/facet-vfs-cursor.js +51 -0
- package/dist/_shared/install-phase.d.ts +47 -0
- package/dist/_shared/install-phase.d.ts.map +1 -0
- package/dist/_shared/install-phase.js +1 -0
- package/dist/_shared/lru-map.d.ts +25 -0
- package/dist/_shared/lru-map.d.ts.map +1 -0
- package/dist/_shared/lru-map.js +57 -0
- package/dist/_shared/real-node-imports.d.ts +43 -0
- package/dist/_shared/real-node-imports.d.ts.map +1 -0
- package/dist/_shared/real-node-imports.js +52 -0
- package/dist/_shared/retry.d.ts +92 -0
- package/dist/_shared/retry.d.ts.map +1 -0
- package/dist/_shared/retry.js +155 -0
- package/dist/_shared/rpc-dispose.d.ts +4 -0
- package/dist/_shared/rpc-dispose.d.ts.map +1 -0
- package/dist/_shared/rpc-dispose.js +30 -0
- package/dist/_shared/terminal.d.ts +2 -0
- package/dist/_shared/terminal.d.ts.map +1 -0
- package/dist/_shared/terminal.js +3 -0
- package/dist/_shared/typescript-specifiers.d.ts +58 -0
- package/dist/_shared/typescript-specifiers.d.ts.map +1 -0
- package/dist/_shared/typescript-specifiers.js +84 -0
- package/dist/_shared/untrusted-request.d.ts +34 -0
- package/dist/_shared/untrusted-request.d.ts.map +1 -0
- package/dist/_shared/untrusted-request.js +74 -0
- package/dist/_shared/vfs-write-ledger.d.ts +3 -0
- package/dist/_shared/vfs-write-ledger.d.ts.map +1 -0
- package/dist/_shared/vfs-write-ledger.js +439 -0
- package/dist/_shared/w7-frame.d.ts +79 -0
- package/dist/_shared/w7-frame.d.ts.map +1 -0
- package/dist/_shared/w7-frame.js +839 -0
- package/dist/_shared/weighted-credit-pool.d.ts +61 -0
- package/dist/_shared/weighted-credit-pool.d.ts.map +1 -0
- package/dist/_shared/weighted-credit-pool.js +196 -0
- package/dist/constants.d.ts +64 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +264 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/observability/diag-counters.d.ts +236 -0
- package/dist/observability/diag-counters.d.ts.map +1 -0
- package/dist/observability/diag-counters.js +195 -0
- package/dist/observability/heap-estimate.d.ts +225 -0
- package/dist/observability/heap-estimate.d.ts.map +1 -0
- package/dist/observability/heap-estimate.js +185 -0
- package/dist/observability/heavy-alloc-coord.d.ts +93 -0
- package/dist/observability/heavy-alloc-coord.d.ts.map +1 -0
- package/dist/observability/heavy-alloc-coord.js +181 -0
- package/dist/observability/oom-classify.d.ts +138 -0
- package/dist/observability/oom-classify.d.ts.map +1 -0
- package/dist/observability/oom-classify.js +261 -0
- package/dist/observability/oom-discriminator.d.ts +176 -0
- package/dist/observability/oom-discriminator.d.ts.map +1 -0
- package/dist/observability/oom-discriminator.js +272 -0
- package/dist/runtime/assets-loader.d.ts +71 -0
- package/dist/runtime/assets-loader.d.ts.map +1 -0
- package/dist/runtime/assets-loader.js +139 -0
- package/dist/runtime/barrel-detect.d.ts +46 -0
- package/dist/runtime/barrel-detect.d.ts.map +1 -0
- package/dist/runtime/barrel-detect.js +73 -0
- package/dist/runtime/bash/preamble.d.ts +2 -0
- package/dist/runtime/bash/preamble.d.ts.map +1 -0
- package/dist/runtime/bash/preamble.js +1849 -0
- package/dist/runtime/bash/types.d.ts +433 -0
- package/dist/runtime/bash/types.d.ts.map +1 -0
- package/dist/runtime/bash/types.js +1 -0
- package/dist/runtime/bundle-profile.d.ts +14 -0
- package/dist/runtime/bundle-profile.d.ts.map +1 -0
- package/dist/runtime/bundle-profile.js +20 -0
- package/dist/runtime/cirrus-vite-config-rewriter.d.ts +2 -0
- package/dist/runtime/cirrus-vite-config-rewriter.d.ts.map +1 -0
- package/dist/runtime/cirrus-vite-config-rewriter.js +28 -0
- package/dist/runtime/cli-flags.d.ts +2 -0
- package/dist/runtime/cli-flags.d.ts.map +1 -0
- package/dist/runtime/cli-flags.js +11 -0
- package/dist/runtime/comment-strip.d.ts +37 -0
- package/dist/runtime/comment-strip.d.ts.map +1 -0
- package/dist/runtime/comment-strip.js +74 -0
- package/dist/runtime/cpython-preamble.d.ts +32 -0
- package/dist/runtime/cpython-preamble.d.ts.map +1 -0
- package/dist/runtime/cpython-preamble.js +296 -0
- package/dist/runtime/esbuild-service.d.ts +242 -0
- package/dist/runtime/esbuild-service.d.ts.map +1 -0
- package/dist/runtime/esbuild-service.js +1452 -0
- package/dist/runtime/framework-detect.d.ts +70 -0
- package/dist/runtime/framework-detect.d.ts.map +1 -0
- package/dist/runtime/framework-detect.js +177 -0
- package/dist/runtime/import-meta-transform.d.ts +3 -0
- package/dist/runtime/import-meta-transform.d.ts.map +1 -0
- package/dist/runtime/import-meta-transform.js +15 -0
- package/dist/runtime/javascript-ast.d.ts +13 -0
- package/dist/runtime/javascript-ast.d.ts.map +1 -0
- package/dist/runtime/javascript-ast.js +57 -0
- package/dist/runtime/long-running-handle.d.ts +119 -0
- package/dist/runtime/long-running-handle.d.ts.map +1 -0
- package/dist/runtime/long-running-handle.js +169 -0
- package/dist/runtime/module-source-rewriter.d.ts +11 -0
- package/dist/runtime/module-source-rewriter.d.ts.map +1 -0
- package/dist/runtime/module-source-rewriter.js +61 -0
- package/dist/runtime/opentui-wasm-backend.d.ts +160 -0
- package/dist/runtime/opentui-wasm-backend.d.ts.map +1 -0
- package/dist/runtime/opentui-wasm-backend.js +416 -0
- package/dist/runtime/os-contracts.d.ts +436 -0
- package/dist/runtime/os-contracts.d.ts.map +1 -0
- package/dist/runtime/os-contracts.js +101 -0
- package/dist/runtime/port-registry.d.ts +100 -0
- package/dist/runtime/port-registry.d.ts.map +1 -0
- package/dist/runtime/port-registry.js +265 -0
- package/dist/runtime/process-input-routing.d.ts +33 -0
- package/dist/runtime/process-input-routing.d.ts.map +1 -0
- package/dist/runtime/process-input-routing.js +59 -0
- package/dist/runtime/process-input.d.ts +39 -0
- package/dist/runtime/process-input.d.ts.map +1 -0
- package/dist/runtime/process-input.js +117 -0
- package/dist/runtime/process-io-protocol.d.ts +90 -0
- package/dist/runtime/process-io-protocol.d.ts.map +1 -0
- package/dist/runtime/process-io-protocol.js +81 -0
- package/dist/runtime/process-logs.d.ts +352 -0
- package/dist/runtime/process-logs.d.ts.map +1 -0
- package/dist/runtime/process-logs.js +750 -0
- package/dist/runtime/process-table.d.ts +101 -0
- package/dist/runtime/process-table.d.ts.map +1 -0
- package/dist/runtime/process-table.js +175 -0
- package/dist/runtime/project-detect.d.ts +21 -0
- package/dist/runtime/project-detect.d.ts.map +1 -0
- package/dist/runtime/project-detect.js +46 -0
- package/dist/runtime/python-server-adapter.d.ts +33 -0
- package/dist/runtime/python-server-adapter.d.ts.map +1 -0
- package/dist/runtime/python-server-adapter.js +132 -0
- package/dist/runtime/require-resolver.d.ts +44 -0
- package/dist/runtime/require-resolver.d.ts.map +1 -0
- package/dist/runtime/require-resolver.js +698 -0
- package/dist/runtime/router-basename.d.ts +36 -0
- package/dist/runtime/router-basename.d.ts.map +1 -0
- package/dist/runtime/router-basename.js +310 -0
- package/dist/runtime/ruby-green-threads.d.ts +136 -0
- package/dist/runtime/ruby-green-threads.d.ts.map +1 -0
- package/dist/runtime/ruby-green-threads.js +904 -0
- package/dist/runtime/ruby-socket-shim.d.ts +2 -0
- package/dist/runtime/ruby-socket-shim.d.ts.map +1 -0
- package/dist/runtime/ruby-socket-shim.js +548 -0
- package/dist/runtime/session-process-supervisor.d.ts +156 -0
- package/dist/runtime/session-process-supervisor.d.ts.map +1 -0
- package/dist/runtime/session-process-supervisor.js +238 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.d.ts +70 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.d.ts.map +1 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.js +425 -0
- package/dist/runtime/streams.d.ts +13 -0
- package/dist/runtime/streams.d.ts.map +1 -0
- package/dist/runtime/streams.js +546 -0
- package/dist/runtime/undici-shim.d.ts +62 -0
- package/dist/runtime/undici-shim.d.ts.map +1 -0
- package/dist/runtime/undici-shim.js +516 -0
- package/dist/runtime/vfs-manifest.d.ts +63 -0
- package/dist/runtime/vfs-manifest.d.ts.map +1 -0
- package/dist/runtime/vfs-manifest.js +141 -0
- package/dist/runtime/vfs-snapshot.d.ts +75 -0
- package/dist/runtime/vfs-snapshot.d.ts.map +1 -0
- package/dist/runtime/vfs-snapshot.js +220 -0
- package/dist/runtime/virtual-socket-kernel.d.ts +252 -0
- package/dist/runtime/virtual-socket-kernel.d.ts.map +1 -0
- package/dist/runtime/virtual-socket-kernel.js +1143 -0
- package/dist/runtime/vite-config-parser.d.ts +13 -0
- package/dist/runtime/vite-config-parser.d.ts.map +1 -0
- package/dist/runtime/vite-config-parser.js +258 -0
- package/dist/runtime/wasi/types.d.ts +347 -0
- package/dist/runtime/wasi/types.d.ts.map +1 -0
- package/dist/runtime/wasi/types.js +1 -0
- package/dist/runtime/wasi-instance.d.ts +215 -0
- package/dist/runtime/wasi-instance.d.ts.map +1 -0
- package/dist/runtime/wasi-instance.generated.d.ts +14 -0
- package/dist/runtime/wasi-instance.generated.d.ts.map +1 -0
- package/dist/runtime/wasi-instance.generated.js +13 -0
- package/dist/runtime/wasi-instance.js +179 -0
- package/dist/runtime/wasi-threads.d.ts +169 -0
- package/dist/runtime/wasi-threads.d.ts.map +1 -0
- package/dist/runtime/wasi-threads.js +669 -0
- package/dist/runtime/wasm-memory.d.ts +84 -0
- package/dist/runtime/wasm-memory.d.ts.map +1 -0
- package/dist/runtime/wasm-memory.js +235 -0
- package/dist/shell/elevation-commands.d.ts +5 -0
- package/dist/shell/elevation-commands.d.ts.map +1 -0
- package/dist/shell/elevation-commands.js +109 -0
- package/dist/shell/exec-dispatch.d.ts +57 -0
- package/dist/shell/exec-dispatch.d.ts.map +1 -0
- package/dist/shell/exec-dispatch.js +181 -0
- package/dist/shell/features.d.ts +154 -0
- package/dist/shell/features.d.ts.map +1 -0
- package/dist/shell/features.js +792 -0
- package/dist/shell/shell-entrypoints.d.ts +55 -0
- package/dist/shell/shell-entrypoints.d.ts.map +1 -0
- package/dist/shell/shell-entrypoints.js +230 -0
- package/dist/shell/shell-invocation.d.ts +36 -0
- package/dist/shell/shell-invocation.d.ts.map +1 -0
- package/dist/shell/shell-invocation.js +148 -0
- package/dist/shell/unix-accounts.d.ts +27 -0
- package/dist/shell/unix-accounts.d.ts.map +1 -0
- package/dist/shell/unix-accounts.js +105 -0
- package/dist/shell/unix-commands.d.ts +15 -0
- package/dist/shell/unix-commands.d.ts.map +1 -0
- package/dist/shell/unix-commands.js +4702 -0
- package/dist/substrate/lifo/commands/archive/gunzip.d.ts +4 -0
- package/dist/substrate/lifo/commands/archive/gunzip.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/archive/gunzip.js +58 -0
- package/dist/substrate/lifo/commands/archive/gzip.d.ts +4 -0
- package/dist/substrate/lifo/commands/archive/gzip.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/archive/gzip.js +73 -0
- package/dist/substrate/lifo/commands/archive/tar.d.ts +4 -0
- package/dist/substrate/lifo/commands/archive/tar.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/archive/tar.js +158 -0
- package/dist/substrate/lifo/commands/archive/unzip.d.ts +4 -0
- package/dist/substrate/lifo/commands/archive/unzip.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/archive/unzip.js +114 -0
- package/dist/substrate/lifo/commands/archive/zip.d.ts +4 -0
- package/dist/substrate/lifo/commands/archive/zip.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/archive/zip.js +58 -0
- package/dist/substrate/lifo/commands/fs/basename.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/basename.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/basename.js +12 -0
- package/dist/substrate/lifo/commands/fs/cat.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/cat.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/cat.js +52 -0
- package/dist/substrate/lifo/commands/fs/chmod.d.ts +25 -0
- package/dist/substrate/lifo/commands/fs/chmod.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/chmod.js +97 -0
- package/dist/substrate/lifo/commands/fs/chown.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/chown.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/chown.js +41 -0
- package/dist/substrate/lifo/commands/fs/cp.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/cp.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/cp.js +29 -0
- package/dist/substrate/lifo/commands/fs/df.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/df.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/df.js +52 -0
- package/dist/substrate/lifo/commands/fs/dirname.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/dirname.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/dirname.js +12 -0
- package/dist/substrate/lifo/commands/fs/du.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/du.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/du.js +104 -0
- package/dist/substrate/lifo/commands/fs/file.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/file.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/file.js +84 -0
- package/dist/substrate/lifo/commands/fs/find.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/find.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/find.js +72 -0
- package/dist/substrate/lifo/commands/fs/ln.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/ln.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/ln.js +15 -0
- package/dist/substrate/lifo/commands/fs/ls.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/ls.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/ls.js +146 -0
- package/dist/substrate/lifo/commands/fs/mkdir.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/mkdir.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/mkdir.js +31 -0
- package/dist/substrate/lifo/commands/fs/mktemp.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/mktemp.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/mktemp.js +48 -0
- package/dist/substrate/lifo/commands/fs/mv.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/mv.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/mv.js +113 -0
- package/dist/substrate/lifo/commands/fs/realpath.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/realpath.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/realpath.js +27 -0
- package/dist/substrate/lifo/commands/fs/rm.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/rm.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/rm.js +48 -0
- package/dist/substrate/lifo/commands/fs/rmdir.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/rmdir.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/rmdir.js +44 -0
- package/dist/substrate/lifo/commands/fs/stat.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/stat.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/stat.js +35 -0
- package/dist/substrate/lifo/commands/fs/touch.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/touch.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/touch.js +26 -0
- package/dist/substrate/lifo/commands/fs/tree.d.ts +4 -0
- package/dist/substrate/lifo/commands/fs/tree.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/fs/tree.js +69 -0
- package/dist/substrate/lifo/commands/index.d.ts +3 -0
- package/dist/substrate/lifo/commands/index.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/index.js +1 -0
- package/dist/substrate/lifo/commands/io/dd.d.ts +4 -0
- package/dist/substrate/lifo/commands/io/dd.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/io/dd.js +256 -0
- package/dist/substrate/lifo/commands/io/printf.d.ts +4 -0
- package/dist/substrate/lifo/commands/io/printf.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/io/printf.js +82 -0
- package/dist/substrate/lifo/commands/io/tee.d.ts +4 -0
- package/dist/substrate/lifo/commands/io/tee.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/io/tee.js +31 -0
- package/dist/substrate/lifo/commands/io/xargs.d.ts +4 -0
- package/dist/substrate/lifo/commands/io/xargs.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/io/xargs.js +44 -0
- package/dist/substrate/lifo/commands/io/yes.d.ts +4 -0
- package/dist/substrate/lifo/commands/io/yes.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/io/yes.js +10 -0
- package/dist/substrate/lifo/commands/net/curl.d.ts +6 -0
- package/dist/substrate/lifo/commands/net/curl.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/curl.js +617 -0
- package/dist/substrate/lifo/commands/net/dig.d.ts +4 -0
- package/dist/substrate/lifo/commands/net/dig.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/dig.js +77 -0
- package/dist/substrate/lifo/commands/net/forward.d.ts +14 -0
- package/dist/substrate/lifo/commands/net/forward.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/forward.js +80 -0
- package/dist/substrate/lifo/commands/net/host.d.ts +14 -0
- package/dist/substrate/lifo/commands/net/host.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/host.js +160 -0
- package/dist/substrate/lifo/commands/net/ifconfig.d.ts +8 -0
- package/dist/substrate/lifo/commands/net/ifconfig.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/ifconfig.js +120 -0
- package/dist/substrate/lifo/commands/net/ip.d.ts +14 -0
- package/dist/substrate/lifo/commands/net/ip.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/ip.js +508 -0
- package/dist/substrate/lifo/commands/net/netstat.d.ts +8 -0
- package/dist/substrate/lifo/commands/net/netstat.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/netstat.js +94 -0
- package/dist/substrate/lifo/commands/net/ping.d.ts +4 -0
- package/dist/substrate/lifo/commands/net/ping.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/ping.js +64 -0
- package/dist/substrate/lifo/commands/net/ports.d.ts +8 -0
- package/dist/substrate/lifo/commands/net/ports.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/ports.js +36 -0
- package/dist/substrate/lifo/commands/net/route.d.ts +8 -0
- package/dist/substrate/lifo/commands/net/route.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/route.js +128 -0
- package/dist/substrate/lifo/commands/net/tunnel-v2.d.ts +4 -0
- package/dist/substrate/lifo/commands/net/tunnel-v2.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/tunnel-v2.js +141 -0
- package/dist/substrate/lifo/commands/net/tunnel.d.ts +6 -0
- package/dist/substrate/lifo/commands/net/tunnel.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/tunnel.js +232 -0
- package/dist/substrate/lifo/commands/net/wget.d.ts +4 -0
- package/dist/substrate/lifo/commands/net/wget.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/net/wget.js +78 -0
- package/dist/substrate/lifo/commands/registry.d.ts +15 -0
- package/dist/substrate/lifo/commands/registry.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/registry.js +120 -0
- package/dist/substrate/lifo/commands/signal.d.ts +12 -0
- package/dist/substrate/lifo/commands/signal.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/signal.js +47 -0
- package/dist/substrate/lifo/commands/system/bc.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/bc.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/bc.js +243 -0
- package/dist/substrate/lifo/commands/system/cal.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/cal.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/cal.js +81 -0
- package/dist/substrate/lifo/commands/system/date.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/date.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/date.js +79 -0
- package/dist/substrate/lifo/commands/system/env.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/env.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/env.js +7 -0
- package/dist/substrate/lifo/commands/system/fastfetch.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/fastfetch.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/fastfetch.js +385 -0
- package/dist/substrate/lifo/commands/system/free.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/free.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/free.js +36 -0
- package/dist/substrate/lifo/commands/system/help.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/help.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/help.js +46 -0
- package/dist/substrate/lifo/commands/system/hostname.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/hostname.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/hostname.js +6 -0
- package/dist/substrate/lifo/commands/system/kill.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/kill.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/kill.js +76 -0
- package/dist/substrate/lifo/commands/system/lifo.d.ts +41 -0
- package/dist/substrate/lifo/commands/system/lifo.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/lifo.js +446 -0
- package/dist/substrate/lifo/commands/system/logout.d.ts +5 -0
- package/dist/substrate/lifo/commands/system/logout.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/logout.js +15 -0
- package/dist/substrate/lifo/commands/system/man.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/man.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/man.js +144 -0
- package/dist/substrate/lifo/commands/system/node.d.ts +6 -0
- package/dist/substrate/lifo/commands/system/node.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/node.js +1241 -0
- package/dist/substrate/lifo/commands/system/npm.d.ts +26 -0
- package/dist/substrate/lifo/commands/system/npm.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/npm.js +934 -0
- package/dist/substrate/lifo/commands/system/pkg.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/pkg.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/pkg.js +97 -0
- package/dist/substrate/lifo/commands/system/ps.d.ts +5 -0
- package/dist/substrate/lifo/commands/system/ps.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/ps.js +35 -0
- package/dist/substrate/lifo/commands/system/registry-schemas.d.ts +44 -0
- package/dist/substrate/lifo/commands/system/registry-schemas.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/registry-schemas.js +28 -0
- package/dist/substrate/lifo/commands/system/sha256sum.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/sha256sum.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/sha256sum.js +86 -0
- package/dist/substrate/lifo/commands/system/sl.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/sl.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/sl.js +204 -0
- package/dist/substrate/lifo/commands/system/sleep.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/sleep.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/sleep.js +27 -0
- package/dist/substrate/lifo/commands/system/stty.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/stty.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/stty.js +61 -0
- package/dist/substrate/lifo/commands/system/systemctl.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/systemctl.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/systemctl.js +164 -0
- package/dist/substrate/lifo/commands/system/top.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/top.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/top.js +38 -0
- package/dist/substrate/lifo/commands/system/uname.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/uname.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/uname.js +55 -0
- package/dist/substrate/lifo/commands/system/uptime.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/uptime.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/uptime.js +16 -0
- package/dist/substrate/lifo/commands/system/watch.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/watch.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/watch.js +53 -0
- package/dist/substrate/lifo/commands/system/which.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/which.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/which.js +45 -0
- package/dist/substrate/lifo/commands/system/whoami.d.ts +4 -0
- package/dist/substrate/lifo/commands/system/whoami.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/system/whoami.js +6 -0
- package/dist/substrate/lifo/commands/text/awk.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/awk.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/awk.js +200 -0
- package/dist/substrate/lifo/commands/text/base64.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/base64.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/base64.js +102 -0
- package/dist/substrate/lifo/commands/text/cut.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/cut.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/cut.js +91 -0
- package/dist/substrate/lifo/commands/text/diff.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/diff.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/diff.js +292 -0
- package/dist/substrate/lifo/commands/text/grep.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/grep.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/grep.js +189 -0
- package/dist/substrate/lifo/commands/text/head.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/head.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/head.js +111 -0
- package/dist/substrate/lifo/commands/text/less.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/less.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/less.js +335 -0
- package/dist/substrate/lifo/commands/text/nano.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/nano.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/nano.js +510 -0
- package/dist/substrate/lifo/commands/text/nl.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/nl.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/nl.js +64 -0
- package/dist/substrate/lifo/commands/text/rev.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/rev.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/rev.js +41 -0
- package/dist/substrate/lifo/commands/text/sed.d.ts +21 -0
- package/dist/substrate/lifo/commands/text/sed.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/sed.js +248 -0
- package/dist/substrate/lifo/commands/text/seq.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/seq.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/seq.js +69 -0
- package/dist/substrate/lifo/commands/text/sort.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/sort.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/sort.js +90 -0
- package/dist/substrate/lifo/commands/text/strings.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/strings.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/strings.js +69 -0
- package/dist/substrate/lifo/commands/text/tac.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/tac.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/tac.js +32 -0
- package/dist/substrate/lifo/commands/text/tail.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/tail.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/tail.js +64 -0
- package/dist/substrate/lifo/commands/text/tr.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/tr.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/tr.js +180 -0
- package/dist/substrate/lifo/commands/text/uniq.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/uniq.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/uniq.js +82 -0
- package/dist/substrate/lifo/commands/text/wc.d.ts +4 -0
- package/dist/substrate/lifo/commands/text/wc.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/text/wc.js +107 -0
- package/dist/substrate/lifo/commands/types.d.ts +49 -0
- package/dist/substrate/lifo/commands/types.d.ts.map +1 -0
- package/dist/substrate/lifo/commands/types.js +1 -0
- package/dist/substrate/lifo/index.d.ts +67 -0
- package/dist/substrate/lifo/index.d.ts.map +1 -0
- package/dist/substrate/lifo/index.js +66 -0
- package/dist/substrate/lifo/kernel/ServiceManager.d.ts +51 -0
- package/dist/substrate/lifo/kernel/ServiceManager.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/ServiceManager.js +302 -0
- package/dist/substrate/lifo/kernel/index.d.ts +40 -0
- package/dist/substrate/lifo/kernel/index.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/index.js +170 -0
- package/dist/substrate/lifo/kernel/network/Bridge.d.ts +110 -0
- package/dist/substrate/lifo/kernel/network/Bridge.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/Bridge.js +278 -0
- package/dist/substrate/lifo/kernel/network/DNSResolver.d.ts +50 -0
- package/dist/substrate/lifo/kernel/network/DNSResolver.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/DNSResolver.js +135 -0
- package/dist/substrate/lifo/kernel/network/NetworkInterface.d.ts +83 -0
- package/dist/substrate/lifo/kernel/network/NetworkInterface.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/NetworkInterface.js +183 -0
- package/dist/substrate/lifo/kernel/network/NetworkNamespace.d.ts +98 -0
- package/dist/substrate/lifo/kernel/network/NetworkNamespace.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/NetworkNamespace.js +149 -0
- package/dist/substrate/lifo/kernel/network/NetworkStack.d.ts +178 -0
- package/dist/substrate/lifo/kernel/network/NetworkStack.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/NetworkStack.js +460 -0
- package/dist/substrate/lifo/kernel/network/PortBridge.d.ts +44 -0
- package/dist/substrate/lifo/kernel/network/PortBridge.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/PortBridge.js +158 -0
- package/dist/substrate/lifo/kernel/network/RoutingTable.d.ts +55 -0
- package/dist/substrate/lifo/kernel/network/RoutingTable.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/RoutingTable.js +167 -0
- package/dist/substrate/lifo/kernel/network/Socket.d.ts +65 -0
- package/dist/substrate/lifo/kernel/network/Socket.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/Socket.js +201 -0
- package/dist/substrate/lifo/kernel/network/index.d.ts +11 -0
- package/dist/substrate/lifo/kernel/network/index.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/index.js +9 -0
- package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.d.ts +55 -0
- package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.js +88 -0
- package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.d.ts +71 -0
- package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.js +191 -0
- package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.d.ts +89 -0
- package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.js +324 -0
- package/dist/substrate/lifo/kernel/network/types.d.ts +159 -0
- package/dist/substrate/lifo/kernel/network/types.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/network/types.js +5 -0
- package/dist/substrate/lifo/kernel/persistence/PersistenceManager.d.ts +12 -0
- package/dist/substrate/lifo/kernel/persistence/PersistenceManager.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/persistence/PersistenceManager.js +47 -0
- package/dist/substrate/lifo/kernel/persistence/backends.d.ts +15 -0
- package/dist/substrate/lifo/kernel/persistence/backends.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/persistence/backends.js +18 -0
- package/dist/substrate/lifo/kernel/persistence/index.d.ts +6 -0
- package/dist/substrate/lifo/kernel/persistence/index.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/persistence/index.js +3 -0
- package/dist/substrate/lifo/kernel/persistence/serializer.d.ts +21 -0
- package/dist/substrate/lifo/kernel/persistence/serializer.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/persistence/serializer.js +99 -0
- package/dist/substrate/lifo/kernel/samples.d.ts +3 -0
- package/dist/substrate/lifo/kernel/samples.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/samples.js +930 -0
- package/dist/substrate/lifo/kernel/storage/BlobStore.d.ts +22 -0
- package/dist/substrate/lifo/kernel/storage/BlobStore.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/storage/BlobStore.js +84 -0
- package/dist/substrate/lifo/kernel/storage/ContentStore.d.ts +54 -0
- package/dist/substrate/lifo/kernel/storage/ContentStore.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/storage/ContentStore.js +120 -0
- package/dist/substrate/lifo/kernel/storage/index.d.ts +6 -0
- package/dist/substrate/lifo/kernel/storage/index.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/storage/index.js +3 -0
- package/dist/substrate/lifo/kernel/unit-parser.d.ts +22 -0
- package/dist/substrate/lifo/kernel/unit-parser.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/unit-parser.js +80 -0
- package/dist/substrate/lifo/kernel/vfs/VFS.d.ts +99 -0
- package/dist/substrate/lifo/kernel/vfs/VFS.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/VFS.js +679 -0
- package/dist/substrate/lifo/kernel/vfs/index.d.ts +8 -0
- package/dist/substrate/lifo/kernel/vfs/index.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/index.js +5 -0
- package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.d.ts +21 -0
- package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.js +137 -0
- package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.d.ts +63 -0
- package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.js +175 -0
- package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.d.ts +14 -0
- package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.js +126 -0
- package/dist/substrate/lifo/kernel/vfs/types.d.ts +117 -0
- package/dist/substrate/lifo/kernel/vfs/types.d.ts.map +1 -0
- package/dist/substrate/lifo/kernel/vfs/types.js +42 -0
- package/dist/substrate/lifo/node-compat/buffer.d.ts +44 -0
- package/dist/substrate/lifo/node-compat/buffer.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/buffer.js +331 -0
- package/dist/substrate/lifo/node-compat/child_process.d.ts +10 -0
- package/dist/substrate/lifo/node-compat/child_process.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/child_process.js +42 -0
- package/dist/substrate/lifo/node-compat/console.d.ts +21 -0
- package/dist/substrate/lifo/node-compat/console.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/console.js +68 -0
- package/dist/substrate/lifo/node-compat/crypto.d.ts +24 -0
- package/dist/substrate/lifo/node-compat/crypto.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/crypto.js +216 -0
- package/dist/substrate/lifo/node-compat/dns.d.ts +117 -0
- package/dist/substrate/lifo/node-compat/dns.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/dns.js +144 -0
- package/dist/substrate/lifo/node-compat/esbuild.d.ts +10 -0
- package/dist/substrate/lifo/node-compat/esbuild.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/esbuild.js +70 -0
- package/dist/substrate/lifo/node-compat/events.d.ts +19 -0
- package/dist/substrate/lifo/node-compat/events.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/events.js +83 -0
- package/dist/substrate/lifo/node-compat/fs.d.ts +195 -0
- package/dist/substrate/lifo/node-compat/fs.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/fs.js +624 -0
- package/dist/substrate/lifo/node-compat/http.d.ts +133 -0
- package/dist/substrate/lifo/node-compat/http.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/http.js +452 -0
- package/dist/substrate/lifo/node-compat/index.d.ts +20 -0
- package/dist/substrate/lifo/node-compat/index.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/index.js +291 -0
- package/dist/substrate/lifo/node-compat/module.d.ts +55 -0
- package/dist/substrate/lifo/node-compat/module.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/module.js +124 -0
- package/dist/substrate/lifo/node-compat/os.d.ts +39 -0
- package/dist/substrate/lifo/node-compat/os.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/os.js +45 -0
- package/dist/substrate/lifo/node-compat/path.d.ts +86 -0
- package/dist/substrate/lifo/node-compat/path.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/path.js +49 -0
- package/dist/substrate/lifo/node-compat/process.d.ts +127 -0
- package/dist/substrate/lifo/node-compat/process.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/process.js +173 -0
- package/dist/substrate/lifo/node-compat/readline.d.ts +85 -0
- package/dist/substrate/lifo/node-compat/readline.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/readline.js +205 -0
- package/dist/substrate/lifo/node-compat/rimraf.d.ts +30 -0
- package/dist/substrate/lifo/node-compat/rimraf.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/rimraf.js +63 -0
- package/dist/substrate/lifo/node-compat/stream.d.ts +36 -0
- package/dist/substrate/lifo/node-compat/stream.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/stream.js +90 -0
- package/dist/substrate/lifo/node-compat/string_decoder.d.ts +11 -0
- package/dist/substrate/lifo/node-compat/string_decoder.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/string_decoder.js +23 -0
- package/dist/substrate/lifo/node-compat/timers.d.ts +16 -0
- package/dist/substrate/lifo/node-compat/timers.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/timers.js +18 -0
- package/dist/substrate/lifo/node-compat/tty.d.ts +32 -0
- package/dist/substrate/lifo/node-compat/tty.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/tty.js +76 -0
- package/dist/substrate/lifo/node-compat/url.d.ts +37 -0
- package/dist/substrate/lifo/node-compat/url.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/url.js +65 -0
- package/dist/substrate/lifo/node-compat/util.d.ts +42 -0
- package/dist/substrate/lifo/node-compat/util.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/util.js +132 -0
- package/dist/substrate/lifo/node-compat/zlib.d.ts +66 -0
- package/dist/substrate/lifo/node-compat/zlib.d.ts.map +1 -0
- package/dist/substrate/lifo/node-compat/zlib.js +80 -0
- package/dist/substrate/lifo/pkg/PackageManager.d.ts +19 -0
- package/dist/substrate/lifo/pkg/PackageManager.d.ts.map +1 -0
- package/dist/substrate/lifo/pkg/PackageManager.js +97 -0
- package/dist/substrate/lifo/pkg/lifo-dev.d.ts +38 -0
- package/dist/substrate/lifo/pkg/lifo-dev.d.ts.map +1 -0
- package/dist/substrate/lifo/pkg/lifo-dev.js +98 -0
- package/dist/substrate/lifo/pkg/lifo-runtime.d.ts +44 -0
- package/dist/substrate/lifo/pkg/lifo-runtime.d.ts.map +1 -0
- package/dist/substrate/lifo/pkg/lifo-runtime.js +372 -0
- package/dist/substrate/lifo/pkg/loader.d.ts +4 -0
- package/dist/substrate/lifo/pkg/loader.d.ts.map +1 -0
- package/dist/substrate/lifo/pkg/loader.js +24 -0
- package/dist/substrate/lifo/sandbox/HeadlessTerminal.d.ts +18 -0
- package/dist/substrate/lifo/sandbox/HeadlessTerminal.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/HeadlessTerminal.js +28 -0
- package/dist/substrate/lifo/sandbox/Sandbox.d.ts +59 -0
- package/dist/substrate/lifo/sandbox/Sandbox.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/Sandbox.js +234 -0
- package/dist/substrate/lifo/sandbox/SandboxCommands.d.ts +18 -0
- package/dist/substrate/lifo/sandbox/SandboxCommands.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/SandboxCommands.js +64 -0
- package/dist/substrate/lifo/sandbox/SandboxFs.d.ts +43 -0
- package/dist/substrate/lifo/sandbox/SandboxFs.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/SandboxFs.js +136 -0
- package/dist/substrate/lifo/sandbox/index.d.ts +3 -0
- package/dist/substrate/lifo/sandbox/index.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/index.js +1 -0
- package/dist/substrate/lifo/sandbox/types.d.ts +116 -0
- package/dist/substrate/lifo/sandbox/types.d.ts.map +1 -0
- package/dist/substrate/lifo/sandbox/types.js +1 -0
- package/dist/substrate/lifo/shell/ProcessRegistry.d.ts +142 -0
- package/dist/substrate/lifo/shell/ProcessRegistry.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/ProcessRegistry.js +256 -0
- package/dist/substrate/lifo/shell/Shell.d.ts +170 -0
- package/dist/substrate/lifo/shell/Shell.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/Shell.js +1863 -0
- package/dist/substrate/lifo/shell/completer.d.ts +19 -0
- package/dist/substrate/lifo/shell/completer.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/completer.js +164 -0
- package/dist/substrate/lifo/shell/default-shell.d.ts +9 -0
- package/dist/substrate/lifo/shell/default-shell.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/default-shell.js +53 -0
- package/dist/substrate/lifo/shell/expander.d.ts +48 -0
- package/dist/substrate/lifo/shell/expander.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/expander.js +1204 -0
- package/dist/substrate/lifo/shell/history.d.ts +22 -0
- package/dist/substrate/lifo/shell/history.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/history.js +121 -0
- package/dist/substrate/lifo/shell/interpreter.d.ts +257 -0
- package/dist/substrate/lifo/shell/interpreter.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/interpreter.js +1490 -0
- package/dist/substrate/lifo/shell/jobs.d.ts +21 -0
- package/dist/substrate/lifo/shell/jobs.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/jobs.js +48 -0
- package/dist/substrate/lifo/shell/lexer.d.ts +13 -0
- package/dist/substrate/lifo/shell/lexer.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/lexer.js +614 -0
- package/dist/substrate/lifo/shell/parser.d.ts +7 -0
- package/dist/substrate/lifo/shell/parser.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/parser.js +573 -0
- package/dist/substrate/lifo/shell/pipe.d.ts +15 -0
- package/dist/substrate/lifo/shell/pipe.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/pipe.js +86 -0
- package/dist/substrate/lifo/shell/signals.d.ts +11 -0
- package/dist/substrate/lifo/shell/signals.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/signals.js +57 -0
- package/dist/substrate/lifo/shell/terminal-stdin.d.ts +28 -0
- package/dist/substrate/lifo/shell/terminal-stdin.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/terminal-stdin.js +100 -0
- package/dist/substrate/lifo/shell/test-builtin.d.ts +16 -0
- package/dist/substrate/lifo/shell/test-builtin.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/test-builtin.js +237 -0
- package/dist/substrate/lifo/shell/types.d.ts +140 -0
- package/dist/substrate/lifo/shell/types.d.ts.map +1 -0
- package/dist/substrate/lifo/shell/types.js +25 -0
- package/dist/substrate/lifo/terminal/ITerminal.d.ts +10 -0
- package/dist/substrate/lifo/terminal/ITerminal.d.ts.map +1 -0
- package/dist/substrate/lifo/terminal/ITerminal.js +1 -0
- package/dist/substrate/lifo/utils/archive.d.ts +28 -0
- package/dist/substrate/lifo/utils/archive.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/archive.js +323 -0
- package/dist/substrate/lifo/utils/args.d.ts +18 -0
- package/dist/substrate/lifo/utils/args.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/args.js +73 -0
- package/dist/substrate/lifo/utils/colors.d.ts +27 -0
- package/dist/substrate/lifo/utils/colors.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/colors.js +26 -0
- package/dist/substrate/lifo/utils/encoding.d.ts +4 -0
- package/dist/substrate/lifo/utils/encoding.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/encoding.js +18 -0
- package/dist/substrate/lifo/utils/glob.d.ts +12 -0
- package/dist/substrate/lifo/utils/glob.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/glob.js +150 -0
- package/dist/substrate/lifo/utils/mime.d.ts +4 -0
- package/dist/substrate/lifo/utils/mime.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/mime.js +107 -0
- package/dist/substrate/lifo/utils/path.d.ts +12 -0
- package/dist/substrate/lifo/utils/path.d.ts.map +1 -0
- package/dist/substrate/lifo/utils/path.js +82 -0
- package/dist/vfs/events.d.ts +51 -0
- package/dist/vfs/events.d.ts.map +1 -0
- package/dist/vfs/events.js +127 -0
- package/dist/vfs/path.d.ts +46 -0
- package/dist/vfs/path.d.ts.map +1 -0
- package/dist/vfs/path.js +69 -0
- package/dist/vfs/seed-project.d.ts +62 -0
- package/dist/vfs/seed-project.d.ts.map +1 -0
- package/dist/vfs/seed-project.js +1054 -0
- package/dist/vfs/sqlite-vfs.d.ts +821 -0
- package/dist/vfs/sqlite-vfs.d.ts.map +1 -0
- package/dist/vfs/sqlite-vfs.js +4135 -0
- package/dist/vfs/symlink-registry.d.ts +60 -0
- package/dist/vfs/symlink-registry.d.ts.map +1 -0
- package/dist/vfs/symlink-registry.js +162 -0
- package/dist/workspace/nimbus-workspace.d.ts +94 -0
- package/dist/workspace/nimbus-workspace.d.ts.map +1 -0
- package/dist/workspace/nimbus-workspace.js +167 -0
- package/package.json +69 -0
- package/src/_shared/ai-egress.ts +91 -0
- package/src/_shared/byte-stream.ts +97 -0
- package/src/_shared/bytes.ts +19 -0
- package/src/_shared/cache-stats.ts +231 -0
- package/src/_shared/crypto.ts +184 -0
- package/src/_shared/esbuild-facet-shim.ts +22 -0
- package/src/_shared/exports-resolver.ts +308 -0
- package/src/_shared/facet-vfs-cursor.ts +58 -0
- package/src/_shared/install-phase.ts +56 -0
- package/src/_shared/lru-map.ts +59 -0
- package/src/_shared/real-node-imports.ts +53 -0
- package/src/_shared/retry.ts +202 -0
- package/src/_shared/rpc-dispose.ts +31 -0
- package/src/_shared/terminal.ts +3 -0
- package/src/_shared/typescript-specifiers.ts +86 -0
- package/src/_shared/untrusted-request.ts +75 -0
- package/src/_shared/vfs-write-ledger.ts +440 -0
- package/src/_shared/w7-frame.ts +1012 -0
- package/src/_shared/weighted-credit-pool.ts +244 -0
- package/src/constants.ts +285 -0
- package/src/index.ts +22 -0
- package/src/observability/diag-counters.ts +343 -0
- package/src/observability/heap-estimate.ts +331 -0
- package/src/observability/heavy-alloc-coord.ts +241 -0
- package/src/observability/oom-classify.ts +253 -0
- package/src/observability/oom-discriminator.ts +405 -0
- package/src/runtime/assets-loader.ts +189 -0
- package/src/runtime/barrel-detect.ts +69 -0
- package/src/runtime/bash/preamble.ts +1519 -0
- package/src/runtime/bash/types.ts +497 -0
- package/src/runtime/bundle-profile.ts +32 -0
- package/src/runtime/cirrus-vite-config-rewriter.ts +28 -0
- package/src/runtime/cli-flags.ts +11 -0
- package/src/runtime/comment-strip.ts +73 -0
- package/src/runtime/cpython-preamble.ts +298 -0
- package/src/runtime/esbuild-service.ts +1470 -0
- package/src/runtime/framework-detect.ts +245 -0
- package/src/runtime/import-meta-transform.ts +16 -0
- package/src/runtime/javascript-ast.ts +66 -0
- package/src/runtime/long-running-handle.ts +185 -0
- package/src/runtime/module-source-rewriter.ts +95 -0
- package/src/runtime/opentui-wasm-backend.ts +608 -0
- package/src/runtime/os-contracts.ts +529 -0
- package/src/runtime/port-registry.ts +298 -0
- package/src/runtime/process-input-routing.ts +92 -0
- package/src/runtime/process-input.ts +148 -0
- package/src/runtime/process-io-protocol.ts +97 -0
- package/src/runtime/process-logs.ts +882 -0
- package/src/runtime/process-table.ts +225 -0
- package/src/runtime/project-detect.ts +42 -0
- package/src/runtime/python-server-adapter.ts +133 -0
- package/src/runtime/require-resolver.ts +760 -0
- package/src/runtime/router-basename.ts +279 -0
- package/src/runtime/ruby-green-threads.ts +904 -0
- package/src/runtime/ruby-socket-shim.ts +548 -0
- package/src/runtime/session-process-supervisor.ts +323 -0
- package/src/runtime/sqlite-runtime-fs-bridge.ts +468 -0
- package/src/runtime/streams.ts +547 -0
- package/src/runtime/undici-shim.ts +517 -0
- package/src/runtime/vfs-manifest.ts +170 -0
- package/src/runtime/vfs-snapshot.ts +273 -0
- package/src/runtime/virtual-socket-kernel.ts +1370 -0
- package/src/runtime/vite-config-parser.ts +273 -0
- package/src/runtime/wasi/types.ts +448 -0
- package/src/runtime/wasi-instance.generated.ts +14 -0
- package/src/runtime/wasi-instance.ts +259 -0
- package/src/runtime/wasi-threads.ts +682 -0
- package/src/runtime/wasm-memory.ts +261 -0
- package/src/shell/elevation-commands.ts +117 -0
- package/src/shell/exec-dispatch.ts +201 -0
- package/src/shell/features.ts +870 -0
- package/src/shell/shell-entrypoints.ts +323 -0
- package/src/shell/shell-invocation.ts +181 -0
- package/src/shell/unix-accounts.ts +128 -0
- package/src/shell/unix-commands.ts +4335 -0
- package/src/substrate/lifo/UPSTREAM.md +14 -0
- package/src/substrate/lifo/commands/archive/gunzip.ts +63 -0
- package/src/substrate/lifo/commands/archive/gzip.ts +76 -0
- package/src/substrate/lifo/commands/archive/tar.ts +157 -0
- package/src/substrate/lifo/commands/archive/unzip.ts +112 -0
- package/src/substrate/lifo/commands/archive/zip.ts +70 -0
- package/src/substrate/lifo/commands/fs/basename.ts +16 -0
- package/src/substrate/lifo/commands/fs/cat.ts +54 -0
- package/src/substrate/lifo/commands/fs/chmod.ts +110 -0
- package/src/substrate/lifo/commands/fs/chown.ts +45 -0
- package/src/substrate/lifo/commands/fs/cp.ts +33 -0
- package/src/substrate/lifo/commands/fs/df.ts +56 -0
- package/src/substrate/lifo/commands/fs/dirname.ts +16 -0
- package/src/substrate/lifo/commands/fs/du.ts +100 -0
- package/src/substrate/lifo/commands/fs/file.ts +90 -0
- package/src/substrate/lifo/commands/fs/find.ts +76 -0
- package/src/substrate/lifo/commands/fs/ln.ts +19 -0
- package/src/substrate/lifo/commands/fs/ls.ts +164 -0
- package/src/substrate/lifo/commands/fs/mkdir.ts +37 -0
- package/src/substrate/lifo/commands/fs/mktemp.ts +56 -0
- package/src/substrate/lifo/commands/fs/mv.ts +111 -0
- package/src/substrate/lifo/commands/fs/realpath.ts +31 -0
- package/src/substrate/lifo/commands/fs/rm.ts +53 -0
- package/src/substrate/lifo/commands/fs/rmdir.ts +50 -0
- package/src/substrate/lifo/commands/fs/stat.ts +39 -0
- package/src/substrate/lifo/commands/fs/touch.ts +30 -0
- package/src/substrate/lifo/commands/fs/tree.ts +76 -0
- package/src/substrate/lifo/commands/index.ts +2 -0
- package/src/substrate/lifo/commands/io/dd.ts +289 -0
- package/src/substrate/lifo/commands/io/printf.ts +78 -0
- package/src/substrate/lifo/commands/io/tee.ts +37 -0
- package/src/substrate/lifo/commands/io/xargs.ts +49 -0
- package/src/substrate/lifo/commands/io/yes.ts +15 -0
- package/src/substrate/lifo/commands/net/curl.ts +739 -0
- package/src/substrate/lifo/commands/net/dig.ts +99 -0
- package/src/substrate/lifo/commands/net/forward.ts +90 -0
- package/src/substrate/lifo/commands/net/host.ts +182 -0
- package/src/substrate/lifo/commands/net/ifconfig.ts +139 -0
- package/src/substrate/lifo/commands/net/ip.ts +633 -0
- package/src/substrate/lifo/commands/net/netstat.ts +106 -0
- package/src/substrate/lifo/commands/net/ping.ts +74 -0
- package/src/substrate/lifo/commands/net/ports.ts +45 -0
- package/src/substrate/lifo/commands/net/route.ts +153 -0
- package/src/substrate/lifo/commands/net/tunnel-v2.ts +183 -0
- package/src/substrate/lifo/commands/net/tunnel.ts +272 -0
- package/src/substrate/lifo/commands/net/wget.ts +88 -0
- package/src/substrate/lifo/commands/registry.ts +141 -0
- package/src/substrate/lifo/commands/signal.ts +65 -0
- package/src/substrate/lifo/commands/system/bc.ts +265 -0
- package/src/substrate/lifo/commands/system/cal.ts +90 -0
- package/src/substrate/lifo/commands/system/date.ts +59 -0
- package/src/substrate/lifo/commands/system/env.ts +10 -0
- package/src/substrate/lifo/commands/system/fastfetch.ts +428 -0
- package/src/substrate/lifo/commands/system/free.ts +38 -0
- package/src/substrate/lifo/commands/system/help.ts +53 -0
- package/src/substrate/lifo/commands/system/hostname.ts +9 -0
- package/src/substrate/lifo/commands/system/kill.ts +89 -0
- package/src/substrate/lifo/commands/system/lifo.ts +525 -0
- package/src/substrate/lifo/commands/system/logout.ts +17 -0
- package/src/substrate/lifo/commands/system/man.ts +167 -0
- package/src/substrate/lifo/commands/system/node.ts +1305 -0
- package/src/substrate/lifo/commands/system/npm.ts +1078 -0
- package/src/substrate/lifo/commands/system/pkg.ts +111 -0
- package/src/substrate/lifo/commands/system/ps.ts +46 -0
- package/src/substrate/lifo/commands/system/registry-schemas.ts +33 -0
- package/src/substrate/lifo/commands/system/sha256sum.ts +89 -0
- package/src/substrate/lifo/commands/system/sl.ts +249 -0
- package/src/substrate/lifo/commands/system/sleep.ts +36 -0
- package/src/substrate/lifo/commands/system/stty.ts +69 -0
- package/src/substrate/lifo/commands/system/systemctl.ts +184 -0
- package/src/substrate/lifo/commands/system/top.ts +53 -0
- package/src/substrate/lifo/commands/system/uname.ts +59 -0
- package/src/substrate/lifo/commands/system/uptime.ts +19 -0
- package/src/substrate/lifo/commands/system/watch.ts +67 -0
- package/src/substrate/lifo/commands/system/which.ts +51 -0
- package/src/substrate/lifo/commands/system/whoami.ts +9 -0
- package/src/substrate/lifo/commands/text/awk.ts +210 -0
- package/src/substrate/lifo/commands/text/base64.ts +102 -0
- package/src/substrate/lifo/commands/text/cut.ts +92 -0
- package/src/substrate/lifo/commands/text/diff.ts +314 -0
- package/src/substrate/lifo/commands/text/grep.ts +170 -0
- package/src/substrate/lifo/commands/text/head.ts +95 -0
- package/src/substrate/lifo/commands/text/less.ts +335 -0
- package/src/substrate/lifo/commands/text/nano.ts +513 -0
- package/src/substrate/lifo/commands/text/nl.ts +74 -0
- package/src/substrate/lifo/commands/text/rev.ts +46 -0
- package/src/substrate/lifo/commands/text/sed.ts +297 -0
- package/src/substrate/lifo/commands/text/seq.ts +76 -0
- package/src/substrate/lifo/commands/text/sort.ts +88 -0
- package/src/substrate/lifo/commands/text/strings.ts +73 -0
- package/src/substrate/lifo/commands/text/tac.ts +37 -0
- package/src/substrate/lifo/commands/text/tail.ts +63 -0
- package/src/substrate/lifo/commands/text/tr.ts +192 -0
- package/src/substrate/lifo/commands/text/uniq.ts +77 -0
- package/src/substrate/lifo/commands/text/wc.ts +104 -0
- package/src/substrate/lifo/commands/types.ts +58 -0
- package/src/substrate/lifo/index.ts +173 -0
- package/src/substrate/lifo/kernel/ServiceManager.ts +371 -0
- package/src/substrate/lifo/kernel/index.ts +209 -0
- package/src/substrate/lifo/kernel/network/Bridge.ts +336 -0
- package/src/substrate/lifo/kernel/network/DNSResolver.ts +158 -0
- package/src/substrate/lifo/kernel/network/NetworkInterface.ts +235 -0
- package/src/substrate/lifo/kernel/network/NetworkNamespace.ts +182 -0
- package/src/substrate/lifo/kernel/network/NetworkStack.ts +590 -0
- package/src/substrate/lifo/kernel/network/PortBridge.ts +182 -0
- package/src/substrate/lifo/kernel/network/RoutingTable.ts +209 -0
- package/src/substrate/lifo/kernel/network/Socket.ts +245 -0
- package/src/substrate/lifo/kernel/network/index.ts +29 -0
- package/src/substrate/lifo/kernel/network/tunnel/BaseTunnel.ts +124 -0
- package/src/substrate/lifo/kernel/network/tunnel/VETHPair.ts +227 -0
- package/src/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.ts +387 -0
- package/src/substrate/lifo/kernel/network/types.ts +178 -0
- package/src/substrate/lifo/kernel/persistence/PersistenceManager.ts +50 -0
- package/src/substrate/lifo/kernel/persistence/backends.ts +36 -0
- package/src/substrate/lifo/kernel/persistence/index.ts +5 -0
- package/src/substrate/lifo/kernel/persistence/serializer.ts +127 -0
- package/src/substrate/lifo/kernel/samples.ts +966 -0
- package/src/substrate/lifo/kernel/storage/BlobStore.ts +114 -0
- package/src/substrate/lifo/kernel/storage/ContentStore.ts +150 -0
- package/src/substrate/lifo/kernel/storage/index.ts +5 -0
- package/src/substrate/lifo/kernel/unit-parser.ts +95 -0
- package/src/substrate/lifo/kernel/vfs/VFS.ts +768 -0
- package/src/substrate/lifo/kernel/vfs/index.ts +9 -0
- package/src/substrate/lifo/kernel/vfs/providers/DevProvider.ts +172 -0
- package/src/substrate/lifo/kernel/vfs/providers/NativeFsProvider.ts +198 -0
- package/src/substrate/lifo/kernel/vfs/providers/ProcProvider.ts +144 -0
- package/src/substrate/lifo/kernel/vfs/types.ts +145 -0
- package/src/substrate/lifo/node-compat/buffer.ts +357 -0
- package/src/substrate/lifo/node-compat/child_process.ts +52 -0
- package/src/substrate/lifo/node-compat/console.ts +70 -0
- package/src/substrate/lifo/node-compat/crypto.ts +186 -0
- package/src/substrate/lifo/node-compat/dns.ts +214 -0
- package/src/substrate/lifo/node-compat/esbuild.ts +85 -0
- package/src/substrate/lifo/node-compat/events.ts +94 -0
- package/src/substrate/lifo/node-compat/fs.ts +762 -0
- package/src/substrate/lifo/node-compat/http.ts +561 -0
- package/src/substrate/lifo/node-compat/index.ts +300 -0
- package/src/substrate/lifo/node-compat/module.ts +148 -0
- package/src/substrate/lifo/node-compat/os.ts +44 -0
- package/src/substrate/lifo/node-compat/path.ts +74 -0
- package/src/substrate/lifo/node-compat/process.ts +178 -0
- package/src/substrate/lifo/node-compat/readline.ts +244 -0
- package/src/substrate/lifo/node-compat/rimraf.ts +80 -0
- package/src/substrate/lifo/node-compat/stream.ts +98 -0
- package/src/substrate/lifo/node-compat/string_decoder.ts +26 -0
- package/src/substrate/lifo/node-compat/timers.ts +21 -0
- package/src/substrate/lifo/node-compat/tty.ts +83 -0
- package/src/substrate/lifo/node-compat/url.ts +76 -0
- package/src/substrate/lifo/node-compat/util.ts +133 -0
- package/src/substrate/lifo/node-compat/zlib.ts +94 -0
- package/src/substrate/lifo/pkg/PackageManager.ts +105 -0
- package/src/substrate/lifo/pkg/lifo-dev.ts +130 -0
- package/src/substrate/lifo/pkg/lifo-runtime.ts +473 -0
- package/src/substrate/lifo/pkg/loader.ts +33 -0
- package/src/substrate/lifo/platform-globals.d.ts +41 -0
- package/src/substrate/lifo/sandbox/HeadlessTerminal.ts +38 -0
- package/src/substrate/lifo/sandbox/Sandbox.ts +279 -0
- package/src/substrate/lifo/sandbox/SandboxCommands.ts +74 -0
- package/src/substrate/lifo/sandbox/SandboxFs.ts +160 -0
- package/src/substrate/lifo/sandbox/index.ts +8 -0
- package/src/substrate/lifo/sandbox/types.ts +117 -0
- package/src/substrate/lifo/shell/ProcessRegistry.ts +379 -0
- package/src/substrate/lifo/shell/Shell.ts +2048 -0
- package/src/substrate/lifo/shell/completer.ts +212 -0
- package/src/substrate/lifo/shell/default-shell.ts +63 -0
- package/src/substrate/lifo/shell/expander.ts +1349 -0
- package/src/substrate/lifo/shell/history.ts +138 -0
- package/src/substrate/lifo/shell/interpreter.ts +1754 -0
- package/src/substrate/lifo/shell/jobs.ts +64 -0
- package/src/substrate/lifo/shell/lexer.ts +698 -0
- package/src/substrate/lifo/shell/parser.ts +711 -0
- package/src/substrate/lifo/shell/pipe.ts +92 -0
- package/src/substrate/lifo/shell/signals.ts +70 -0
- package/src/substrate/lifo/shell/terminal-stdin.ts +109 -0
- package/src/substrate/lifo/shell/test-builtin.ts +316 -0
- package/src/substrate/lifo/shell/types.ts +166 -0
- package/src/substrate/lifo/terminal/ITerminal.ts +9 -0
- package/src/substrate/lifo/utils/archive.ts +389 -0
- package/src/substrate/lifo/utils/args.ts +89 -0
- package/src/substrate/lifo/utils/colors.ts +29 -0
- package/src/substrate/lifo/utils/encoding.ts +21 -0
- package/src/substrate/lifo/utils/glob.ts +172 -0
- package/src/substrate/lifo/utils/mime.ts +114 -0
- package/src/substrate/lifo/utils/path.ts +83 -0
- package/src/types/assets.d.ts +4 -0
- package/src/vfs/events.ts +134 -0
- package/src/vfs/path.ts +71 -0
- package/src/vfs/seed-project.ts +1094 -0
- package/src/vfs/sqlite-vfs.ts +5035 -0
- package/src/vfs/symlink-registry.ts +172 -0
- package/src/workspace/nimbus-workspace.ts +213 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wasi-instance.ts — WASI snapshot_preview1 shim for Nimbus.
|
|
3
|
+
*
|
|
4
|
+
* Core WASI surface:
|
|
5
|
+
* args_get / args_sizes_get / environ_get / environ_sizes_get
|
|
6
|
+
* fd_close / fd_write / fd_read / fd_seek / fd_tell
|
|
7
|
+
* fd_fdstat_get / fd_fdstat_set_flags
|
|
8
|
+
* proc_exit
|
|
9
|
+
* clock_time_get / clock_res_get
|
|
10
|
+
* random_get
|
|
11
|
+
* sched_yield
|
|
12
|
+
*
|
|
13
|
+
* Filesystem WASI additions:
|
|
14
|
+
* path_open
|
|
15
|
+
* path_create_directory / path_remove_directory
|
|
16
|
+
* path_unlink_file
|
|
17
|
+
* path_rename
|
|
18
|
+
* path_filestat_get / path_filestat_set_times
|
|
19
|
+
* fd_readdir (cookie-paginated)
|
|
20
|
+
* fd_filestat_get / fd_filestat_set_size
|
|
21
|
+
* fd_pread / fd_pwrite
|
|
22
|
+
* fd_prestat_get / fd_prestat_dir_name (real preopens, not EBADF)
|
|
23
|
+
*
|
|
24
|
+
* Socket, polling, and metadata additions:
|
|
25
|
+
* - per-file mtime/atime/ctime tracking + in-memory symlink table
|
|
26
|
+
* (additive — files Map shape unchanged; parallel times/symlinks Maps)
|
|
27
|
+
* - fd_filestat_set_times / path_filestat_set_times — implementations that
|
|
28
|
+
* write mtime/atime; honor ATIM_NOW / MTIM_NOW flags via clock_realtime
|
|
29
|
+
* - path_symlink / path_readlink / path_link. Symlink
|
|
30
|
+
* resolution via __wasiResolvePathFull(baseFd, path, followFlag)
|
|
31
|
+
* with POSIX-style 40-deep loop detection (returns ELOOP).
|
|
32
|
+
* - fd_allocate extends bytes to offset+len and zero-fills.
|
|
33
|
+
* - proc_raise(sig) throws __WasiExit(128 + sig) per POSIX shell convention
|
|
34
|
+
* (SIGABRT=6 -> 134, SIGTERM=15 -> 143).
|
|
35
|
+
* - fd_fdstat_set_rights tracks per-fd rights mask;
|
|
36
|
+
* fd_fdstat_get returns the tracked mask instead of wide-open).
|
|
37
|
+
*
|
|
38
|
+
* Socket support via cloudflare:sockets + JSPI:
|
|
39
|
+
* - sock_send / sock_recv / sock_shutdown via
|
|
40
|
+
* WebAssembly.Suspending wrapping. path_open('/dev/tcp/<host>/<port>')
|
|
41
|
+
* synthetic-path triggers cloudflare:sockets connect().
|
|
42
|
+
*
|
|
43
|
+
* Poll support via JSPI:
|
|
44
|
+
* - poll_oneoff handles all three subscription types in a
|
|
45
|
+
* single Promise.race wrapped via WebAssembly.Suspending:
|
|
46
|
+
* CLOCK (REALTIME + MONOTONIC, relative + absolute deadlines via
|
|
47
|
+
* SUBSCRIPTION_CLOCK_ABSTIME flag) -> setTimeout to deadline.
|
|
48
|
+
* FD_READ/FD_WRITE on file/dir/stdio/symlink -> always-ready
|
|
49
|
+
* (POSIX: regular files never block).
|
|
50
|
+
* FD_READ on socket -> real await on
|
|
51
|
+
* socket.readable.getReader().read(); data is stashed on
|
|
52
|
+
* entry.readBuf so subsequent sock_recv sees it pre-loaded.
|
|
53
|
+
* FD_WRITE on socket -> always-ready (CF Workers writable
|
|
54
|
+
* streams have unbounded queue from wasm-side perspective).
|
|
55
|
+
* Concurrent-ready drain: after first-promise resolution, probes
|
|
56
|
+
* each remaining promise against a microtask sentinel; collects
|
|
57
|
+
* all currently-resolved events into the output.
|
|
58
|
+
*
|
|
59
|
+
* wasi-threads:
|
|
60
|
+
* Implemented, in runtime/wasi-threads.ts, whose preamble is appended to
|
|
61
|
+
* this one — threads syscall through THESE imports, so they share one
|
|
62
|
+
* evaluated scope. This file's only stake in it is two lines: a park
|
|
63
|
+
* releases the scheduler token (withParkDeadline) and sched_yield is a
|
|
64
|
+
* real scheduling point. Correct but never parallel; see
|
|
65
|
+
* docs/wasi-threads.md.
|
|
66
|
+
*
|
|
67
|
+
* Architecture (filesystem WASI strategy)
|
|
68
|
+
* ──────────────────────────────
|
|
69
|
+
*
|
|
70
|
+
* Strategy: live VFS, seeded cache. The session VFS (supervisor DO) is the
|
|
71
|
+
* single source of truth. The facet holds a CACHE of it:
|
|
72
|
+
*
|
|
73
|
+
* - `__wasiInitFS(seed)` installs a metadata manifest (dirs, modes, sizes,
|
|
74
|
+
* times, symlinks) plus optional file content. Content the seed did not
|
|
75
|
+
* carry is listed in `sizes` and demand-loaded through the SUPERVISOR
|
|
76
|
+
* binding (`fsReadRange`, 64 KiB chunks) on first read — a seed miss is
|
|
77
|
+
* a cache miss, never a correctness failure.
|
|
78
|
+
* - Writes apply to the cache synchronously and enqueue write-through ops
|
|
79
|
+
* (writeFile / fsWriteRange / unlink / mkdir / rename / …) on a FIFO
|
|
80
|
+
* persist queue that drains continuously. Callers await
|
|
81
|
+
* `__wasiDrainPersist()` before returning a result and at every resident
|
|
82
|
+
* park, so a server's writes are durable while it runs — there is no
|
|
83
|
+
* flush-on-exit and no diff-back.
|
|
84
|
+
* - Any live read (content fetch, stat miss, readdir refresh) first drains
|
|
85
|
+
* the queue, so the supervisor's answer always includes this process's
|
|
86
|
+
* own writes.
|
|
87
|
+
* - A metadata miss with a supervisor present goes to a live `stat` before
|
|
88
|
+
* reporting ENOENT, so files created after spawn are visible.
|
|
89
|
+
*
|
|
90
|
+
* Seeds are validated supervisor-side by the per-subtree VFS revision
|
|
91
|
+
* (runners rebuild the seed when the revision moved), so a served seed is
|
|
92
|
+
* never stale. Without a supervisor binding the seed is authoritative and
|
|
93
|
+
* behavior degrades to the closed-world snapshot semantics unit tests use.
|
|
94
|
+
*
|
|
95
|
+
* Blocking discipline: file/stdio ops that can be answered from the cache
|
|
96
|
+
* return a plain errno number (JSPI passes it through with no suspender, so
|
|
97
|
+
* sync callers — ruby _initialize, opentui render — are unaffected). Ops
|
|
98
|
+
* that need the supervisor return a Promise which the Suspending wrapper
|
|
99
|
+
* parks the guest on; the guest must run under WebAssembly.promising.
|
|
100
|
+
*
|
|
101
|
+
* Errno values (subset)
|
|
102
|
+
* ─────────────────────
|
|
103
|
+
* ESUCCESS = 0 EBADF = 8 ENOENT = 44 EEXIST = 20
|
|
104
|
+
* EISDIR = 31 ENOTDIR = 54 EINVAL = 28 ENOSYS = 52
|
|
105
|
+
* ELOOP = 32 ENOTEMPTY = 55 ENOTCAPABLE = 76
|
|
106
|
+
* ESPIPE = 70 (stdio is a non-seekable pipe)
|
|
107
|
+
*
|
|
108
|
+
* Clock IDs
|
|
109
|
+
* ─────────
|
|
110
|
+
* CLOCK_REALTIME = 0 / MONOTONIC = 1 / PROCESS_CPUTIME = 2 / THREAD = 3
|
|
111
|
+
*
|
|
112
|
+
* fstflags (filestat_set_times)
|
|
113
|
+
* ─────────────────────────────
|
|
114
|
+
* __WASI_FSTFLAGS_ATIM = 1
|
|
115
|
+
* __WASI_FSTFLAGS_ATIM_NOW = 2
|
|
116
|
+
* __WASI_FSTFLAGS_MTIM = 4
|
|
117
|
+
* __WASI_FSTFLAGS_MTIM_NOW = 8
|
|
118
|
+
*/
|
|
119
|
+
import { WASI_INSTANCE_BODY_SRC } from './wasi-instance.generated.js';
|
|
120
|
+
import { WASI_THREADS_PREAMBLE_SRC } from './wasi-threads.js';
|
|
121
|
+
/**
|
|
122
|
+
* Source string injected as the loader-pool `preamble`. The facet's
|
|
123
|
+
* module init evaluates this verbatim so the WASI helpers (`__wasiInitFS`,
|
|
124
|
+
* `__wasiMakeImports`, `__wasiRunStart`, `__wasiReadFilesB64`) are in scope
|
|
125
|
+
* when the user fn runs. Self-contained — no closure captures, no imports.
|
|
126
|
+
*
|
|
127
|
+
* The wasi-threads scheduler is appended rather than inlined: it is one
|
|
128
|
+
* evaluated scope with the syscall layer (it has to be — threads syscall
|
|
129
|
+
* through these very imports), but it is a separate concern and lives in its
|
|
130
|
+
* own file.
|
|
131
|
+
*/
|
|
132
|
+
export const WASI_INSTANCE_PREAMBLE_SRC = WASI_INSTANCE_BODY_SRC + WASI_THREADS_PREAMBLE_SRC;
|
|
133
|
+
export const WASI_ABI_NAMESPACE = Object.freeze({
|
|
134
|
+
preview1: 'wasi_snapshot_preview1',
|
|
135
|
+
preview0: 'wasi_unstable',
|
|
136
|
+
});
|
|
137
|
+
/**
|
|
138
|
+
* Names of the WASI imports implemented by this shim.
|
|
139
|
+
*
|
|
140
|
+
* `wasm-runner --help` prints this to users, so under-reporting sends a caller
|
|
141
|
+
* away from a syscall that is right there.
|
|
142
|
+
*
|
|
143
|
+
* The list stays hand-ordered because it is read by people — grouped the way the
|
|
144
|
+
* spec groups them — but it is no longer hand-MAINTAINED. `satisfies` rejects a
|
|
145
|
+
* name the import table does not implement, and `_AllSyscallsListed` below
|
|
146
|
+
* rejects a syscall the table implements that nobody added here. Both directions
|
|
147
|
+
* are compile errors, so the list cannot drift from the table in either one.
|
|
148
|
+
* `tests/unit/wasi-implemented-fns.mjs` remains the runtime half of the check:
|
|
149
|
+
* types cannot see inside the emitted source string.
|
|
150
|
+
*/
|
|
151
|
+
export const WASI_IMPLEMENTED_FNS = Object.freeze([
|
|
152
|
+
// core WASI
|
|
153
|
+
'args_get', 'args_sizes_get',
|
|
154
|
+
'environ_get', 'environ_sizes_get',
|
|
155
|
+
'fd_close', 'fd_read', 'fd_write', 'fd_seek', 'fd_tell',
|
|
156
|
+
'fd_fdstat_get', 'fd_fdstat_set_flags',
|
|
157
|
+
'proc_exit', 'proc_raise',
|
|
158
|
+
'clock_time_get', 'clock_res_get',
|
|
159
|
+
'random_get',
|
|
160
|
+
'sched_yield',
|
|
161
|
+
// filesystem WASI
|
|
162
|
+
'fd_prestat_get', 'fd_prestat_dir_name',
|
|
163
|
+
'path_open',
|
|
164
|
+
'path_create_directory', 'path_remove_directory',
|
|
165
|
+
'path_unlink_file',
|
|
166
|
+
'path_rename',
|
|
167
|
+
'path_filestat_get', 'path_filestat_set_times',
|
|
168
|
+
'fd_filestat_get', 'fd_filestat_set_size', 'fd_filestat_set_times',
|
|
169
|
+
'fd_pread', 'fd_pwrite',
|
|
170
|
+
'fd_readdir',
|
|
171
|
+
'fd_renumber',
|
|
172
|
+
'fd_advise', 'fd_datasync', 'fd_sync',
|
|
173
|
+
// symlinks, rights, sockets, and polling
|
|
174
|
+
'path_symlink', 'path_readlink', 'path_link',
|
|
175
|
+
'fd_allocate',
|
|
176
|
+
'fd_fdstat_set_rights',
|
|
177
|
+
'sock_send', 'sock_recv', 'sock_shutdown', 'sock_accept',
|
|
178
|
+
'poll_oneoff',
|
|
179
|
+
]);
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wasi-threads.ts — pthread / wasi-threads parity for Nimbus.
|
|
3
|
+
*
|
|
4
|
+
* This is the host-side sibling of `ruby-green-threads.ts`. That file runs a
|
|
5
|
+
* green-thread scheduler INSIDE a guest VM (fibers of one wasm instance); this
|
|
6
|
+
* one runs the same model at the host layer, over MULTIPLE INSTANCES of one
|
|
7
|
+
* module sharing one `WebAssembly.Memory`. One concurrency model, two layers —
|
|
8
|
+
* the park set, run-to-park policy, deadlock detection and honest-limits
|
|
9
|
+
* statement below are deliberately the same contract, not a second one.
|
|
10
|
+
*
|
|
11
|
+
* ── Why this works at all ──────────────────────────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* Instantiating one compiled module N times against a single
|
|
14
|
+
* `new WebAssembly.Memory({ shared: true })` gives N wasm stacks over ONE
|
|
15
|
+
* linear memory, and — the load-bearing property — each instance gets its own
|
|
16
|
+
* GLOBALS, so every thread has a private `__stack_pointer` and `__tls_base`
|
|
17
|
+
* for free. wasi-libc's `wasi_thread_start` sets both from the start struct
|
|
18
|
+
* the spawning thread allocated, so TLS needs no host emulation.
|
|
19
|
+
*
|
|
20
|
+
* Threads of one process never cross an isolate boundary, so nothing here
|
|
21
|
+
* needs a primitive workerd lacks. What workerd does lack is request-time
|
|
22
|
+
* COMPILATION (`new WebAssembly.Module(bytes)` → "Wasm code generation
|
|
23
|
+
* disallowed by embedder"); instantiation of an already-compiled module is
|
|
24
|
+
* allowed. Every thread therefore reuses the one module the loader pool
|
|
25
|
+
* compiled at startup. That is why `startThread` is injected rather than built
|
|
26
|
+
* here: this file owns scheduling policy, the runner owns the module.
|
|
27
|
+
*
|
|
28
|
+
* ── 1. Scheduling policy ───────────────────────────────────────────────────
|
|
29
|
+
*
|
|
30
|
+
* Round-robin, run-to-park, creation order, exactly one thread executing at a
|
|
31
|
+
* time. A thread runs until it parks; each scheduling pass walks the threads in
|
|
32
|
+
* creation order and makes runnable every one whose wait condition is now
|
|
33
|
+
* satisfied; the head of the run queue then gets the token.
|
|
34
|
+
*
|
|
35
|
+
* Serialised execution is what makes correctness reachable without
|
|
36
|
+
* `Atomics.wait`: memory is genuinely shared, but access to it is serialised,
|
|
37
|
+
* so the scheduler introduces no data race of its own.
|
|
38
|
+
*
|
|
39
|
+
* ── 2. The park set ────────────────────────────────────────────────────────
|
|
40
|
+
*
|
|
41
|
+
* Every operation that can block MUST park, or it is a latent deadlock:
|
|
42
|
+
*
|
|
43
|
+
* futex wait (mutex, condvar, join, barrier, sem) here, `futexWait`
|
|
44
|
+
* sched_yield here, `yieldNow`
|
|
45
|
+
* every blocking WASI import (fd_read, poll_oneoff,
|
|
46
|
+
* sock_send/recv, …) wasi-instance,
|
|
47
|
+
* `withParkDeadline`
|
|
48
|
+
* → `parkIo`
|
|
49
|
+
*
|
|
50
|
+
* The WASI leg is one integration point rather than eight because
|
|
51
|
+
* `withParkDeadline` already wraps every parkable import and already knows
|
|
52
|
+
* "this call returned a promise, so it is a real park".
|
|
53
|
+
*
|
|
54
|
+
* ── 3. The software futex, and why there is no `futex_wake` ────────────────
|
|
55
|
+
*
|
|
56
|
+
* `Atomics.wait` throws in workerd (`SetAllowAtomicsWait(false)`), and the
|
|
57
|
+
* `memory.atomic.wait32` INSTRUCTION traps for the same reason — so a guest
|
|
58
|
+
* cannot block on memory by itself. wasi-libc provides the one hook that
|
|
59
|
+
* matters: `__wasilibc_futex_wait` calls the weak symbol
|
|
60
|
+
* `__wasilibc_futex_wait_maybe_busy` when it is defined, and falls back to the
|
|
61
|
+
* instruction when it is not. Defining it (see `runtime-contracts/`) routes
|
|
62
|
+
* every libc futex wait — mutex, condvar, join, barrier, semaphore — through
|
|
63
|
+
* the host import `nimbus_threads.futex_wait`.
|
|
64
|
+
*
|
|
65
|
+
* The matching wake is INLINED into libc as `memory.atomic.notify` and cannot
|
|
66
|
+
* be hooked. It does not need to be. A waiter parks on a PREDICATE —
|
|
67
|
+
* "*addr != expected" — and every scheduling pass re-evaluates it. Because
|
|
68
|
+
* exactly one thread runs at a time, memory can only change while some thread
|
|
69
|
+
* runs, and a scheduling pass happens at every park, yield and exit; so a
|
|
70
|
+
* predicate that is satisfiable at any instant a waiter could have run is
|
|
71
|
+
* observed at that instant. The futex is level-triggered rather than
|
|
72
|
+
* edge-triggered, which is strictly safer: a lost wakeup is not expressible.
|
|
73
|
+
*
|
|
74
|
+
* That same property makes deadlock detection EXACT rather than heuristic. If
|
|
75
|
+
* every live thread is parked on a predicate, none is satisfied, and no host
|
|
76
|
+
* I/O or timer is outstanding, then no thread can run, so memory can never
|
|
77
|
+
* change, so no predicate can ever become true. That is a proof, and it is
|
|
78
|
+
* reported as a deadlock instead of hanging — the `ruby-green-threads.ts`
|
|
79
|
+
* precedent ("every thread is blocked and nothing can wake them").
|
|
80
|
+
*
|
|
81
|
+
* ── 4. Timeouts and the suspension ceiling ─────────────────────────────────
|
|
82
|
+
*
|
|
83
|
+
* A wasm stack suspended inside a Durable Object resumes in a later request
|
|
84
|
+
* only under a measured ~15 s ceiling (`__WASI_PARK_CEILING_MS`); past it the
|
|
85
|
+
* promise never settles at all. A finite futex timeout longer than
|
|
86
|
+
* `__WASI_PARK_DEADLINE_MS` is therefore capped, and the capped expiry resolves
|
|
87
|
+
* as a SPURIOUS WAKEUP (0), not `ETIMEDOUT`. That composes correctly rather
|
|
88
|
+
* than by luck: POSIX permits spurious wakeups and every correct mutex/condvar
|
|
89
|
+
* caller re-checks its predicate in a loop, so the guest simply re-parks. An
|
|
90
|
+
* INFINITE wait gets no watchdog at all — the exact deadlock detection above
|
|
91
|
+
* is a better answer than waking a thread every ten seconds forever.
|
|
92
|
+
*
|
|
93
|
+
* ── 5. Honest limits ───────────────────────────────────────────────────────
|
|
94
|
+
*
|
|
95
|
+
* CORRECT: mutual exclusion, condition variables, `pthread_join`/detach, TLS,
|
|
96
|
+
* barriers, semaphores, once-init. A program correct under a real pthread
|
|
97
|
+
* library is correct here.
|
|
98
|
+
*
|
|
99
|
+
* NOT PARALLEL: one core, one runnable thread at a time. A CPU-bound N-thread
|
|
100
|
+
* program gets ZERO speedup and pays switching overhead on top. It finishes
|
|
101
|
+
* correctly and slower than the single-threaded version would. This is not a
|
|
102
|
+
* temporary state pending an offload path: every resident Nimbus process is a
|
|
103
|
+
* DO Facet, and facet siblings serialise on CPU (measured), so there is no
|
|
104
|
+
* independent-CPU substrate to escape to.
|
|
105
|
+
*
|
|
106
|
+
* NO PREEMPTION YET: a thread that never reaches the park set — a spinlock, a
|
|
107
|
+
* tight compute loop — holds the process until it does. Unlike the Ruby layer,
|
|
108
|
+
* which documents that preemption "is not possible" because it cannot rebuild
|
|
109
|
+
* the Ruby VM, that is fixable here (back-edge yield fuel in the module build)
|
|
110
|
+
* and is the next phase, not a permanent limit.
|
|
111
|
+
*
|
|
112
|
+
* LOUD, NEVER SILENTLY WRONG: a module that asks for `wasi.thread-spawn`
|
|
113
|
+
* without an imported shared memory, without exporting `wasi_thread_start`, or
|
|
114
|
+
* without the futex shim linked in is rejected at load with the exact remedy —
|
|
115
|
+
* see `wasiThreadsLoadError`. It is never run in a way that would corrupt.
|
|
116
|
+
*/
|
|
117
|
+
/** The import namespace the wasi-threads proposal defines. */
|
|
118
|
+
export declare const WASI_THREADS_NAMESPACE = "wasi";
|
|
119
|
+
/** The import namespace carrying Nimbus's software futex. */
|
|
120
|
+
export declare const NIMBUS_THREADS_NAMESPACE = "nimbus_threads";
|
|
121
|
+
/** The guest export a wasi-threads module must provide. */
|
|
122
|
+
export declare const WASI_THREAD_START_EXPORT = "wasi_thread_start";
|
|
123
|
+
/** The memory a threads module imports, as declared in its binary. */
|
|
124
|
+
export interface WasmMemoryImport {
|
|
125
|
+
module: string;
|
|
126
|
+
name: string;
|
|
127
|
+
/** Pages (64 KiB each). */
|
|
128
|
+
initial: number;
|
|
129
|
+
/** Pages; wasm requires a maximum on shared memories. */
|
|
130
|
+
maximum: number | null;
|
|
131
|
+
shared: boolean;
|
|
132
|
+
}
|
|
133
|
+
/** What a compiled module asks of the host with respect to threads. */
|
|
134
|
+
export interface WasmThreadsInfo {
|
|
135
|
+
/** True when the module imports `wasi.thread-spawn`. */
|
|
136
|
+
spawns: boolean;
|
|
137
|
+
/** True when the module imports `nimbus_threads.futex_wait`. */
|
|
138
|
+
futex: boolean;
|
|
139
|
+
/** The imported memory, or null when the module defines its own. */
|
|
140
|
+
memory: WasmMemoryImport | null;
|
|
141
|
+
/** True when the module exports `wasi_thread_start`. */
|
|
142
|
+
threadStart: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Read the import and export sections of a wasm binary.
|
|
146
|
+
*
|
|
147
|
+
* The JS API exposes `WebAssembly.Module.imports()` but not the TYPE of an
|
|
148
|
+
* imported memory, and the host has to create that memory with the exact
|
|
149
|
+
* initial/maximum the module declares or instantiation fails. So the limits
|
|
150
|
+
* are read from the binary, supervisor-side, where the bytes already are.
|
|
151
|
+
* Only the two sections that matter are decoded; every other section is
|
|
152
|
+
* skipped by its declared length.
|
|
153
|
+
*/
|
|
154
|
+
export declare function inspectWasmThreads(bytes: Uint8Array): WasmThreadsInfo;
|
|
155
|
+
/**
|
|
156
|
+
* Why this module cannot be run with threads, or null when it can.
|
|
157
|
+
*
|
|
158
|
+
* Every unsupported shape fails HERE — at load, with the remedy — rather than
|
|
159
|
+
* part-way through a run with corrupted memory semantics. A module that does
|
|
160
|
+
* not ask for threads at all is not this function's business and returns null.
|
|
161
|
+
*/
|
|
162
|
+
export declare function wasiThreadsLoadError(info: WasmThreadsInfo): string | null;
|
|
163
|
+
/**
|
|
164
|
+
* Source string appended to the WASI preamble. Evaluated verbatim in the facet
|
|
165
|
+
* isolate, where the thread instances live — self-contained apart from the
|
|
166
|
+
* constants and the `__wasiThreads` slot the WASI preamble declares.
|
|
167
|
+
*/
|
|
168
|
+
export declare const WASI_THREADS_PREAMBLE_SRC = "\n// \u2500\u2500 BEGIN: wasi-threads preamble (green-thread scheduler + software futex) \u2500\u2500\u2500\n// Source mirror: src/runtime/wasi-threads.ts. Keep in sync by hand.\n\n// wasi-libc gives the main thread tid 1 and expects the host to allocate\n// spawned tids above it; musl stores the tid as the mutex owner word, so a\n// collision would make one thread able to unlock another's mutex.\nconst __WASI_THREAD_MAIN_TID = 1;\n\n// A green thread costs an instance (its own globals + stack in shared memory),\n// so an unbounded spawn loop is a memory fault with no error. pthread_create\n// reports EAGAIN for exactly this, and the guest's own error path handles it.\nconst __WASI_THREADS_MAX = 128;\n\n/**\n * The scheduler. Owns every green thread and decides which one may run.\n *\n * It knows nothing about WebAssembly on purpose: `startThread` is supplied by\n * whoever owns the compiled module, which keeps the \"one startup-compiled\n * module, instantiated per thread, never recompiled\" rule where the module is.\n */\nclass __WasiThreadScheduler {\n constructor(opts) {\n // Re-read through .buffer on every access: a shared memory can grow, and a\n // grown memory means a new backing buffer.\n this.memory = opts.memory;\n // (tid, startArg) -> Promise, resolving when that thread's body returns.\n this.startThread = opts.startThread;\n this.threads = []; // creation order \u2014 the scheduling pass walks this\n this.nextTid = __WASI_THREAD_MAIN_TID + 1;\n this.current = null; // the one thread holding the token\n this.runQueue = [];\n this.pendingIo = 0; // threads parked on a host promise\n this.pendingTimers = 0; // futex waits with a live timer\n this.finished = null; // { exitCode, error } once the process ends\n this.settleProcess = null;\n this.spawnError = null; // why the last thread-spawn returned EAGAIN\n }\n\n words() { return new Int32Array(this.memory.buffer); }\n\n live() {\n let n = 0;\n for (const t of this.threads) if (t.state !== 'exited') n++;\n return n;\n }\n\n // \u2500\u2500 Import table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n //\n // thread-spawn returns i32 synchronously and must NOT be Suspending; futex\n // waits park the caller and must be.\n hostImports() {\n const spawn = (startArg) => this.spawn(startArg | 0);\n const futexWait = (addr, expected, maxWaitNs) => this.futexWait(addr | 0, expected | 0, maxWaitNs);\n const suspending = (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Suspending === 'function')\n ? new WebAssembly.Suspending(futexWait)\n : futexWait;\n return {\n 'wasi': { 'thread-spawn': spawn },\n 'nimbus_threads': { futex_wait: suspending },\n };\n }\n\n // \u2500\u2500 Thread lifecycle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n record(tid) {\n return {\n tid,\n state: 'runnable', // runnable | running | parked | exited\n cond: null, // { word, expected } while futex-parked\n timer: null,\n settlePark: null,\n resume: null,\n };\n }\n\n /**\n * wasi-threads `thread-spawn`: allocate a tid, hand the guest's start\n * struct to a fresh instance, and queue it. Returns the tid, or a negative\n * value the guest's pthread_create turns into EAGAIN.\n *\n * The child does not run here \u2014 the spawning thread keeps the token and runs\n * to its next park, which is what run-to-park means and what makes the\n * ordering reproducible.\n */\n spawn(startArg) {\n if (this.finished) return -__WASI_EAGAIN;\n if (this.live() >= __WASI_THREADS_MAX) return -__WASI_EAGAIN;\n const t = this.record(this.nextTid);\n let begin;\n try {\n begin = this.startThread(t.tid, startArg);\n } catch (e) {\n // Instantiating the shared module failed (out of memory for the\n // instance, or a host defect). The guest sees EAGAIN, which is the\n // errno pthread_create already documents for \"cannot create thread\".\n this.spawnError = 'thread-spawn failed: ' + ((e && e.message) ? e.message : String(e));\n return -__WASI_EAGAIN;\n }\n this.nextTid++;\n this.threads.push(t);\n t.resume = () => {\n let entered;\n try {\n entered = begin();\n } catch (e) {\n this.onThreadSettled(t, e);\n return;\n }\n Promise.resolve(entered).then(() => this.onThreadSettled(t, null), (e) => this.onThreadSettled(t, e));\n };\n this.runQueue.push(t);\n return t.tid;\n }\n\n /**\n * Run the process. `enter` is the main thread's promising entry (_start).\n * Resolves with the same shape __wasiRunStart returns.\n */\n runMain(enter) {\n const t = this.record(__WASI_THREAD_MAIN_TID);\n t.state = 'running';\n this.threads.push(t);\n this.current = t;\n const done = new Promise((resolve) => { this.settleProcess = resolve; });\n let entered;\n try {\n entered = enter();\n } catch (e) {\n this.onThreadSettled(t, e);\n return done;\n }\n Promise.resolve(entered).then(() => this.onThreadSettled(t, null), (e) => this.onThreadSettled(t, e));\n return done;\n }\n\n onThreadSettled(t, err) {\n t.state = 'exited';\n if (t.timer !== null) { clearTimeout(t.timer); t.timer = null; this.pendingTimers--; }\n if (this.current === t) this.current = null;\n if (err) {\n // proc_exit from ANY thread ends the process, which is POSIX exit(3).\n if (err && err.constructor && err.constructor.name === '__WasiExit') {\n this.endProcess({ exitCode: err.code });\n return;\n }\n this.endProcess({\n exitCode: 1,\n error: 'thread ' + t.tid + ': ' + ((err && err.message) ? err.message : String(err)),\n });\n return;\n }\n // The main thread returning ends the process and every thread with it \u2014\n // POSIX semantics for exit(3), and the same rule ruby-green-threads\n // applies when its main body finishes.\n if (t.tid === __WASI_THREAD_MAIN_TID) {\n this.endProcess({ exitCode: 0 });\n return;\n }\n this.dispatch();\n }\n\n endProcess(result) {\n if (this.finished) return;\n this.finished = result;\n this.current = null;\n this.runQueue.length = 0;\n for (const t of this.threads) {\n if (t.timer !== null) { clearTimeout(t.timer); t.timer = null; }\n }\n this.pendingTimers = 0;\n if (__wasiThreads === this) __wasiThreads = null;\n // A failed spawn is reported to the guest as EAGAIN and usually surfaces\n // as its own error message; if the program died without one, say why.\n if (this.spawnError && !result.error && result.exitCode !== 0) result.error = this.spawnError;\n this.settleProcess(result);\n }\n\n // \u2500\u2500 The token \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * One scheduling pass, then hand the token to the head of the run queue.\n *\n * The pass walks the threads in creation order and makes runnable every one\n * whose futex predicate now holds. It runs at every park, yield and exit \u2014\n * the only moments memory can have changed \u2014 which is what makes the\n * level-triggered futex complete and the deadlock verdict exact.\n */\n dispatch() {\n if (this.finished || this.current) return;\n const words = this.words();\n for (const t of this.threads) {\n if (t.state !== 'parked' || t.cond === null) continue;\n if (Atomics.load(words, t.cond.word) !== t.cond.expected) this.makeRunnable(t, __WASI_ESUCCESS);\n }\n const next = this.runQueue.shift();\n if (!next) { this.checkIdle(); return; }\n this.current = next;\n next.state = 'running';\n const go = next.resume;\n next.resume = null;\n // Always a fresh task: a spawned thread's first entry runs wasm\n // synchronously, and doing that from the parking thread's stack would nest\n // one JS frame per context switch.\n queueMicrotask(go);\n }\n\n makeRunnable(t, code) {\n t.state = 'runnable';\n t.cond = null;\n if (t.timer !== null) { clearTimeout(t.timer); t.timer = null; this.pendingTimers--; }\n const settle = t.settlePark;\n t.settlePark = null;\n t.resume = () => settle(code);\n this.runQueue.push(t);\n }\n\n /**\n * Nothing is runnable. Either the process is winding down, or every live\n * thread is blocked on a predicate no thread can ever satisfy \u2014 which is a\n * deadlock, provable rather than suspected, and reported instead of hung.\n */\n checkIdle() {\n if (this.finished || this.current || this.runQueue.length) return;\n if (this.pendingIo > 0 || this.pendingTimers > 0) return;\n const blocked = [];\n for (const t of this.threads) if (t.state === 'parked') blocked.push(t.tid);\n if (!blocked.length) return;\n this.endProcess({\n exitCode: 1,\n error: 'deadlock: every thread is blocked and nothing can wake them (tids '\n + blocked.join(', ') + ')',\n });\n }\n\n // \u2500\u2500 The park set \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * The software futex. Returns 0 when woken, -EAGAIN when the word already\n * moved (the race-free check uses the atomic load, which works \u2014 only\n * Atomics.wait is blocked), and -ETIMEDOUT when a finite deadline expires.\n * Mirrors the return contract of wasi-libc's own\n * `__wasilibc_futex_wait_atomic_wait`, which is what it replaces.\n */\n futexWait(addr, expected, maxWaitNs) {\n if ((addr & 3) !== 0) return -__WASI_EINVAL;\n const words = this.words();\n const word = addr >>> 2;\n if (word >= words.length) return -__WASI_EINVAL;\n if (Atomics.load(words, word) !== expected) return -__WASI_EAGAIN;\n const t = this.current;\n if (!t) {\n throw new Error('nimbus threads: futex_wait called outside a scheduled thread');\n }\n const ns = typeof maxWaitNs === 'bigint' ? maxWaitNs : BigInt(maxWaitNs === undefined ? -1 : maxWaitNs);\n const infinite = ns < 0n;\n const p = new Promise((resolve) => { t.settlePark = resolve; });\n t.state = 'parked';\n t.cond = { word, expected };\n if (!infinite) {\n // Capped at the park deadline: past the measured suspension ceiling a\n // parked promise never settles at all. Expiry INSIDE the cap is a real\n // ETIMEDOUT; expiry AT the cap is reported as a spurious wakeup, which\n // POSIX permits and every correct futex caller already re-checks for.\n const wantMs = Number(ns / 1000000n);\n const waitMs = Math.min(wantMs, __WASI_PARK_DEADLINE_MS);\n const timedOut = waitMs >= wantMs;\n this.pendingTimers++;\n t.timer = setTimeout(() => {\n t.timer = null;\n this.pendingTimers--;\n if (t.state !== 'parked') return;\n this.makeRunnable(t, timedOut ? -__WASI_ETIMEDOUT : __WASI_ESUCCESS);\n this.dispatch();\n }, waitMs);\n }\n this.current = null;\n this.dispatch();\n return p;\n }\n\n /**\n * sched_yield: go to the BACK of the run queue so peers get a turn. This is\n * also the primitive back-edge yield fuel will call once module builds carry\n * it, which is why it is a scheduler operation rather than a WASI detail.\n */\n yieldNow() {\n const t = this.current;\n if (!t || this.finished) return __WASI_ESUCCESS;\n let settle;\n const p = new Promise((resolve) => { settle = resolve; });\n t.state = 'runnable';\n t.resume = () => settle(__WASI_ESUCCESS);\n this.runQueue.push(t);\n this.current = null;\n this.dispatch();\n return p;\n }\n\n /**\n * A blocking WASI import parked the running thread on a host promise. Give\n * the token up while it waits, and take it back \u2014 through the run queue, not\n * ahead of it \u2014 once the host answers.\n *\n * The promise is the one `withParkDeadline` already guarded, so it always\n * settles; an unsettleable park would leave pendingIo raised and suppress\n * the deadlock verdict, which is exactly what that watchdog exists to stop.\n */\n parkIo(promise) {\n const t = this.current;\n if (!t || this.finished) return promise;\n t.state = 'parked';\n t.cond = null;\n this.pendingIo++;\n this.current = null;\n this.dispatch();\n const reacquire = (settle) => {\n this.pendingIo--;\n if (this.finished) return new Promise(() => {}); // the process is over; never resume\n return new Promise((resolve) => {\n t.state = 'runnable';\n t.resume = () => resolve(undefined);\n this.runQueue.push(t);\n this.dispatch();\n }).then(settle);\n };\n return promise.then(\n (v) => reacquire(() => v),\n (e) => reacquire(() => { throw e; }),\n );\n }\n}\n\n/**\n * Create the process scheduler and publish it to the WASI layer, which routes\n * its own parks through it. One facet is one process, so there is one\n * scheduler, held the same way __wasiFS and __wasiSup are.\n */\nfunction __wasiThreadsCreate(opts) {\n __wasiThreads = new __WasiThreadScheduler(opts);\n return __wasiThreads;\n}\n\n/**\n * How a thread comes into existence: one more instance of the module the\n * loader pool compiled at startup, bound to the same imports \u2014 and therefore\n * the same shared memory, the same fd table and the same futex \u2014 entered at\n * the guest's own `wasi_thread_start`, which sets that instance's private\n * __stack_pointer and __tls_base from the start struct.\n *\n * Instantiating an already-compiled module is allowed at request time;\n * COMPILING one is not (\"Wasm code generation disallowed by embedder\"), so\n * nothing here may ever touch bytes.\n *\n * Returns a thunk rather than entering the guest, so a failed instantiation is\n * reported to pthread_create as EAGAIN while the thread body itself starts\n * only when the scheduler hands it the token.\n */\nfunction __wasiThreadsStarter(module, importObject) {\n return function startThread(tid, startArg) {\n const child = new WebAssembly.Instance(module, importObject);\n const entry = child.exports['wasi_thread_start'];\n const promising = WebAssembly.promising(entry);\n return () => promising(tid, startArg);\n };\n}\n\n/**\n * The threaded analogue of __wasiRunStartAsync: _start becomes thread 1 and\n * the scheduler owns the process from there. Same result shape, so callers\n * branch on nothing but which entry point they used.\n */\nfunction __wasiRunStartThreads(instance, sched) {\n const start = instance.exports._start;\n if (typeof start !== 'function') {\n return Promise.resolve({ exitCode: 1, error: '_start is not a function (got ' + typeof start + ')' });\n }\n if (typeof WebAssembly.promising !== 'function' || typeof WebAssembly.Suspending !== 'function') {\n // Loud rather than \"threads that are function calls\": without JSPI a\n // thread cannot be suspended, so the futex could not block and every\n // contended lock would be silently wrong.\n return Promise.resolve({\n exitCode: 1,\n error: 'wasi-threads requires JSPI (WebAssembly.promising / Suspending), which this runtime does not provide',\n });\n }\n return sched.runMain(WebAssembly.promising(start));\n}\n\nglobalThis.__wasiThreadsCreate = __wasiThreadsCreate;\nglobalThis.__wasiThreadsStarter = __wasiThreadsStarter;\nglobalThis.__wasiRunStartThreads = __wasiRunStartThreads;\n// \u2500\u2500 END: wasi-threads preamble \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n";
|
|
169
|
+
//# sourceMappingURL=wasi-threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasi-threads.d.ts","sourceRoot":"","sources":["../../src/runtime/wasi-threads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmHG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;CACtB;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAgErE;AAWD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CA4BzE;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,umhBAyYrC,CAAC"}
|