@ai-ecoverse/slicc-kernel 1.102.6 → 1.103.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +3 -3
  2. package/dist/index.js.map +2 -2
  3. package/dist/kernel-worker.js +118 -29
  4. package/dist/kernel-worker.js.map +4 -4
  5. package/dist/meta.js.map +2 -2
  6. package/dist/node-process-worker.js +29 -44
  7. package/dist/node-process-worker.js.map +3 -3
  8. package/dist/node.js +123 -34
  9. package/dist/node.js.map +4 -4
  10. package/dist/process-worker.js +44 -59
  11. package/dist/process-worker.js.map +3 -3
  12. package/dist/types/body-idle.d.ts +3 -0
  13. package/dist/types/bytes.d.ts +1 -0
  14. package/dist/types/cdp/facade.d.ts +27 -0
  15. package/dist/types/cdp/hosts.d.ts +14 -0
  16. package/dist/types/cdp/port.d.ts +24 -0
  17. package/dist/types/cdp/types.d.ts +12 -0
  18. package/dist/types/cdp/websocket.d.ts +61 -0
  19. package/dist/types/client/attach.d.ts +132 -0
  20. package/dist/types/client/dial-stream.d.ts +23 -0
  21. package/dist/types/client/loopback-fetch.d.ts +5 -0
  22. package/dist/types/client/protocol.d.ts +153 -0
  23. package/dist/types/client/serve-client.d.ts +18 -0
  24. package/dist/types/clipboard-relay.d.ts +25 -0
  25. package/dist/types/commands.d.ts +38 -0
  26. package/dist/types/cron/clock.d.ts +13 -0
  27. package/dist/types/driver.d.ts +3 -0
  28. package/dist/types/facade/hosts.d.ts +12 -0
  29. package/dist/types/facade/port.d.ts +16 -0
  30. package/dist/types/facade/types.d.ts +23 -0
  31. package/dist/types/fs/access.d.ts +29 -0
  32. package/dist/types/fs/attest.d.ts +41 -0
  33. package/dist/types/fs/changes.d.ts +19 -0
  34. package/dist/types/fs/commands.d.ts +4 -0
  35. package/dist/types/fs/dac.d.ts +64 -0
  36. package/dist/types/fs/dev-removal.d.ts +9 -0
  37. package/dist/types/fs/fresh-modules.d.ts +9 -0
  38. package/dist/types/fs/integrity.d.ts +53 -0
  39. package/dist/types/fs/meta.d.ts +86 -0
  40. package/dist/types/fs/opfs.d.ts +141 -0
  41. package/dist/types/fs/owners.d.ts +17 -0
  42. package/dist/types/fs/pages.d.ts +41 -0
  43. package/dist/types/fs/path-map.d.ts +16 -0
  44. package/dist/types/fs/physical-path.d.ts +14 -0
  45. package/dist/types/fs/protect.d.ts +27 -0
  46. package/dist/types/fs/ranged.d.ts +73 -0
  47. package/dist/types/fs/remote.d.ts +45 -0
  48. package/dist/types/fs/types.d.ts +117 -0
  49. package/dist/types/fs/unlinked.d.ts +75 -0
  50. package/dist/types/fs/view.d.ts +1 -0
  51. package/dist/types/fs/walk.d.ts +12 -0
  52. package/dist/types/fs/watch.d.ts +23 -0
  53. package/dist/types/index.d.ts +159 -0
  54. package/dist/types/integrity-relay.d.ts +18 -0
  55. package/dist/types/kernel/children.d.ts +90 -0
  56. package/dist/types/kernel/clipboard.d.ts +49 -0
  57. package/dist/types/kernel/cpu-clock.d.ts +56 -0
  58. package/dist/types/kernel/cred.d.ts +17 -0
  59. package/dist/types/kernel/dgram.d.ts +56 -0
  60. package/dist/types/kernel/dial.d.ts +20 -0
  61. package/dist/types/kernel/epoll.d.ts +67 -0
  62. package/dist/types/kernel/eventfd.d.ts +19 -0
  63. package/dist/types/kernel/exec-ticket.d.ts +25 -0
  64. package/dist/types/kernel/fd-table.d.ts +107 -0
  65. package/dist/types/kernel/host-ops.d.ts +98 -0
  66. package/dist/types/kernel/host.d.ts +116 -0
  67. package/dist/types/kernel/jobs.d.ts +50 -0
  68. package/dist/types/kernel/locks.d.ts +40 -0
  69. package/dist/types/kernel/net/datagram-wire.d.ts +8 -0
  70. package/dist/types/kernel/net/http-syscalls.d.ts +58 -0
  71. package/dist/types/kernel/net/http1.d.ts +48 -0
  72. package/dist/types/kernel/net/loopback-names.d.ts +14 -0
  73. package/dist/types/kernel/net/loopback-transport.d.ts +13 -0
  74. package/dist/types/kernel/net/network.d.ts +29 -0
  75. package/dist/types/kernel/net/proxy-service.d.ts +70 -0
  76. package/dist/types/kernel/net/realm-ca.d.ts +28 -0
  77. package/dist/types/kernel/net/redirect-hops.d.ts +5 -0
  78. package/dist/types/kernel/net/remote-transport.d.ts +98 -0
  79. package/dist/types/kernel/net/resolver.d.ts +29 -0
  80. package/dist/types/kernel/net/routes.d.ts +15 -0
  81. package/dist/types/kernel/net/tls-engine.d.ts +46 -0
  82. package/dist/types/kernel/net/tls-tunnel.d.ts +35 -0
  83. package/dist/types/kernel/net/transport.d.ts +64 -0
  84. package/dist/types/kernel/net/uplink-socket.d.ts +11 -0
  85. package/dist/types/kernel/net/uplink.d.ts +163 -0
  86. package/dist/types/kernel/net/ws-queue.d.ts +21 -0
  87. package/dist/types/kernel/net/ws-syscalls.d.ts +45 -0
  88. package/dist/types/kernel/net/x509.d.ts +34 -0
  89. package/dist/types/kernel/pipe.d.ts +29 -0
  90. package/dist/types/kernel/proc-info.d.ts +44 -0
  91. package/dist/types/kernel/process.d.ts +525 -0
  92. package/dist/types/kernel/protocol.d.ts +126 -0
  93. package/dist/types/kernel/pty.d.ts +84 -0
  94. package/dist/types/kernel/run-child.d.ts +39 -0
  95. package/dist/types/kernel/scrub-file.d.ts +13 -0
  96. package/dist/types/kernel/sealed.d.ts +74 -0
  97. package/dist/types/kernel/select.d.ts +7 -0
  98. package/dist/types/kernel/sem.d.ts +72 -0
  99. package/dist/types/kernel/settling.d.ts +16 -0
  100. package/dist/types/kernel/signals.d.ts +44 -0
  101. package/dist/types/kernel/socket-nodes.d.ts +20 -0
  102. package/dist/types/kernel/socket-syscalls.d.ts +76 -0
  103. package/dist/types/kernel/socket.d.ts +131 -0
  104. package/dist/types/kernel/timer.d.ts +4 -0
  105. package/dist/types/kernel/tty.d.ts +53 -0
  106. package/dist/types/kernel/vfs-file.d.ts +149 -0
  107. package/dist/types/launcher.d.ts +359 -0
  108. package/dist/types/local-proxy-transport.d.ts +39 -0
  109. package/dist/types/meta.d.ts +11 -0
  110. package/dist/types/mount/chunked.d.ts +9 -0
  111. package/dist/types/mount/connection.d.ts +35 -0
  112. package/dist/types/mount/driver.d.ts +50 -0
  113. package/dist/types/mount/fsa.d.ts +26 -0
  114. package/dist/types/mount/fstab.d.ts +17 -0
  115. package/dist/types/mount/host.d.ts +24 -0
  116. package/dist/types/mount/hostfs.d.ts +129 -0
  117. package/dist/types/mount/media.d.ts +8 -0
  118. package/dist/types/mount/medium.d.ts +12 -0
  119. package/dist/types/mount/mount-fs.d.ts +136 -0
  120. package/dist/types/mount/protocol.d.ts +140 -0
  121. package/dist/types/mount/syscall.d.ts +27 -0
  122. package/dist/types/mount/tmpfs.d.ts +2 -0
  123. package/dist/types/node/loopback.d.ts +11 -0
  124. package/dist/types/node/memory-root.d.ts +2 -0
  125. package/dist/types/node/ws-diagnose.d.ts +4 -0
  126. package/dist/types/node.d.ts +85 -0
  127. package/dist/types/process/fd-metadata.d.ts +4 -0
  128. package/dist/types/process/js/async-sab.d.ts +15 -0
  129. package/dist/types/process/js/js-children.d.ts +63 -0
  130. package/dist/types/process/js/js-context.d.ts +133 -0
  131. package/dist/types/process/js/js-dev.d.ts +50 -0
  132. package/dist/types/process/js/js-exit.d.ts +15 -0
  133. package/dist/types/process/js/js-fetch.d.ts +2 -0
  134. package/dist/types/process/js/js-io.d.ts +81 -0
  135. package/dist/types/process/js/js-kernel.d.ts +61 -0
  136. package/dist/types/process/js/js-net.d.ts +42 -0
  137. package/dist/types/process/js/js-proc.d.ts +31 -0
  138. package/dist/types/process/js/js-run.d.ts +35 -0
  139. package/dist/types/process/js/js-sync.d.ts +86 -0
  140. package/dist/types/process/js/js-tty.d.ts +30 -0
  141. package/dist/types/process/js/js-websocket.d.ts +21 -0
  142. package/dist/types/process/kernel-streams.d.ts +196 -0
  143. package/dist/types/process/process-fds.d.ts +95 -0
  144. package/dist/types/process/process-locks.d.ts +29 -0
  145. package/dist/types/process/process-pty.d.ts +20 -0
  146. package/dist/types/process/process-signals.d.ts +33 -0
  147. package/dist/types/process/procfs.d.ts +41 -0
  148. package/dist/types/process/wasi/dylink.d.ts +9 -0
  149. package/dist/types/process/wasi/slicc-lock.d.ts +26 -0
  150. package/dist/types/process/wasi/slicc-sem.d.ts +3 -0
  151. package/dist/types/process/wasi/wasi-abi.d.ts +156 -0
  152. package/dist/types/process/wasi/wasi-fds.d.ts +130 -0
  153. package/dist/types/process/wasi/wasi-files.d.ts +99 -0
  154. package/dist/types/process/wasi/wasi-host.d.ts +104 -0
  155. package/dist/types/process/wasi/wasi-memory.d.ts +16 -0
  156. package/dist/types/process/wasi/wasi-module.d.ts +13 -0
  157. package/dist/types/process/wasi/wasi-poll.d.ts +13 -0
  158. package/dist/types/process/wasi/wasi-procfs.d.ts +36 -0
  159. package/dist/types/process/wasi/wasi-sigmask.d.ts +19 -0
  160. package/dist/types/process/wasi/wasi-signals.d.ts +43 -0
  161. package/dist/types/process/wasi/wasi-termios.d.ts +10 -0
  162. package/dist/types/process/wasi/wasix-fork.d.ts +63 -0
  163. package/dist/types/process/wasi/wasix-linker.d.ts +108 -0
  164. package/dist/types/process/wasi/wasix-sockets.d.ts +9 -0
  165. package/dist/types/process/wasi/wasix-trampoline.d.ts +18 -0
  166. package/dist/types/process/wasi/wasm-functypes.d.ts +25 -0
  167. package/dist/types/process/wasi-errno.d.ts +1 -0
  168. package/dist/types/realm/emscripten-vfs-hook.d.ts +19 -0
  169. package/dist/types/realm/live-vfs-fs.d.ts +186 -0
  170. package/dist/types/realm/sync-fs-dispatch.d.ts +27 -0
  171. package/dist/types/realm/sync-fs-token-registry.d.ts +36 -0
  172. package/dist/types/realm/sync-fs-wire.d.ts +119 -0
  173. package/dist/types/realm/sync-sab-bridge.d.ts +21 -0
  174. package/dist/types/realm/sync-sab-responder.d.ts +16 -0
  175. package/dist/types/realm/sync-sab-wire.d.ts +64 -0
  176. package/dist/types/sealed-relay.d.ts +26 -0
  177. package/dist/types/serve.d.ts +190 -0
  178. package/dist/types/sudo-command.d.ts +4 -0
  179. package/dist/types/sudo.d.ts +105 -0
  180. package/dist/types/testing.d.ts +46 -0
  181. package/dist/types/transport.d.ts +25 -0
  182. package/dist/types/users.d.ts +86 -0
  183. package/dist/types/version.d.ts +3 -0
  184. package/dist/types/websocket-transport.d.ts +12 -0
  185. package/package.json +24 -8
