@ai-ecoverse/slicc-kernel 1.152.2 → 1.153.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.
@@ -2964,7 +2964,7 @@ var KERNEL_VERSION, OS_RELEASE;
2964
2964
  var init_version = __esm({
2965
2965
  "src/version.ts"() {
2966
2966
  "use strict";
2967
- KERNEL_VERSION = true ? "1.152.2" : "0.0.0-dev";
2967
+ KERNEL_VERSION = true ? "1.153.0" : "0.0.0-dev";
2968
2968
  OS_RELEASE = "6.0.0-slicc";
2969
2969
  }
2970
2970
  });
@@ -4172,7 +4172,7 @@ function sealedStat(minor = 250) {
4172
4172
  const now = /* @__PURE__ */ new Date();
4173
4173
  return {
4174
4174
  dev: 22,
4175
- ino: minor === 251 ? 2 : 1,
4175
+ ino: DEVICE_INO[minor],
4176
4176
  mode: 8630,
4177
4177
  nlink: 1,
4178
4178
  uid: 0,
@@ -4196,7 +4196,7 @@ function datesOf(real) {
4196
4196
  dates[key] = new Date(value2);
4197
4197
  return dates;
4198
4198
  }
4199
- var POLLIN, POLLOUT, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, TCSETSF, O_NONBLOCK, SOCKET_MODE, PTY_PATH, TTY_PATH, PTS_MAJOR, TTY_NAME, SEALED_PATH, STRERROR, CLIPBOARD_PATH, O_CREAT2, O_EXCL2, O_NOCTTY, O_TRUNC3, O_DIRECTORY, KILLED_BY_SIGPIPE, ProcessExit, SyscallError, KernelStreams;
4199
+ var POLLIN, POLLOUT, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, TCSETSF, O_NONBLOCK, SOCKET_MODE, PTY_PATH, TTY_PATH, PTS_MAJOR, TTY_NAME, SEALED_PATH, STRERROR, CLIPBOARD_PATH, EMBEDDER_PATH, DEVICE_INO, O_CREAT2, O_EXCL2, O_NOCTTY, O_TRUNC3, O_DIRECTORY, KILLED_BY_SIGPIPE, ProcessExit, SyscallError, KernelStreams;
4200
4200
  var init_kernel_streams = __esm({
4201
4201
  "src/process/kernel-streams.ts"() {
4202
4202
  "use strict";
@@ -4226,6 +4226,8 @@ var init_kernel_streams = __esm({
4226
4226
  EINTR: "Interrupted system call"
4227
4227
  };
4228
4228
  CLIPBOARD_PATH = "/dev/clipboard";
4229
+ EMBEDDER_PATH = "/dev/embedder";
4230
+ DEVICE_INO = { 250: 1, 251: 2, 252: 3 };
4229
4231
  O_CREAT2 = 64;
4230
4232
  O_EXCL2 = 128;
4231
4233
  O_NOCTTY = 256;
@@ -4308,7 +4310,7 @@ var init_kernel_streams = __esm({
4308
4310
  stream.stream_ops = { ...stream.stream_ops, getattr: () => this.Fs.stat?.(name2) ?? {} };
4309
4311
  }
4310
4312
  nameDevice(stream, kind) {
4311
- this.nameStream(stream, kind === "sealed" ? SEALED_PATH : CLIPBOARD_PATH);
4313
+ this.nameStream(stream, `/dev/${kind}`);
4312
4314
  }
4313
4315
  listSealed() {
4314
4316
  const fs = this.Fs;
@@ -4316,7 +4318,8 @@ var init_kernel_streams = __esm({
4316
4318
  if (!analyzePath || !mkdev || !makedev) return;
4317
4319
  const nodes = [
4318
4320
  [SEALED_PATH, 250, this.sys.openSealed],
4319
- [CLIPBOARD_PATH, 251, this.sys.openClipboard]
4321
+ [CLIPBOARD_PATH, 251, this.sys.openClipboard],
4322
+ [EMBEDDER_PATH, 252, this.sys.openEmbedder]
4320
4323
  ];
4321
4324
  for (const [path, minor, opener] of nodes) {
4322
4325
  if (!opener) continue;
@@ -4346,6 +4349,7 @@ var init_kernel_streams = __esm({
4346
4349
  this.attach(stream, kfd, terminal);
4347
4350
  this.nameStream(stream, path);
4348
4351
  if (path === CLIPBOARD_PATH) this.reportClose(kfd);
4352
+ if (path === EMBEDDER_PATH) this.reportClose(kfd);
4349
4353
  }
4350
4354
  reporting = /* @__PURE__ */ new Set();
4351
4355
  reportClose(kfd) {
@@ -4633,10 +4637,11 @@ var init_kernel_streams = __esm({
4633
4637
  return this.vessel(open, kfd, { path, flags, mode }, false);
4634
4638
  }
4635
4639
  openClipboard(open, path, flags, mode) {
4636
- const { openClipboard } = this.sys;
4637
- if (path !== CLIPBOARD_PATH || !openClipboard) return void 0;
4640
+ const clipboard = path === CLIPBOARD_PATH;
4641
+ const opener = clipboard ? this.sys.openClipboard : this.sys.openEmbedder;
4642
+ if (!clipboard && path !== EMBEDDER_PATH || !opener) return void 0;
4638
4643
  if (flags & O_DIRECTORY) throw new this.Fs.ErrnoError(wasiErrno("ENOTDIR"));
4639
- const kfd = this.call(() => openClipboard.call(this.sys, flags & 3));
4644
+ const kfd = this.call(() => opener.call(this.sys, flags & 3));
4640
4645
  try {
4641
4646
  const stream = this.vessel(open, kfd, { path, flags, mode }, false);
4642
4647
  this.reportClose(kfd);
@@ -4672,6 +4677,7 @@ var init_kernel_streams = __esm({
4672
4677
  fs[name2] = (path, ...rest2) => {
4673
4678
  if (path === SEALED_PATH && this.sys.openSealed) return sealedStat();
4674
4679
  if (path === CLIPBOARD_PATH && this.sys.openClipboard) return sealedStat(251);
4680
+ if (path === EMBEDDER_PATH && this.sys.openEmbedder) return sealedStat(252);
4675
4681
  const owned = this.ownedTty(path);
4676
4682
  if (owned && isPtyPath(path)) return this.owned(path, ptyStat(path));
4677
4683
  if (!isPtyPath(path))
@@ -4965,8 +4971,7 @@ function placeholder(Fs, streams2, entry) {
4965
4971
  const access = entry.flags ?? O_RDWR;
4966
4972
  if (entry.kind === "socket") return streams2.socketStream(access);
4967
4973
  if (entry.kind === "tty") return Fs.open("/dev/tty", O_RDWR);
4968
- if (entry.kind === "stream" || entry.kind === "clipboard" || entry.kind === "sealed")
4969
- return Fs.open("/dev/null", access);
4974
+ if (entry.kind === "stream" || DEVICE_KINDS.has(entry.kind)) return Fs.open("/dev/null", access);
4970
4975
  Fs.mkdirTree(PLACEHOLDER_DIR);
4971
4976
  return Fs.open(`${PLACEHOLDER_DIR}/${entry.fd}`, access | O_CREAT3);
4972
4977
  }
@@ -4990,8 +4995,9 @@ function placeKernelStream(Fs, streams2, entry) {
4990
4995
  streams2.sizeFromKernel(stream, entry.kernel);
4991
4996
  } else if (entry.kind === "socket") streams2.attachSocket(stream, entry.kernel);
4992
4997
  else streams2.attach(stream, entry.kernel, entry.kind === "tty");
4993
- if (entry.kind === "clipboard") streams2.reportClose(entry.kernel);
4994
- if (entry.kind === "sealed" || entry.kind === "clipboard") streams2.nameDevice(stream, entry.kind);
4998
+ if (entry.kind === "clipboard" || entry.kind === "embedder") streams2.reportClose(entry.kernel);
4999
+ if (DEVICE_KINDS.has(entry.kind))
5000
+ streams2.nameDevice(stream, entry.kind);
4995
5001
  if (entry.kind === "tty") streams2.nameTerminal(stream);
4996
5002
  if (entry.kind === "stream") {
4997
5003
  asFifo(stream, streams2, entry.desc !== void 0 ? `d${entry.desc}` : `k${entry.kernel}`);
@@ -5018,7 +5024,7 @@ function restoreForkedStreams(Fs, streams2, table) {
5018
5024
  }
5019
5025
  }
5020
5026
  }
5021
- var O_RDWR, O_ACCMODE4, O_CREAT3, O_EXCL3, O_TRUNC4, PLACEHOLDER_DIR, NAMED_DEVICES, ACCESS, DEVICES, FIFO_MODE, nextStreamIno, streamInos;
5027
+ var O_RDWR, O_ACCMODE4, O_CREAT3, O_EXCL3, O_TRUNC4, PLACEHOLDER_DIR, NAMED_DEVICES, DEVICE_KINDS, ACCESS, DEVICES, FIFO_MODE, nextStreamIno, streamInos;
5022
5028
  var init_process_fork = __esm({
5023
5029
  "src/process/process-fork.ts"() {
5024
5030
  "use strict";
@@ -5031,8 +5037,10 @@ var init_process_fork = __esm({
5031
5037
  PLACEHOLDER_DIR = "/dev/slicc-fd";
5032
5038
  NAMED_DEVICES = {
5033
5039
  "/dev/sealed": "sealed",
5034
- "/dev/clipboard": "clipboard"
5040
+ "/dev/clipboard": "clipboard",
5041
+ "/dev/embedder": "embedder"
5035
5042
  };
5043
+ DEVICE_KINDS = /* @__PURE__ */ new Set(["sealed", "clipboard", "embedder"]);
5036
5044
  ACCESS = { 0: "read", 1: "write" };
5037
5045
  DEVICES = {
5038
5046
  "/dev/null": "null",
@@ -6310,6 +6318,9 @@ function kernelSys(transport) {
6310
6318
  clipboardAbort(fd) {
6311
6319
  call2({ op: "fd-clipboard-abort", fd }, "fd-clipboard-abort");
6312
6320
  },
6321
+ openEmbedder(flags) {
6322
+ return json2(call2({ op: "fd-open-embedder", flags }, "fd-open-embedder"));
6323
+ },
6313
6324
  ptyNumbers() {
6314
6325
  return json2(call2({ op: "pty-list" }, "pty-list"));
6315
6326
  },
@@ -6805,7 +6816,14 @@ var init_process_runtime = __esm({
6805
6816
  O_ACCMODE5 = 3;
6806
6817
  O_DIRECTORY2 = 65536;
6807
6818
  accessMode = (access) => access === "read" ? O_RDONLY2 : access === "write" ? O_WRONLY3 : O_RDWR3;
6808
- PLACED = /* @__PURE__ */ new Set(["stream", "file", "socket", "clipboard", "sealed"]);
6819
+ PLACED = /* @__PURE__ */ new Set([
6820
+ "stream",
6821
+ "file",
6822
+ "socket",
6823
+ "clipboard",
6824
+ "embedder",
6825
+ "sealed"
6826
+ ]);
6809
6827
  GLUE_TRAILER = [
6810
6828
  "if (typeof ENV !== 'undefined') Object.assign(ENV, Module.sliccEnv);",
6811
6829
  "if (typeof thisProgram !== 'undefined' && Module.thisProgram === '') thisProgram = '';",
@@ -7926,6 +7944,7 @@ var init_js_kernel = __esm({
7926
7944
  "fd-write",
7927
7945
  "fd-close",
7928
7946
  "fd-open-clipboard",
7947
+ "fd-open-embedder",
7929
7948
  "net-ws-ready",
7930
7949
  "sock-tls",
7931
7950
  "sock-tls-upgrade",
@@ -8261,6 +8280,7 @@ function* lookup(abs) {
8261
8280
  if (DEVICES2.includes(name2)) return { kind: "device" };
8262
8281
  if (name2 === "tty") return { kind: "tty" };
8263
8282
  if (name2 === "clipboard") return { kind: "clipboard" };
8283
+ if (name2 === "embedder") return { kind: "embedder" };
8264
8284
  if (name2 === "sealed") return { kind: "sealed" };
8265
8285
  const std = STDIO.indexOf(name2);
8266
8286
  if (std >= 0) return { kind: "link", target: `${SELF_FD}/${std}`, fd: std };
@@ -8317,7 +8337,8 @@ function* fdTarget(fd, path) {
8317
8337
  if (info.kind === "file") return (yield { op: "fd-vfs-stat", fd }).path;
8318
8338
  if (info.terminal) return info.terminal;
8319
8339
  if (info.meta && "device" in info.meta) return `/dev/${info.meta.device}`;
8320
- if (info.kind === "clipboard" || info.kind === "sealed") return `/dev/${info.kind}`;
8340
+ if (info.kind === "clipboard" || info.kind === "sealed" || info.kind === "embedder")
8341
+ return `/dev/${info.kind}`;
8321
8342
  return `${info.kind === "socket" ? "socket" : "pipe"}:[${fd}]`;
8322
8343
  }
8323
8344
  function devFdStat(fd) {
@@ -8334,6 +8355,7 @@ function* devStat(abs, follow3) {
8334
8355
  case "device":
8335
8356
  case "tty":
8336
8357
  case "clipboard":
8358
+ case "embedder":
8337
8359
  case "sealed":
8338
8360
  return nodeStat(CHAR | 438);
8339
8361
  case "terminal":
@@ -8379,7 +8401,18 @@ function* devReaddir(abs) {
8379
8401
  if (node.kind !== "dir") throw new JsCallError("ENOTDIR", abs);
8380
8402
  const names = yield { op: "fd-tty-names" };
8381
8403
  const ttys = names.filter((n) => /^\/dev\/tty\d+$/.test(n)).map((n) => n.slice(5));
8382
- return [...DEVICES2, "clipboard", "sealed", "tty", "fd", "pts", "shm", ...STDIO, ...ttys].sort();
8404
+ return [
8405
+ ...DEVICES2,
8406
+ "clipboard",
8407
+ "embedder",
8408
+ "sealed",
8409
+ "tty",
8410
+ "fd",
8411
+ "pts",
8412
+ "shm",
8413
+ ...STDIO,
8414
+ ...ttys
8415
+ ].sort();
8383
8416
  }
8384
8417
  function* aliasOf(fd, abs, o) {
8385
8418
  const info = yield* fdInfo(fd, abs);
@@ -8420,6 +8453,11 @@ function* opened(abs, o) {
8420
8453
  fd: yield { op: "fd-open-clipboard", flags: accessFlags(o) },
8421
8454
  file: false
8422
8455
  };
8456
+ case "embedder":
8457
+ return {
8458
+ fd: yield { op: "fd-open-embedder", flags: accessFlags(o) },
8459
+ file: false
8460
+ };
8423
8461
  case "sealed":
8424
8462
  return { fd: yield { op: "fd-open-sealed", flags: accessFlags(o) }, file: false };
8425
8463
  case "terminal": {
@@ -8611,6 +8649,7 @@ var init_js_dev = __esm({
8611
8649
  "device",
8612
8650
  "tty",
8613
8651
  "clipboard",
8652
+ "embedder",
8614
8653
  "sealed"
8615
8654
  ]);
8616
8655
  }
@@ -8886,7 +8925,7 @@ function deviceOf(path) {
8886
8925
  }
8887
8926
  function namedDevice(path) {
8888
8927
  if (deviceOf(path) || stdioAlias(path) !== void 0) return true;
8889
- return path === SEALED_PATH2 || path === CLIPBOARD_PATH2 || path === "/dev/tty";
8928
+ return NAMED_PATHS.has(path);
8890
8929
  }
8891
8930
  function within(path, root) {
8892
8931
  return path === root || path.startsWith(root === "/" ? "/" : `${root}/`);
@@ -8959,7 +8998,7 @@ function promoteRequest(fd, f, handed) {
8959
8998
  ...f.buffer.handle !== void 0 && f.ino !== void 0 ? { ino: f.ino } : {}
8960
8999
  };
8961
9000
  }
8962
- var SYNTHETIC_DIRS2, O_NONBLOCK2, O_WRONLY5, O_RDWR5, O_APPEND3, SEALED_PATH2, CLIPBOARD_PATH2, WasiFds, GEN2;
9001
+ var SYNTHETIC_DIRS2, O_NONBLOCK2, O_WRONLY5, O_RDWR5, O_APPEND3, SEALED_PATH2, CLIPBOARD_PATH2, EMBEDDER_PATH2, NAMED_PATHS, WasiFds, GEN2;
8963
9002
  var init_wasi_fds = __esm({
8964
9003
  "src/process/wasi/wasi-fds.ts"() {
8965
9004
  "use strict";
@@ -8976,6 +9015,13 @@ var init_wasi_fds = __esm({
8976
9015
  O_APPEND3 = 1024;
8977
9016
  SEALED_PATH2 = "/dev/sealed";
8978
9017
  CLIPBOARD_PATH2 = "/dev/clipboard";
9018
+ EMBEDDER_PATH2 = "/dev/embedder";
9019
+ NAMED_PATHS = /* @__PURE__ */ new Set([
9020
+ SEALED_PATH2,
9021
+ CLIPBOARD_PATH2,
9022
+ EMBEDDER_PATH2,
9023
+ "/dev/tty"
9024
+ ]);
8979
9025
  WasiFds = class {
8980
9026
  table = /* @__PURE__ */ new Map();
8981
9027
  buffers = /* @__PURE__ */ new Map();
@@ -9588,7 +9634,7 @@ var init_wasi_fds = __esm({
9588
9634
  return joined2.split("/").includes("..") ? physical(this.fs, joined2) : normalize(joined2);
9589
9635
  }
9590
9636
  openKernelDevice(path, oflags, fdflags, rights) {
9591
- const { openSealed, openClipboard, openTty } = this.kernel.sys;
9637
+ const { openSealed, openClipboard, openEmbedder, openTty } = this.kernel.sys;
9592
9638
  const nonblock = (fdflags & FDFLAGS.NONBLOCK) !== 0;
9593
9639
  let fd;
9594
9640
  let kind;
@@ -9598,6 +9644,9 @@ var init_wasi_fds = __esm({
9598
9644
  } else if (path === CLIPBOARD_PATH2 && openClipboard) {
9599
9645
  fd = this.openCharDevice(openClipboard, oflags, rights);
9600
9646
  kind = "clipboard";
9647
+ } else if (path === EMBEDDER_PATH2 && openEmbedder) {
9648
+ fd = this.openCharDevice(openEmbedder, oflags, rights);
9649
+ kind = "embedder";
9601
9650
  } else if (path === "/dev/tty" || /^\/dev\/tty\d+$/.test(path)) {
9602
9651
  const exclusive = (oflags & OFLAGS.CREAT) !== 0 && (oflags & OFLAGS.EXCL) !== 0;
9603
9652
  try {
@@ -10799,6 +10848,7 @@ function kernelFiletype(kind) {
10799
10848
  case "tty":
10800
10849
  case "sealed":
10801
10850
  case "clipboard":
10851
+ case "embedder":
10802
10852
  return { filetype: FILETYPE.CHARACTER_DEVICE, seeks: false };
10803
10853
  case "device":
10804
10854
  return { filetype: FILETYPE.CHARACTER_DEVICE, seeks: true };
@@ -11876,7 +11926,7 @@ var init_wasi_host = __esm({
11876
11926
  return gone2 ? { ...out, nlink: 0n } : out;
11877
11927
  }
11878
11928
  synthetic(path) {
11879
- return deviceOf(path) !== void 0 || path === SEALED_PATH2 && !!this.o.kernel.sys.openSealed || path === CLIPBOARD_PATH2 && !!this.o.kernel.sys.openClipboard;
11929
+ return deviceOf(path) !== void 0 || path === SEALED_PATH2 && !!this.o.kernel.sys.openSealed || path === CLIPBOARD_PATH2 && !!this.o.kernel.sys.openClipboard || path === EMBEDDER_PATH2 && !!this.o.kernel.sys.openEmbedder;
11880
11930
  }
11881
11931
  linkedDev(path, follow3) {
11882
11932
  if (!follow3) return void 0;