@ai-ecoverse/slicc-kernel 1.125.2 → 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 +5 -1
- package/dist/kernel-worker.js +235 -110
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-process-worker.js +167 -22
- package/dist/node-process-worker.js.map +4 -4
- package/dist/node.js +238 -113
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +167 -22
- 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/dist/types/process/wasi/wasi-host.d.ts +2 -0
- package/package.json +1 -1
package/dist/process-worker.js
CHANGED
|
@@ -2655,7 +2655,7 @@ var KERNEL_VERSION, OS_RELEASE;
|
|
|
2655
2655
|
var init_version = __esm({
|
|
2656
2656
|
"src/version.ts"() {
|
|
2657
2657
|
"use strict";
|
|
2658
|
-
KERNEL_VERSION = true ? "1.125.
|
|
2658
|
+
KERNEL_VERSION = true ? "1.125.4" : "0.0.0-dev";
|
|
2659
2659
|
OS_RELEASE = "6.0.0-slicc";
|
|
2660
2660
|
}
|
|
2661
2661
|
});
|
|
@@ -3877,7 +3877,7 @@ function datesOf(real) {
|
|
|
3877
3877
|
dates[key] = new Date(value2);
|
|
3878
3878
|
return dates;
|
|
3879
3879
|
}
|
|
3880
|
-
var POLLIN, POLLOUT, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, TCSETSF, O_NONBLOCK, SOCKET_MODE, PTY_PATH, TTY_PATH, TTY_NAME, SEALED_PATH, STRERROR, CLIPBOARD_PATH, O_CREAT2, O_EXCL2, O_NOCTTY, O_TRUNC3, O_DIRECTORY, KILLED_BY_SIGPIPE, ProcessExit, SyscallError, KernelStreams;
|
|
3880
|
+
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;
|
|
3881
3881
|
var init_kernel_streams = __esm({
|
|
3882
3882
|
"src/process/kernel-streams.ts"() {
|
|
3883
3883
|
"use strict";
|
|
@@ -3894,6 +3894,7 @@ var init_kernel_streams = __esm({
|
|
|
3894
3894
|
SOCKET_MODE = 49663;
|
|
3895
3895
|
PTY_PATH = /^\/dev\/(?:ptmx|pts\/(\d+))$/;
|
|
3896
3896
|
TTY_PATH = /^\/dev\/tty\d+$/;
|
|
3897
|
+
PTS_MAJOR = 136;
|
|
3897
3898
|
TTY_NAME = /^tty\d+$/;
|
|
3898
3899
|
SEALED_PATH = "/dev/sealed";
|
|
3899
3900
|
STRERROR = {
|
|
@@ -4105,6 +4106,48 @@ var init_kernel_streams = __esm({
|
|
|
4105
4106
|
return [...names, ...missing2];
|
|
4106
4107
|
};
|
|
4107
4108
|
}
|
|
4109
|
+
usePtsNodes() {
|
|
4110
|
+
const fs = this.Fs;
|
|
4111
|
+
const { lookupNode, readdir, getPath, mkdir, mkdev, makedev } = fs;
|
|
4112
|
+
const numbers = this.sys.ptyNumbers?.bind(this.sys);
|
|
4113
|
+
if (!lookupNode || !readdir || !getPath || !mkdir || !mkdev || !makedev || !numbers) return;
|
|
4114
|
+
const make = (parent, name2) => {
|
|
4115
|
+
const dir = getPath.call(fs, parent);
|
|
4116
|
+
if (dir === "/dev" && name2 === "pts") mkdir.call(fs, "/dev/pts", 493);
|
|
4117
|
+
else if (dir === "/dev/pts" && numbers().includes(Number(name2)) && /^\d+$/.test(name2))
|
|
4118
|
+
mkdev.call(fs, `/dev/pts/${name2}`, makedev.call(fs, PTS_MAJOR, Number(name2)));
|
|
4119
|
+
else return false;
|
|
4120
|
+
return true;
|
|
4121
|
+
};
|
|
4122
|
+
fs.lookupNode = (parent, name2) => {
|
|
4123
|
+
try {
|
|
4124
|
+
return lookupNode.call(fs, parent, name2);
|
|
4125
|
+
} catch (e) {
|
|
4126
|
+
if (this.creatingTerminal) throw e;
|
|
4127
|
+
this.creatingTerminal = true;
|
|
4128
|
+
let made;
|
|
4129
|
+
try {
|
|
4130
|
+
made = make(parent, name2);
|
|
4131
|
+
} finally {
|
|
4132
|
+
this.creatingTerminal = false;
|
|
4133
|
+
}
|
|
4134
|
+
if (!made) throw e;
|
|
4135
|
+
return lookupNode.call(fs, parent, name2);
|
|
4136
|
+
}
|
|
4137
|
+
};
|
|
4138
|
+
fs.readdir = (path) => {
|
|
4139
|
+
const at = path.replace(/\/+$/, "");
|
|
4140
|
+
if (at === "/dev/pts") return [".", "..", ...numbers().map(String)];
|
|
4141
|
+
const names = readdir.call(fs, path);
|
|
4142
|
+
return at === "/dev" && !names.includes("pts") ? [...names, "pts"] : names;
|
|
4143
|
+
};
|
|
4144
|
+
}
|
|
4145
|
+
ptsTarget(path, st) {
|
|
4146
|
+
if ((st?.rdev ?? 0) >> 8 !== PTS_MAJOR) return void 0;
|
|
4147
|
+
const { lookupPath } = this.Fs;
|
|
4148
|
+
const real = lookupPath?.call(this.Fs, path, { follow: true }).path;
|
|
4149
|
+
return real !== void 0 && isPtyPath(real) ? real : void 0;
|
|
4150
|
+
}
|
|
4108
4151
|
ttyNode(name2) {
|
|
4109
4152
|
const { analyzePath, mkdev, makedev } = this.Fs;
|
|
4110
4153
|
if (!TTY_PATH.test(name2) || !analyzePath || !mkdev || !makedev) return;
|
|
@@ -4180,6 +4223,7 @@ var init_kernel_streams = __esm({
|
|
|
4180
4223
|
if (typeof this.Fs.open !== "function") return;
|
|
4181
4224
|
this.usePtyPaths();
|
|
4182
4225
|
this.useTerminalNodes();
|
|
4226
|
+
this.usePtsNodes();
|
|
4183
4227
|
this.listSealed();
|
|
4184
4228
|
const open = this.Fs.open.bind(this.Fs);
|
|
4185
4229
|
this.Fs.open = (path, flags, mode) => {
|
|
@@ -4295,15 +4339,21 @@ var init_kernel_streams = __esm({
|
|
|
4295
4339
|
if (path === CLIPBOARD_PATH && this.sys.openClipboard) return sealedStat(251);
|
|
4296
4340
|
const owned = this.ownedTty(path);
|
|
4297
4341
|
if (owned && isPtyPath(path)) return this.owned(path, ptyStat(path));
|
|
4298
|
-
if (!isPtyPath(path))
|
|
4299
|
-
|
|
4300
|
-
return owned && TTY_PATH.test(path) ? this.owned(path, st) : st;
|
|
4301
|
-
}
|
|
4342
|
+
if (!isPtyPath(path))
|
|
4343
|
+
return this.pathStat(path, original.call(fs, path, ...rest2), name2, owned);
|
|
4302
4344
|
this.existingPty(path);
|
|
4303
4345
|
return ptyStat(path);
|
|
4304
4346
|
};
|
|
4305
4347
|
}
|
|
4306
4348
|
}
|
|
4349
|
+
pathStat(path, st, name2, owned) {
|
|
4350
|
+
const pts = name2 === "stat" ? this.ptsTarget(path, st) : void 0;
|
|
4351
|
+
if (pts) {
|
|
4352
|
+
this.existingPty(pts);
|
|
4353
|
+
return owned ? this.owned(pts, ptyStat(pts)) : ptyStat(pts);
|
|
4354
|
+
}
|
|
4355
|
+
return owned && TTY_PATH.test(path) ? this.owned(path, st) : st;
|
|
4356
|
+
}
|
|
4307
4357
|
ownedTty(path) {
|
|
4308
4358
|
return this.options.owners === true && this.sys.ttyOwner !== void 0 && path !== "/dev/ptmx";
|
|
4309
4359
|
}
|
|
@@ -9965,6 +10015,7 @@ function filetypeOf(s) {
|
|
|
9965
10015
|
if (s.isSymbolicLink) return FILETYPE.SYMBOLIC_LINK;
|
|
9966
10016
|
if (s.isDirectory) return FILETYPE.DIRECTORY;
|
|
9967
10017
|
if (s.isSocket) return FILETYPE.SOCKET_STREAM;
|
|
10018
|
+
if (((s.mode ?? 0) & 61440) === 8192) return FILETYPE.CHARACTER_DEVICE;
|
|
9968
10019
|
return s.isFile ? FILETYPE.REGULAR_FILE : FILETYPE.UNKNOWN;
|
|
9969
10020
|
}
|
|
9970
10021
|
function filestatOf(path, s) {
|
|
@@ -10206,7 +10257,11 @@ var init_wasi_host = __esm({
|
|
|
10206
10257
|
}
|
|
10207
10258
|
if (this.synthetic(path)) return ROOT_IDS;
|
|
10208
10259
|
if (kernelDev(path)) return devSync(dev, devStat(path, follow3));
|
|
10209
|
-
return
|
|
10260
|
+
return this.orDev(
|
|
10261
|
+
path,
|
|
10262
|
+
follow3,
|
|
10263
|
+
() => follow3 ? this.o.fs.stat(path) : this.o.fs.lstat(path)
|
|
10264
|
+
);
|
|
10210
10265
|
};
|
|
10211
10266
|
return wrap({
|
|
10212
10267
|
fd_chown: (fd, uid, gid) => {
|
|
@@ -10285,7 +10340,16 @@ var init_wasi_host = __esm({
|
|
|
10285
10340
|
const node = devSync(dev, devStat(path, (flags & AT_SYMLINK_NOFOLLOW2) === 0));
|
|
10286
10341
|
return void mem.view().setUint32(out, node.mode ?? DEVICE_MODE, true);
|
|
10287
10342
|
}
|
|
10288
|
-
const
|
|
10343
|
+
const follow3 = (flags & AT_SYMLINK_NOFOLLOW2) === 0;
|
|
10344
|
+
let st;
|
|
10345
|
+
try {
|
|
10346
|
+
st = follow3 ? this.o.fs.stat(path) : this.o.fs.lstat(path);
|
|
10347
|
+
} catch (err) {
|
|
10348
|
+
const device2 = this.orDev(path, follow3, () => {
|
|
10349
|
+
throw err;
|
|
10350
|
+
});
|
|
10351
|
+
return void mem.view().setUint32(out, device2.mode ?? DEVICE_MODE, true);
|
|
10352
|
+
}
|
|
10289
10353
|
mem.view().setUint32(out, (st.isFifo ? S_IFIFO2 : 0) | modeOf2(st), true);
|
|
10290
10354
|
}
|
|
10291
10355
|
});
|
|
@@ -10995,6 +11059,21 @@ var init_wasi_host = __esm({
|
|
|
10995
11059
|
synthetic(path) {
|
|
10996
11060
|
return deviceOf(path) !== void 0 || path === SEALED_PATH2 && !!this.o.kernel.sys.openSealed || path === CLIPBOARD_PATH2 && !!this.o.kernel.sys.openClipboard;
|
|
10997
11061
|
}
|
|
11062
|
+
linkedDev(path, follow3) {
|
|
11063
|
+
if (!follow3) return void 0;
|
|
11064
|
+
const real = physicalPath(this.o.fs, path);
|
|
11065
|
+
return real !== path && kernelDev(real) ? real : void 0;
|
|
11066
|
+
}
|
|
11067
|
+
orDev(path, follow3, stat) {
|
|
11068
|
+
try {
|
|
11069
|
+
return stat();
|
|
11070
|
+
} catch (err) {
|
|
11071
|
+
const device2 = err.code === "ENOENT" && this.linkedDev(path, follow3);
|
|
11072
|
+
if (!device2) throw err;
|
|
11073
|
+
const json2 = (req) => this.o.kernel.call(req);
|
|
11074
|
+
return devSync({ json: json2 }, devStat(device2, true));
|
|
11075
|
+
}
|
|
11076
|
+
}
|
|
10998
11077
|
devChar(path, follow3) {
|
|
10999
11078
|
try {
|
|
11000
11079
|
const json2 = (req) => this.o.kernel.call(req);
|
|
@@ -11102,11 +11181,12 @@ var init_wasi_host = __esm({
|
|
|
11102
11181
|
return filestatOf(path, follow3 ? this.o.fs.stat(path) : this.o.fs.lstat(path));
|
|
11103
11182
|
} catch (err) {
|
|
11104
11183
|
if (err.code !== "ENOENT") throw err;
|
|
11105
|
-
|
|
11184
|
+
const device2 = kernelDev(path) ? path : this.linkedDev(path, follow3);
|
|
11185
|
+
if (device2 && this.devChar(device2, true)) {
|
|
11106
11186
|
return this.local({
|
|
11107
11187
|
filetype: FILETYPE.CHARACTER_DEVICE,
|
|
11108
11188
|
size: 0n,
|
|
11109
|
-
ino: pathInode(
|
|
11189
|
+
ino: pathInode(device2),
|
|
11110
11190
|
mtimeNs: 0n
|
|
11111
11191
|
});
|
|
11112
11192
|
}
|
|
@@ -12175,6 +12255,60 @@ var init_wasi_procfs = __esm({
|
|
|
12175
12255
|
}
|
|
12176
12256
|
});
|
|
12177
12257
|
|
|
12258
|
+
// src/process/wasi/wasi-ptsfs.ts
|
|
12259
|
+
function ptsBridge(fs, call2) {
|
|
12260
|
+
const open = () => call2({ op: "pty-list" });
|
|
12261
|
+
const kernel = { json: (req) => call2(req) };
|
|
12262
|
+
const entry = (p) => {
|
|
12263
|
+
const n = PTS_ENTRY.exec(p)?.[1];
|
|
12264
|
+
if (n === void 0 || !open().includes(Number(n))) throw syncError("ENOENT", p);
|
|
12265
|
+
return devSync(kernel, devStat(p, true));
|
|
12266
|
+
};
|
|
12267
|
+
const dir = () => devSync(kernel, devStat(PTS, true));
|
|
12268
|
+
const statOf = (p, real) => {
|
|
12269
|
+
if (p === PTS) return dir();
|
|
12270
|
+
return PTS_ENTRY.test(p) ? entry(p) : real();
|
|
12271
|
+
};
|
|
12272
|
+
const names = () => open().map(String).sort();
|
|
12273
|
+
const over = {
|
|
12274
|
+
stat: (p) => statOf(p, () => fs.stat(p)),
|
|
12275
|
+
lstat: (p) => statOf(p, () => fs.lstat(p)),
|
|
12276
|
+
exists: (p) => {
|
|
12277
|
+
if (p === PTS) return true;
|
|
12278
|
+
if (!PTS_ENTRY.test(p)) return fs.exists(p);
|
|
12279
|
+
return open().includes(Number(PTS_ENTRY.exec(p)?.[1]));
|
|
12280
|
+
},
|
|
12281
|
+
readdir: (p) => {
|
|
12282
|
+
if (p === PTS) return names();
|
|
12283
|
+
const listed = fs.readdir(p);
|
|
12284
|
+
return p === "/dev" && !listed.includes("pts") ? [...listed, "pts"] : listed;
|
|
12285
|
+
},
|
|
12286
|
+
readdirStat: (p) => {
|
|
12287
|
+
if (p === PTS) return names().map((name2) => [name2, entry(`${PTS}/${name2}`)]);
|
|
12288
|
+
const listed = fs.readdirStat(p);
|
|
12289
|
+
if (p !== "/dev" || listed.some(([name2]) => name2 === "pts")) return listed;
|
|
12290
|
+
return [...listed, ["pts", dir()]];
|
|
12291
|
+
}
|
|
12292
|
+
};
|
|
12293
|
+
return new Proxy(fs, {
|
|
12294
|
+
get(target, key, receiver) {
|
|
12295
|
+
if (Object.hasOwn(over, key)) return over[key];
|
|
12296
|
+
const value2 = Reflect.get(target, key, receiver);
|
|
12297
|
+
return typeof value2 === "function" ? value2.bind(target) : value2;
|
|
12298
|
+
}
|
|
12299
|
+
});
|
|
12300
|
+
}
|
|
12301
|
+
var PTS, PTS_ENTRY;
|
|
12302
|
+
var init_wasi_ptsfs = __esm({
|
|
12303
|
+
"src/process/wasi/wasi-ptsfs.ts"() {
|
|
12304
|
+
"use strict";
|
|
12305
|
+
init_sync_fs_wire();
|
|
12306
|
+
init_js_dev();
|
|
12307
|
+
PTS = "/dev/pts";
|
|
12308
|
+
PTS_ENTRY = /^\/dev\/pts\/(\d+)$/;
|
|
12309
|
+
}
|
|
12310
|
+
});
|
|
12311
|
+
|
|
12178
12312
|
// src/process/wasi/wasi-signals.ts
|
|
12179
12313
|
var DELIVERED_MASK, KERNEL_DEFAULTS, LIBC_DEFAULT_EXIT, SA_RESTART, SA_NODEFER, SA_NOCLDWAIT, DISPOSITION_IGNORE, DISPOSITION_HANDLER, withBit, WASIX_LIBC_DEFAULT_LINE, WasiSignals;
|
|
12180
12314
|
var init_wasi_signals = __esm({
|
|
@@ -14350,13 +14484,20 @@ async function runWasiProcess(init, port2) {
|
|
|
14350
14484
|
ppid: id.ppid,
|
|
14351
14485
|
parent: () => identify(transport, init).ppid,
|
|
14352
14486
|
kernel: { sys: traced(stats, "kernel", sys), call: call2 },
|
|
14353
|
-
fs:
|
|
14354
|
-
|
|
14355
|
-
|
|
14356
|
-
|
|
14357
|
-
|
|
14487
|
+
fs: ptsBridge(
|
|
14488
|
+
procfsBridge(
|
|
14489
|
+
cachingBridge(
|
|
14490
|
+
traced(
|
|
14491
|
+
stats,
|
|
14492
|
+
"fs",
|
|
14493
|
+
createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true })
|
|
14494
|
+
),
|
|
14495
|
+
void 0,
|
|
14496
|
+
threads?.ids
|
|
14497
|
+
),
|
|
14498
|
+
procTree(call2, id.pid)
|
|
14358
14499
|
),
|
|
14359
|
-
|
|
14500
|
+
call2
|
|
14360
14501
|
),
|
|
14361
14502
|
...descriptors(init, fork, threads),
|
|
14362
14503
|
...threads ? { credGen: threads.ids } : {}
|
|
@@ -14456,13 +14597,16 @@ async function runWasiThread(init, port2) {
|
|
|
14456
14597
|
ppid: id.ppid,
|
|
14457
14598
|
parent: () => identify(transport, init).ppid,
|
|
14458
14599
|
kernel: { sys, call: call2 },
|
|
14459
|
-
fs:
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
|
|
14463
|
-
|
|
14600
|
+
fs: ptsBridge(
|
|
14601
|
+
procfsBridge(
|
|
14602
|
+
cachingBridge(
|
|
14603
|
+
createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true }),
|
|
14604
|
+
void 0,
|
|
14605
|
+
threads.ids
|
|
14606
|
+
),
|
|
14607
|
+
procTree(call2, id.pid)
|
|
14464
14608
|
),
|
|
14465
|
-
|
|
14609
|
+
call2
|
|
14466
14610
|
),
|
|
14467
14611
|
shared: threads.ids
|
|
14468
14612
|
});
|
|
@@ -14528,6 +14672,7 @@ var init_wasi_runtime = __esm({
|
|
|
14528
14672
|
init_wasi_imports();
|
|
14529
14673
|
init_wasi_module();
|
|
14530
14674
|
init_wasi_procfs();
|
|
14675
|
+
init_wasi_ptsfs();
|
|
14531
14676
|
init_wasi_sigmask();
|
|
14532
14677
|
init_wasi_signals();
|
|
14533
14678
|
init_wasi_stats();
|