@@ -941,6 +941,7 @@ function parseSyncFsStat(json2) {
941
941
  isFile: s.isFile,
942
942
  isDirectory: s.isDirectory,
943
943
  isSymbolicLink: s.isSymbolicLink,
944
+ ...s.isSocket === true ? { isSocket: true } : {},
944
945
  size: s.size,
945
946
  ...typeof s.mode === "number" ? { mode: s.mode } : {},
946
947
  ...typeof s.mtimeMs === "number" ? { mtimeMs: s.mtimeMs } : {},
@@ -1316,7 +1317,7 @@ function exactIn(node) {
1316
1317
  return node?.mount.opts.bridge.owners === true;
1317
1318
  }
1318
1319
  function modeFromStat(st, exact = false) {
1319
- const type = st.isSymbolicLink ? S_IFLNK : st.isDirectory ? S_IFDIR : S_IFREG;
1320
+ const type = st.isSymbolicLink ? S_IFLNK : st.isDirectory ? S_IFDIR : st.isSocket ? S_IFSOCK : S_IFREG;
1320
1321
  const fallback = st.isDirectory || st.isSymbolicLink ? 511 : 438;
1321
1322
  const perm = (st.mode ?? fallback) & PERM_MASK;
1322
1323
  return type | (exact ? perm : perm || fallback);
@@ -1862,6 +1863,10 @@ function createStreamOps(h) {
1862
1863
  return want;
1863
1864
  };
1864
1865
  const directory = (stream) => {
1866
+ if ((stream.node.mode & S_IFMT) === S_IFSOCK && !(stream.flags & O_PATH)) {
1867
+ if (stream.fd !== void 0) Fs.closeStream?.(stream.fd);
1868
+ throw new Fs.ErrnoError(wasiErrno("ENXIO"));
1869
+ }
1865
1870
  const bridge = bridgeOf(stream.node);
1866
1871
  if (!bridge.owners || !Fs.isDir(stream.node.mode) || stream.flags & O_PATH) return;
1867
1872
  try {
@@ -2339,7 +2344,7 @@ function readingLinks(Fs) {
2339
2344
  }
2340
2345
  };
2341
2346
  }
2342
- var S_IFDIR, S_IFREG, S_IFLNK, PERM_MASK, DEFAULT_DIR_PERM, UMASK, SEEK_CUR, SEEK_END, EARLY_WHOLE_FILE, O_APPEND, O_ACCMODE, O_TRUNC, O_PATH, stale, opening;
2347
+ var S_IFDIR, S_IFREG, S_IFLNK, S_IFSOCK, S_IFMT, PERM_MASK, DEFAULT_DIR_PERM, UMASK, SEEK_CUR, SEEK_END, EARLY_WHOLE_FILE, O_APPEND, O_ACCMODE, O_TRUNC, O_PATH, stale, opening;
2343
2348
  var init_live_vfs_fs = __esm({
2344
2349
  "src/realm/live-vfs-fs.ts"() {
2345
2350
  "use strict";
@@ -2352,6 +2357,8 @@ var init_live_vfs_fs = __esm({
2352
2357
  S_IFDIR = 16384;
2353
2358
  S_IFREG = 32768;
2354
2359
  S_IFLNK = 40960;
2360
+ S_IFSOCK = 49152;
2361
+ S_IFMT = 61440;
2355
2362
  PERM_MASK = 4095;
2356
2363
  DEFAULT_DIR_PERM = 493;
2357
2364
  UMASK = 18;
@@ -2484,7 +2491,7 @@ var KERNEL_VERSION, OS_RELEASE;
2484
2491
  var init_version = __esm({
2485
2492
  "src/version.ts"() {
2486
2493
  "use strict";
2487
- KERNEL_VERSION = true ? "1.102.6" : "0.0.0-dev";
2494
+ KERNEL_VERSION = true ? "1.103.1" : "0.0.0-dev";
2488
2495
  OS_RELEASE = "6.0.0-slicc";
2489
2496
  }
2490
2497
  });
@@ -4051,13 +4058,13 @@ var init_kernel_streams = __esm({
4051
4058
  const name2 = path.slice(path.lastIndexOf("/") + 1);
4052
4059
  if (!TTY_NAME.test(name2)) return void 0;
4053
4060
  const { lookupPath, cwd } = this.Fs;
4054
- const absolute = path.startsWith("/") ? path : `${cwd?.call(this.Fs) ?? "/"}/${path}`;
4055
- const dir = absolute.slice(0, absolute.lastIndexOf("/")) || "/";
4061
+ const absolute2 = path.startsWith("/") ? path : `${cwd?.call(this.Fs) ?? "/"}/${path}`;
4062
+ const dir = absolute2.slice(0, absolute2.lastIndexOf("/")) || "/";
4056
4063
  try {
4057
4064
  const real = lookupPath?.call(this.Fs, dir, { follow: true }).path ?? dir;
4058
4065
  return `${real === "/" ? "" : real}/${name2}`;
4059
4066
  } catch {
4060
- return absolute;
4067
+ return absolute2;
4061
4068
  }
4062
4069
  }
4063
4070
  terminalExists(path) {
@@ -4497,7 +4504,7 @@ function createProcessKernel(deps) {
4497
4504
  if (!stream) return { none: true };
4498
4505
  promote?.(stream);
4499
4506
  if (stream.sliccKernelFd !== void 0) return { fd: stream.sliccKernelFd };
4500
- if (((stream.node?.mode ?? 0) & S_IFMT) === S_IFDIR2 && stream.path) return { dir: stream.path };
4507
+ if (((stream.node?.mode ?? 0) & S_IFMT2) === S_IFDIR2 && stream.path) return { dir: stream.path };
4501
4508
  const device2 = deviceOfStream(stream);
4502
4509
  if (device2) return device2;
4503
4510
  return n === 0 ? { input: drain(Fs, stream) } : { capture: true };
@@ -4644,14 +4651,14 @@ function createProcessKernel(deps) {
4644
4651
  }
4645
4652
  };
4646
4653
  }
4647
- var S_IFMT, S_IFDIR2, POLLIN2, POLLOUT2, POLLERR2, POLLHUP2, POLLNVAL, SELECT_SLICE_MS, WUNTRACED, WCONTINUED;
4654
+ var S_IFMT2, S_IFDIR2, POLLIN2, POLLOUT2, POLLERR2, POLLHUP2, POLLNVAL, SELECT_SLICE_MS, WUNTRACED, WCONTINUED;
4648
4655
  var init_process_children = __esm({
4649
4656
  "src/process/process-children.ts"() {
4650
4657
  "use strict";
4651
4658
  init_signals();
4652
4659
  init_process_fork();
4653
4660
  init_wasi_errno();
4654
- S_IFMT = 61440;
4661
+ S_IFMT2 = 61440;
4655
4662
  S_IFDIR2 = 16384;
4656
4663
  POLLIN2 = 1;
4657
4664
  POLLOUT2 = 4;
@@ -4818,22 +4825,6 @@ function resolved(Fs, addr) {
4818
4825
  const path = addr.path.startsWith("/") ? addr.path : `${Fs.cwd()}/${addr.path}`;
4819
4826
  return { family: "unix", path: normalizePath(path) };
4820
4827
  }
4821
- function socketNode(Fs, addr) {
4822
- if (addr.family !== "unix" || !addr.path || addr.path.startsWith("\0")) return void 0;
4823
- const fs = Fs;
4824
- let stream;
4825
- try {
4826
- stream = Fs.open(addr.path, O_WRONLY3 | O_CREAT4 | O_EXCL3, 493);
4827
- } catch (e) {
4828
- if (e?.errno === wasiErrno("EEXIST")) {
4829
- throw new SyscallError("EADDRINUSE");
4830
- }
4831
- throw e;
4832
- }
4833
- if (Fs.close) Fs.close(stream);
4834
- else Fs.closeStream(stream.fd);
4835
- return { remove: () => fs.unlink?.(addr.path) };
4836
- }
4837
4828
  function createSocketKernel(deps) {
4838
4829
  const { transport, Fs, sys, streams } = deps;
4839
4830
  const call2 = (req) => {
@@ -4900,16 +4891,7 @@ function createSocketKernel(deps) {
4900
4891
  throw e;
4901
4892
  }
4902
4893
  }),
4903
- bind: (fd, given) => guard(() => {
4904
- const addr = resolved(Fs, given);
4905
- const node = socketNode(Fs, addr);
4906
- try {
4907
- return done({ op: "sock-bind", fd: kfd(fd), addr });
4908
- } catch (e) {
4909
- node?.remove();
4910
- throw e;
4911
- }
4912
- }),
4894
+ bind: (fd, given) => guard(() => done({ op: "sock-bind", fd: kfd(fd), addr: resolved(Fs, given) })),
4913
4895
  listen: (fd, backlog) => guard(() => done({ op: "sock-listen", fd: kfd(fd), backlog })),
4914
4896
  accept: (fd, nonblock, cloexec) => guard(() => {
4915
4897
  const listener = socketAt(fd);
@@ -4955,7 +4937,7 @@ function createSocketKernel(deps) {
4955
4937
  })
4956
4938
  };
4957
4939
  }
4958
- var O_RDWR2, KILLED_BY_SIGPIPE2, O_WRONLY3, O_CREAT4, O_EXCL3;
4940
+ var O_RDWR2, KILLED_BY_SIGPIPE2;
4959
4941
  var init_process_sockets = __esm({
4960
4942
  "src/process/process-sockets.ts"() {
4961
4943
  "use strict";
@@ -4965,9 +4947,6 @@ var init_process_sockets = __esm({
4965
4947
  init_wasi_errno();
4966
4948
  O_RDWR2 = 2;
4967
4949
  KILLED_BY_SIGPIPE2 = 128 + 13;
4968
- O_WRONLY3 = 1;
4969
- O_CREAT4 = 64;
4970
- O_EXCL3 = 128;
4971
4950
  }
4972
4951
  });
4973
4952
 
@@ -5956,7 +5935,7 @@ function runMain(running, init) {
5956
5935
  return status2;
5957
5936
  }
5958
5937
  }
5959
- var FS_OPS, O_RDONLY2, O_WRONLY4, O_RDWR3, O_ACCMODE5, O_DIRECTORY2, accessMode, PLACED, GLUE_TRAILER, evaluateGlue, EVAL_BLOCKED;
5938
+ var FS_OPS, O_RDONLY2, O_WRONLY3, O_RDWR3, O_ACCMODE5, O_DIRECTORY2, accessMode, PLACED, GLUE_TRAILER, evaluateGlue, EVAL_BLOCKED;
5960
5939
  var init_process_runtime = __esm({
5961
5940
  "src/process/process-runtime.ts"() {
5962
5941
  "use strict";
@@ -5980,11 +5959,11 @@ var init_process_runtime = __esm({
5980
5959
  init_kernel_streams();
5981
5960
  FS_OPS = new Set(SYNC_FS_OPS);
5982
5961
  O_RDONLY2 = 0;
5983
- O_WRONLY4 = 1;
5962
+ O_WRONLY3 = 1;
5984
5963
  O_RDWR3 = 2;
5985
5964
  O_ACCMODE5 = 3;
5986
5965
  O_DIRECTORY2 = 65536;
5987
- accessMode = (access) => access === "read" ? O_RDONLY2 : access === "write" ? O_WRONLY4 : O_RDWR3;
5966
+ accessMode = (access) => access === "read" ? O_RDONLY2 : access === "write" ? O_WRONLY3 : O_RDWR3;
5988
5967
  PLACED = /* @__PURE__ */ new Set(["stream", "file", "socket", "clipboard", "sealed"]);
5989
5968
  GLUE_TRAILER = [
5990
5969
  "if (typeof ENV !== 'undefined') Object.assign(ENV, Module.sliccEnv);",
@@ -6944,7 +6923,7 @@ function promoteRequest(fd, f, handed) {
6944
6923
  op: "fd-promote",
6945
6924
  fd,
6946
6925
  path: f.path,
6947
- flags: (f.writable ? f.readable ? O_RDWR4 : O_WRONLY5 : 0) | (f.append ? O_APPEND2 : 0),
6926
+ flags: (f.writable ? f.readable ? O_RDWR4 : O_WRONLY4 : 0) | (f.append ? O_APPEND2 : 0),
6948
6927
  position: f.offset,
6949
6928
  ...joins ? {} : { contents: f.buffer.contents() },
6950
6929
  ...orphan ? { orphan: true } : {},
@@ -6953,7 +6932,7 @@ function promoteRequest(fd, f, handed) {
6953
6932
  ...f.buffer.handle !== void 0 ? { handle: f.buffer.handle } : {}
6954
6933
  };
6955
6934
  }
6956
- var SYNTHETIC_DIRS2, O_NONBLOCK2, O_WRONLY5, O_RDWR4, O_APPEND2, SEALED_PATH2, CLIPBOARD_PATH2, WasiFds, GEN2;
6935
+ var SYNTHETIC_DIRS2, O_NONBLOCK2, O_WRONLY4, O_RDWR4, O_APPEND2, SEALED_PATH2, CLIPBOARD_PATH2, WasiFds, GEN2;
6957
6936
  var init_wasi_fds = __esm({
6958
6937
  "src/process/wasi/wasi-fds.ts"() {
6959
6938
  "use strict";
@@ -6964,7 +6943,7 @@ var init_wasi_fds = __esm({
6964
6943
  init_wasi_files();
6965
6944
  SYNTHETIC_DIRS2 = ["usr", "bin"];
6966
6945
  O_NONBLOCK2 = 2048;
6967
- O_WRONLY5 = 1;
6946
+ O_WRONLY4 = 1;
6968
6947
  O_RDWR4 = 2;
6969
6948
  O_APPEND2 = 1024;
6970
6949
  SEALED_PATH2 = "/dev/sealed";
@@ -7500,7 +7479,7 @@ var init_wasi_fds = __esm({
7500
7479
  if (oflags & OFLAGS.DIRECTORY) throw new WasiError("ENOTDIR");
7501
7480
  if (oflags & OFLAGS.CREAT && oflags & OFLAGS.EXCL) throw new WasiError("EEXIST");
7502
7481
  const want = wantOf2(oflags, rights);
7503
- const flags = want === 6 ? O_RDWR4 : want === 2 ? O_WRONLY5 : 0;
7482
+ const flags = want === 6 ? O_RDWR4 : want === 2 ? O_WRONLY4 : 0;
7504
7483
  return openDevice2.call(this.kernel.sys, flags);
7505
7484
  }
7506
7485
  open(path, oflags, rights, fdflags) {
@@ -7604,7 +7583,7 @@ var init_wasi_fds = __esm({
7604
7583
  kernelFile(path, existing, oflags, rights, fdflags) {
7605
7584
  const { readable: readable3, writable: writable2 } = openAccess(existing, oflags, rights);
7606
7585
  const append = (fdflags & FDFLAGS.APPEND) !== 0;
7607
- const flags = (writable2 ? readable3 ? O_RDWR4 : O_WRONLY5 : 0) | (append ? O_APPEND2 : 0);
7586
+ const flags = (writable2 ? readable3 ? O_RDWR4 : O_WRONLY4 : 0) | (append ? O_APPEND2 : 0);
7608
7587
  const made = !existing && this.createNew(path, oflags);
7609
7588
  const truncate = made || (oflags & OFLAGS.TRUNC) !== 0;
7610
7589
  const fd = this.kernel.sys.openVfs(path, flags, 0, {
@@ -8087,6 +8066,10 @@ function openRequest(af, type) {
8087
8066
  ...type === DGRAM ? { type: "dgram" } : {}
8088
8067
  };
8089
8068
  }
8069
+ function absolute(cwd, addr) {
8070
+ if (addr.family !== "unix" || addr.path === "" || addr.path.startsWith("\0")) return addr;
8071
+ return addr.path.startsWith("/") ? addr : { family: "unix", path: `${cwd}/${addr.path}` };
8072
+ }
8090
8073
  function optionalAddr(view, ptr) {
8091
8074
  if (ptr === 0 || view.getUint8(ptr) === 0) return void 0;
8092
8075
  return readAddr(view, ptr);
@@ -8155,7 +8138,7 @@ function wasixSocketImports(host, preview1) {
8155
8138
  },
8156
8139
  sock_bind: (fd, addr) => {
8157
8140
  socket(fd);
8158
- call2({ op: "sock-bind", fd, addr: readAddr(mem.view(), addr) });
8141
+ call2({ op: "sock-bind", fd, addr: absolute(host.cwd, readAddr(mem.view(), addr)) });
8159
8142
  },
8160
8143
  sock_listen: (fd, backlog) => {
8161
8144
  socket(fd);
@@ -8163,7 +8146,8 @@ function wasixSocketImports(host, preview1) {
8163
8146
  },
8164
8147
  sock_connect: (fd, addr) => {
8165
8148
  const e = socket(fd);
8166
- call2({ op: "sock-connect", fd, addr: readAddr(mem.view(), addr), nonblock: e.nonblock });
8149
+ const to = absolute(host.cwd, readAddr(mem.view(), addr));
8150
+ call2({ op: "sock-connect", fd, addr: to, nonblock: e.nonblock });
8167
8151
  },
8168
8152
  sock_accept_v2: (fd, flags, outFd, outAddr) => {
8169
8153
  const e = socket(fd);
@@ -8309,6 +8293,7 @@ function filetypeOf(s) {
8309
8293
  if (!s) return FILETYPE.UNKNOWN;
8310
8294
  if (s.isSymbolicLink) return FILETYPE.SYMBOLIC_LINK;
8311
8295
  if (s.isDirectory) return FILETYPE.DIRECTORY;
8296
+ if (s.isSocket) return FILETYPE.SOCKET_STREAM;
8312
8297
  return s.isFile ? FILETYPE.REGULAR_FILE : FILETYPE.UNKNOWN;
8313
8298
  }
8314
8299
  function filestatOf(path, s) {
@@ -9376,14 +9361,14 @@ function restarted2(issue) {
9376
9361
  function resolveFrom(cwd, path) {
9377
9362
  return normalize(path.startsWith("/") ? path : `${cwd}/${path}`);
9378
9363
  }
9379
- var O_WRONLY6, O_RDWR5, O_APPEND3, OFLAG_CREAT, OFLAG_TRUNC, JOIN_NON_BLOCKING, JOIN_WAKE_STOPPED, JOIN_STOPPED, WasixProcess;
9364
+ var O_WRONLY5, O_RDWR5, O_APPEND3, OFLAG_CREAT, OFLAG_TRUNC, JOIN_NON_BLOCKING, JOIN_WAKE_STOPPED, JOIN_STOPPED, WasixProcess;
9380
9365
  var init_wasix_process = __esm({
9381
9366
  "src/process/wasi/wasix-process.ts"() {
9382
9367
  "use strict";
9383
9368
  init_physical_path();
9384
9369
  init_wasi_files();
9385
9370
  init_wasi_host();
9386
- O_WRONLY6 = 1;
9371
+ O_WRONLY5 = 1;
9387
9372
  O_RDWR5 = 2;
9388
9373
  O_APPEND3 = 1024;
9389
9374
  OFLAG_CREAT = 1;
@@ -9485,7 +9470,7 @@ var init_wasix_process = __esm({
9485
9470
  throw Object.assign(new Error("ENOENT"), { code: "ENOENT" });
9486
9471
  }
9487
9472
  const flags = (op.rightsWrite ? O_RDWR5 : 0) | (op.append ? O_APPEND3 : 0);
9488
- return this.host.o.kernel.sys.openVfs(path, op.rightsWrite ? flags || O_WRONLY6 : 0, 0, {
9473
+ return this.host.o.kernel.sys.openVfs(path, op.rightsWrite ? flags || O_WRONLY5 : 0, 0, {
9489
9474
  ...create ? { create } : {},
9490
9475
  ...op.oflags & OFLAG_TRUNC ? { truncate: true } : {}
9491
9476
  });
@@ -13395,7 +13380,7 @@ function checkOpen(abs, o, existing) {
13395
13380
  }
13396
13381
  function flagsOf(o) {
13397
13382
  const write2 = o.write || o.append || o.truncate;
13398
- const access = write2 ? o.read ? O_RDWR6 : O_WRONLY7 : 0;
13383
+ const access = write2 ? o.read ? O_RDWR6 : O_WRONLY6 : 0;
13399
13384
  return access | (o.append ? O_APPEND4 : 0);
13400
13385
  }
13401
13386
  function openRequest2(abs, o) {
@@ -13412,7 +13397,7 @@ function openRequest2(abs, o) {
13412
13397
  function index2(n, what) {
13413
13398
  if (!Number.isSafeInteger(n) || n < 0) throw new JsCallError("EINVAL", what);
13414
13399
  }
13415
- var CHUNK, MAX_IO, O_WRONLY7, O_RDWR6, O_APPEND4, BLOCK;
13400
+ var CHUNK, MAX_IO, O_WRONLY6, O_RDWR6, O_APPEND4, BLOCK;
13416
13401
  var init_js_io = __esm({
13417
13402
  "src/process/js/js-io.ts"() {
13418
13403
  "use strict";
@@ -13420,7 +13405,7 @@ var init_js_io = __esm({
13420
13405
  init_js_kernel();
13421
13406
  CHUNK = 64 * 1024;
13422
13407
  MAX_IO = 1024 * 1024;
13423
- O_WRONLY7 = 1;
13408
+ O_WRONLY6 = 1;
13424
13409
  O_RDWR6 = 2;
13425
13410
  O_APPEND4 = 1024;
13426
13411
  BLOCK = 4096;
@@ -13437,8 +13422,8 @@ function missing(path) {
13437
13422
  function nodeStat(mode, size = 0, owner) {
13438
13423
  return {
13439
13424
  isFile: false,
13440
- isDirectory: (mode & S_IFMT2) === DIR,
13441
- isSymbolicLink: (mode & S_IFMT2) === LINK,
13425
+ isDirectory: (mode & S_IFMT3) === DIR,
13426
+ isSymbolicLink: (mode & S_IFMT3) === LINK,
13442
13427
  size,
13443
13428
  mode,
13444
13429
  mtimeMs: BORN,
@@ -13777,7 +13762,7 @@ function readWholeSync(file) {
13777
13762
  file.close();
13778
13763
  }
13779
13764
  }
13780
- var DEV_READ_MAX, DEVICES2, STDIO3, SELF_FD, S_IFMT2, DIR, LINK, CHAR, BORN, CHAR_KINDS;
13765
+ var DEV_READ_MAX, DEVICES2, STDIO3, SELF_FD, S_IFMT3, DIR, LINK, CHAR, BORN, CHAR_KINDS;
13781
13766
  var init_js_dev = __esm({
13782
13767
  "src/process/js/js-dev.ts"() {
13783
13768
  "use strict";
@@ -13789,7 +13774,7 @@ var init_js_dev = __esm({
13789
13774
  DEVICES2 = ["null", "zero", "full", "random", "urandom"];
13790
13775
  STDIO3 = ["stdin", "stdout", "stderr"];
13791
13776
  SELF_FD = "/proc/self/fd";
13792
- S_IFMT2 = 61440;
13777
+ S_IFMT3 = 61440;
13793
13778
  DIR = 16384;
13794
13779
  LINK = 40960;
13795
13780
  CHAR = 8192;