@ai-ecoverse/slicc-kernel 1.125.3 → 1.125.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/kernel-worker.js +234 -109
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-process-worker.js +134 -18
- package/dist/node-process-worker.js.map +4 -4
- package/dist/node.js +237 -112
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +134 -18
- package/dist/process-worker.js.map +4 -4
- package/dist/types/kernel/net/tls-chain.d.ts +7 -1
- package/dist/types/kernel/vfs-file.d.ts +5 -0
- package/dist/types/mount/mount-fs.d.ts +1 -0
- package/dist/types/process/kernel-streams.d.ts +3 -0
- package/package.json +1 -1
|
@@ -4588,6 +4588,7 @@ function filetypeOf(s) {
|
|
|
4588
4588
|
if (s.isSymbolicLink) return FILETYPE.SYMBOLIC_LINK;
|
|
4589
4589
|
if (s.isDirectory) return FILETYPE.DIRECTORY;
|
|
4590
4590
|
if (s.isSocket) return FILETYPE.SOCKET_STREAM;
|
|
4591
|
+
if (((s.mode ?? 0) & 61440) === 8192) return FILETYPE.CHARACTER_DEVICE;
|
|
4591
4592
|
return s.isFile ? FILETYPE.REGULAR_FILE : FILETYPE.UNKNOWN;
|
|
4592
4593
|
}
|
|
4593
4594
|
function filestatOf(path, s) {
|
|
@@ -6324,7 +6325,7 @@ var KERNEL_VERSION, OS_RELEASE;
|
|
|
6324
6325
|
var init_version = __esm({
|
|
6325
6326
|
"src/version.ts"() {
|
|
6326
6327
|
"use strict";
|
|
6327
|
-
KERNEL_VERSION = true ? "1.125.
|
|
6328
|
+
KERNEL_VERSION = true ? "1.125.4" : "0.0.0-dev";
|
|
6328
6329
|
OS_RELEASE = "6.0.0-slicc";
|
|
6329
6330
|
}
|
|
6330
6331
|
});
|
|
@@ -12639,7 +12640,7 @@ function datesOf(real) {
|
|
|
12639
12640
|
dates[key] = new Date(value2);
|
|
12640
12641
|
return dates;
|
|
12641
12642
|
}
|
|
12642
|
-
var POLLIN, POLLOUT, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, TCSETSF, O_NONBLOCK2, SOCKET_MODE, PTY_PATH, TTY_PATH, TTY_NAME, SEALED_PATH2, STRERROR, CLIPBOARD_PATH2, O_CREAT2, O_EXCL2, O_NOCTTY, O_TRUNC3, O_DIRECTORY, KILLED_BY_SIGPIPE, ProcessExit, SyscallError, KernelStreams;
|
|
12643
|
+
var POLLIN, POLLOUT, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, TCSETSF, O_NONBLOCK2, SOCKET_MODE, PTY_PATH, TTY_PATH, PTS_MAJOR, TTY_NAME, SEALED_PATH2, STRERROR, CLIPBOARD_PATH2, O_CREAT2, O_EXCL2, O_NOCTTY, O_TRUNC3, O_DIRECTORY, KILLED_BY_SIGPIPE, ProcessExit, SyscallError, KernelStreams;
|
|
12643
12644
|
var init_kernel_streams = __esm({
|
|
12644
12645
|
"src/process/kernel-streams.ts"() {
|
|
12645
12646
|
"use strict";
|
|
@@ -12656,6 +12657,7 @@ var init_kernel_streams = __esm({
|
|
|
12656
12657
|
SOCKET_MODE = 49663;
|
|
12657
12658
|
PTY_PATH = /^\/dev\/(?:ptmx|pts\/(\d+))$/;
|
|
12658
12659
|
TTY_PATH = /^\/dev\/tty\d+$/;
|
|
12660
|
+
PTS_MAJOR = 136;
|
|
12659
12661
|
TTY_NAME = /^tty\d+$/;
|
|
12660
12662
|
SEALED_PATH2 = "/dev/sealed";
|
|
12661
12663
|
STRERROR = {
|
|
@@ -12867,6 +12869,48 @@ var init_kernel_streams = __esm({
|
|
|
12867
12869
|
return [...names, ...missing2];
|
|
12868
12870
|
};
|
|
12869
12871
|
}
|
|
12872
|
+
usePtsNodes() {
|
|
12873
|
+
const fs = this.Fs;
|
|
12874
|
+
const { lookupNode, readdir, getPath, mkdir, mkdev, makedev } = fs;
|
|
12875
|
+
const numbers = this.sys.ptyNumbers?.bind(this.sys);
|
|
12876
|
+
if (!lookupNode || !readdir || !getPath || !mkdir || !mkdev || !makedev || !numbers) return;
|
|
12877
|
+
const make = (parent, name2) => {
|
|
12878
|
+
const dir = getPath.call(fs, parent);
|
|
12879
|
+
if (dir === "/dev" && name2 === "pts") mkdir.call(fs, "/dev/pts", 493);
|
|
12880
|
+
else if (dir === "/dev/pts" && numbers().includes(Number(name2)) && /^\d+$/.test(name2))
|
|
12881
|
+
mkdev.call(fs, `/dev/pts/${name2}`, makedev.call(fs, PTS_MAJOR, Number(name2)));
|
|
12882
|
+
else return false;
|
|
12883
|
+
return true;
|
|
12884
|
+
};
|
|
12885
|
+
fs.lookupNode = (parent, name2) => {
|
|
12886
|
+
try {
|
|
12887
|
+
return lookupNode.call(fs, parent, name2);
|
|
12888
|
+
} catch (e) {
|
|
12889
|
+
if (this.creatingTerminal) throw e;
|
|
12890
|
+
this.creatingTerminal = true;
|
|
12891
|
+
let made;
|
|
12892
|
+
try {
|
|
12893
|
+
made = make(parent, name2);
|
|
12894
|
+
} finally {
|
|
12895
|
+
this.creatingTerminal = false;
|
|
12896
|
+
}
|
|
12897
|
+
if (!made) throw e;
|
|
12898
|
+
return lookupNode.call(fs, parent, name2);
|
|
12899
|
+
}
|
|
12900
|
+
};
|
|
12901
|
+
fs.readdir = (path) => {
|
|
12902
|
+
const at = path.replace(/\/+$/, "");
|
|
12903
|
+
if (at === "/dev/pts") return [".", "..", ...numbers().map(String)];
|
|
12904
|
+
const names = readdir.call(fs, path);
|
|
12905
|
+
return at === "/dev" && !names.includes("pts") ? [...names, "pts"] : names;
|
|
12906
|
+
};
|
|
12907
|
+
}
|
|
12908
|
+
ptsTarget(path, st) {
|
|
12909
|
+
if ((st?.rdev ?? 0) >> 8 !== PTS_MAJOR) return void 0;
|
|
12910
|
+
const { lookupPath } = this.Fs;
|
|
12911
|
+
const real = lookupPath?.call(this.Fs, path, { follow: true }).path;
|
|
12912
|
+
return real !== void 0 && isPtyPath(real) ? real : void 0;
|
|
12913
|
+
}
|
|
12870
12914
|
ttyNode(name2) {
|
|
12871
12915
|
const { analyzePath, mkdev, makedev } = this.Fs;
|
|
12872
12916
|
if (!TTY_PATH.test(name2) || !analyzePath || !mkdev || !makedev) return;
|
|
@@ -12942,6 +12986,7 @@ var init_kernel_streams = __esm({
|
|
|
12942
12986
|
if (typeof this.Fs.open !== "function") return;
|
|
12943
12987
|
this.usePtyPaths();
|
|
12944
12988
|
this.useTerminalNodes();
|
|
12989
|
+
this.usePtsNodes();
|
|
12945
12990
|
this.listSealed();
|
|
12946
12991
|
const open = this.Fs.open.bind(this.Fs);
|
|
12947
12992
|
this.Fs.open = (path, flags, mode) => {
|
|
@@ -13057,15 +13102,21 @@ var init_kernel_streams = __esm({
|
|
|
13057
13102
|
if (path === CLIPBOARD_PATH2 && this.sys.openClipboard) return sealedStat(251);
|
|
13058
13103
|
const owned = this.ownedTty(path);
|
|
13059
13104
|
if (owned && isPtyPath(path)) return this.owned(path, ptyStat(path));
|
|
13060
|
-
if (!isPtyPath(path))
|
|
13061
|
-
|
|
13062
|
-
return owned && TTY_PATH.test(path) ? this.owned(path, st) : st;
|
|
13063
|
-
}
|
|
13105
|
+
if (!isPtyPath(path))
|
|
13106
|
+
return this.pathStat(path, original.call(fs, path, ...rest2), name2, owned);
|
|
13064
13107
|
this.existingPty(path);
|
|
13065
13108
|
return ptyStat(path);
|
|
13066
13109
|
};
|
|
13067
13110
|
}
|
|
13068
13111
|
}
|
|
13112
|
+
pathStat(path, st, name2, owned) {
|
|
13113
|
+
const pts = name2 === "stat" ? this.ptsTarget(path, st) : void 0;
|
|
13114
|
+
if (pts) {
|
|
13115
|
+
this.existingPty(pts);
|
|
13116
|
+
return owned ? this.owned(pts, ptyStat(pts)) : ptyStat(pts);
|
|
13117
|
+
}
|
|
13118
|
+
return owned && TTY_PATH.test(path) ? this.owned(path, st) : st;
|
|
13119
|
+
}
|
|
13069
13120
|
ownedTty(path) {
|
|
13070
13121
|
return this.options.owners === true && this.sys.ttyOwner !== void 0 && path !== "/dev/ptmx";
|
|
13071
13122
|
}
|
|
@@ -14822,6 +14873,60 @@ var init_wasi_module = __esm({
|
|
|
14822
14873
|
}
|
|
14823
14874
|
});
|
|
14824
14875
|
|
|
14876
|
+
// src/process/wasi/wasi-ptsfs.ts
|
|
14877
|
+
function ptsBridge(fs, call2) {
|
|
14878
|
+
const open = () => call2({ op: "pty-list" });
|
|
14879
|
+
const kernel = { json: (req) => call2(req) };
|
|
14880
|
+
const entry = (p) => {
|
|
14881
|
+
const n = PTS_ENTRY.exec(p)?.[1];
|
|
14882
|
+
if (n === void 0 || !open().includes(Number(n))) throw syncError("ENOENT", p);
|
|
14883
|
+
return devSync(kernel, devStat(p, true));
|
|
14884
|
+
};
|
|
14885
|
+
const dir = () => devSync(kernel, devStat(PTS, true));
|
|
14886
|
+
const statOf = (p, real) => {
|
|
14887
|
+
if (p === PTS) return dir();
|
|
14888
|
+
return PTS_ENTRY.test(p) ? entry(p) : real();
|
|
14889
|
+
};
|
|
14890
|
+
const names = () => open().map(String).sort();
|
|
14891
|
+
const over = {
|
|
14892
|
+
stat: (p) => statOf(p, () => fs.stat(p)),
|
|
14893
|
+
lstat: (p) => statOf(p, () => fs.lstat(p)),
|
|
14894
|
+
exists: (p) => {
|
|
14895
|
+
if (p === PTS) return true;
|
|
14896
|
+
if (!PTS_ENTRY.test(p)) return fs.exists(p);
|
|
14897
|
+
return open().includes(Number(PTS_ENTRY.exec(p)?.[1]));
|
|
14898
|
+
},
|
|
14899
|
+
readdir: (p) => {
|
|
14900
|
+
if (p === PTS) return names();
|
|
14901
|
+
const listed = fs.readdir(p);
|
|
14902
|
+
return p === "/dev" && !listed.includes("pts") ? [...listed, "pts"] : listed;
|
|
14903
|
+
},
|
|
14904
|
+
readdirStat: (p) => {
|
|
14905
|
+
if (p === PTS) return names().map((name2) => [name2, entry(`${PTS}/${name2}`)]);
|
|
14906
|
+
const listed = fs.readdirStat(p);
|
|
14907
|
+
if (p !== "/dev" || listed.some(([name2]) => name2 === "pts")) return listed;
|
|
14908
|
+
return [...listed, ["pts", dir()]];
|
|
14909
|
+
}
|
|
14910
|
+
};
|
|
14911
|
+
return new Proxy(fs, {
|
|
14912
|
+
get(target, key, receiver) {
|
|
14913
|
+
if (Object.hasOwn(over, key)) return over[key];
|
|
14914
|
+
const value2 = Reflect.get(target, key, receiver);
|
|
14915
|
+
return typeof value2 === "function" ? value2.bind(target) : value2;
|
|
14916
|
+
}
|
|
14917
|
+
});
|
|
14918
|
+
}
|
|
14919
|
+
var PTS, PTS_ENTRY;
|
|
14920
|
+
var init_wasi_ptsfs = __esm({
|
|
14921
|
+
"src/process/wasi/wasi-ptsfs.ts"() {
|
|
14922
|
+
"use strict";
|
|
14923
|
+
init_sync_fs_wire();
|
|
14924
|
+
init_js_dev();
|
|
14925
|
+
PTS = "/dev/pts";
|
|
14926
|
+
PTS_ENTRY = /^\/dev\/pts\/(\d+)$/;
|
|
14927
|
+
}
|
|
14928
|
+
});
|
|
14929
|
+
|
|
14825
14930
|
// src/process/wasi/wasi-signals.ts
|
|
14826
14931
|
var DELIVERED_MASK, KERNEL_DEFAULTS, LIBC_DEFAULT_EXIT, SA_RESTART, SA_NODEFER, SA_NOCLDWAIT, DISPOSITION_IGNORE, DISPOSITION_HANDLER, withBit, WASIX_LIBC_DEFAULT_LINE, WasiSignals;
|
|
14827
14932
|
var init_wasi_signals = __esm({
|
|
@@ -16997,13 +17102,20 @@ async function runWasiProcess(init, port3) {
|
|
|
16997
17102
|
ppid: id.ppid,
|
|
16998
17103
|
parent: () => identify(transport, init).ppid,
|
|
16999
17104
|
kernel: { sys: traced(stats, "kernel", sys), call: call2 },
|
|
17000
|
-
fs:
|
|
17001
|
-
|
|
17002
|
-
|
|
17003
|
-
|
|
17004
|
-
|
|
17105
|
+
fs: ptsBridge(
|
|
17106
|
+
procfsBridge(
|
|
17107
|
+
cachingBridge(
|
|
17108
|
+
traced(
|
|
17109
|
+
stats,
|
|
17110
|
+
"fs",
|
|
17111
|
+
createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true })
|
|
17112
|
+
),
|
|
17113
|
+
void 0,
|
|
17114
|
+
threads?.ids
|
|
17115
|
+
),
|
|
17116
|
+
procTree(call2, id.pid)
|
|
17005
17117
|
),
|
|
17006
|
-
|
|
17118
|
+
call2
|
|
17007
17119
|
),
|
|
17008
17120
|
...descriptors(init, fork, threads),
|
|
17009
17121
|
...threads ? { credGen: threads.ids } : {}
|
|
@@ -17103,13 +17215,16 @@ async function runWasiThread(init, port3) {
|
|
|
17103
17215
|
ppid: id.ppid,
|
|
17104
17216
|
parent: () => identify(transport, init).ppid,
|
|
17105
17217
|
kernel: { sys, call: call2 },
|
|
17106
|
-
fs:
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
|
|
17218
|
+
fs: ptsBridge(
|
|
17219
|
+
procfsBridge(
|
|
17220
|
+
cachingBridge(
|
|
17221
|
+
createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true }),
|
|
17222
|
+
void 0,
|
|
17223
|
+
threads.ids
|
|
17224
|
+
),
|
|
17225
|
+
procTree(call2, id.pid)
|
|
17111
17226
|
),
|
|
17112
|
-
|
|
17227
|
+
call2
|
|
17113
17228
|
),
|
|
17114
17229
|
shared: threads.ids
|
|
17115
17230
|
});
|
|
@@ -17175,6 +17290,7 @@ var init_wasi_runtime = __esm({
|
|
|
17175
17290
|
init_wasi_imports();
|
|
17176
17291
|
init_wasi_module();
|
|
17177
17292
|
init_wasi_procfs();
|
|
17293
|
+
init_wasi_ptsfs();
|
|
17178
17294
|
init_wasi_sigmask();
|
|
17179
17295
|
init_wasi_signals();
|
|
17180
17296
|
init_wasi_stats();
|