@ai-ecoverse/slicc-kernel 1.42.0 → 1.42.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.
@@ -2735,11 +2735,13 @@ function vfsPromoter(Fs, sys, streams, livePath) {
2735
2735
  const ranged = stream.node.live?.ranged;
2736
2736
  const version = ranged?.pinnedVersion;
2737
2737
  const pin = ranged && version !== void 0 ? { version, size: ranged.size() } : void 0;
2738
+ const handle = stream.node.live?.handle;
2739
+ const held = { ...pin ? { pin } : {}, ...handle !== void 0 ? { handle } : {} };
2738
2740
  kfd = sys.openVfs(
2739
2741
  livePath(stream),
2740
2742
  stream.flags,
2741
2743
  stream.position,
2742
- contents !== void 0 ? { contents, orphan: true } : pin ? { pin } : void 0
2744
+ contents !== void 0 ? { contents, orphan: true } : Object.keys(held).length > 0 ? held : void 0
2743
2745
  );
2744
2746
  promoted.set(stream.shared, kfd);
2745
2747
  }
@@ -3808,7 +3810,8 @@ function kernelSys(transport) {
3808
3810
  ...opts?.orphan ? { orphan: true } : {},
3809
3811
  ...opts?.truncate ? { truncate: true } : {},
3810
3812
  ...opts?.create ? { create: true } : {},
3811
- ...opts?.pin ? { pin: opts.pin } : {}
3813
+ ...opts?.pin ? { pin: opts.pin } : {},
3814
+ ...opts?.handle !== void 0 ? { handle: opts.handle } : {}
3812
3815
  },
3813
3816
  `fd-open-vfs ${path}`
3814
3817
  )
@@ -3841,6 +3844,9 @@ function kernelSys(transport) {
3841
3844
  heldMeta(fd) {
3842
3845
  return json(call2({ op: "fd-info", fd }, `fd-info ${fd}`)).meta;
3843
3846
  },
3847
+ access(fd) {
3848
+ return json(call2({ op: "fd-info", fd }, `fd-info ${fd}`)).access;
3849
+ },
3844
3850
  size(fd) {
3845
3851
  return json(call2({ op: "fd-vfs-stat", fd }, `fd-vfs-stat ${fd}`)).size;
3846
3852
  },
@@ -3901,8 +3907,7 @@ function wireKernelFd(Fs, streams, entry) {
3901
3907
  });
3902
3908
  }
3903
3909
  function openDevice(Fs, fd, meta) {
3904
- const flags = meta.access === "read" ? O_RDONLY : meta.access === "write" ? O_WRONLY3 : O_RDWR3;
3905
- return openAt(Fs, fd, `/dev/${meta.device}`, flags);
3910
+ return openAt(Fs, fd, `/dev/${meta.device}`, accessMode(meta.access));
3906
3911
  }
3907
3912
  function openHeld(Fs, fd, meta) {
3908
3913
  return "dir" in meta ? openAt(Fs, fd, meta.dir, O_RDONLY | O_DIRECTORY) : openDevice(Fs, fd, meta);
@@ -3928,7 +3933,7 @@ function wireKernelStdio(Fs, streams, sys) {
3928
3933
  const meta = kind === "device" || kind === "held" ? sys?.heldMeta?.(fd) : void 0;
3929
3934
  if (meta && openHeld(Fs, fd, meta)) continue;
3930
3935
  if (kind && PLACED.has(kind)) {
3931
- const { flags } = stream;
3936
+ const flags = sys?.access ? stream.flags & ~O_ACCMODE3 | accessMode(sys.access(fd)) : stream.flags;
3932
3937
  Fs.closeStream(fd);
3933
3938
  const kernel = { fd, kernel: fd, kind, flags };
3934
3939
  placeKernelStream(Fs, streams, kernel).flags = flags;
@@ -4178,7 +4183,7 @@ function runMain(running, init) {
4178
4183
  return status2;
4179
4184
  }
4180
4185
  }
4181
- var FS_OPS, O_RDONLY, O_WRONLY3, O_RDWR3, O_DIRECTORY, PLACED, GLUE_TRAILER, evaluateGlue, EVAL_BLOCKED;
4186
+ var FS_OPS, O_RDONLY, O_WRONLY3, O_RDWR3, O_ACCMODE3, O_DIRECTORY, accessMode, PLACED, GLUE_TRAILER, evaluateGlue, EVAL_BLOCKED;
4182
4187
  var init_process_runtime = __esm({
4183
4188
  "src/process/process-runtime.ts"() {
4184
4189
  "use strict";
@@ -4203,7 +4208,9 @@ var init_process_runtime = __esm({
4203
4208
  O_RDONLY = 0;
4204
4209
  O_WRONLY3 = 1;
4205
4210
  O_RDWR3 = 2;
4211
+ O_ACCMODE3 = 3;
4206
4212
  O_DIRECTORY = 65536;
4213
+ accessMode = (access) => access === "read" ? O_RDONLY : access === "write" ? O_WRONLY3 : O_RDWR3;
4207
4214
  PLACED = /* @__PURE__ */ new Set(["stream", "file", "socket"]);
4208
4215
  GLUE_TRAILER = [
4209
4216
  "if (typeof ENV !== 'undefined') Object.assign(ENV, Module.sliccEnv);",
@@ -4683,7 +4690,8 @@ function promoteRequest(fd, f, handed) {
4683
4690
  ...joins ? {} : { contents: f.buffer.contents() },
4684
4691
  ...orphan ? { orphan: true } : {},
4685
4692
  ...!orphan && f.buffer.pin !== void 0 ? { pin: { version: f.buffer.pin, size: f.buffer.size() } } : {},
4686
- ...!joins && f.buffer.isDirty() ? { dirty: true } : {}
4693
+ ...!joins && f.buffer.isDirty() ? { dirty: true } : {},
4694
+ ...f.buffer.handle !== void 0 ? { handle: f.buffer.handle } : {}
4687
4695
  };
4688
4696
  }
4689
4697
  var SYNTHETIC_DIRS2, O_NONBLOCK2, O_WRONLY4, O_RDWR4, O_APPEND, DEVICES2, WasiFds, GEN;