@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
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) {
|
|
@@ -12204,6 +12255,60 @@ var init_wasi_procfs = __esm({
|
|
|
12204
12255
|
}
|
|
12205
12256
|
});
|
|
12206
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
|
+
|
|
12207
12312
|
// src/process/wasi/wasi-signals.ts
|
|
12208
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;
|
|
12209
12314
|
var init_wasi_signals = __esm({
|
|
@@ -14379,13 +14484,20 @@ async function runWasiProcess(init, port2) {
|
|
|
14379
14484
|
ppid: id.ppid,
|
|
14380
14485
|
parent: () => identify(transport, init).ppid,
|
|
14381
14486
|
kernel: { sys: traced(stats, "kernel", sys), call: call2 },
|
|
14382
|
-
fs:
|
|
14383
|
-
|
|
14384
|
-
|
|
14385
|
-
|
|
14386
|
-
|
|
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)
|
|
14387
14499
|
),
|
|
14388
|
-
|
|
14500
|
+
call2
|
|
14389
14501
|
),
|
|
14390
14502
|
...descriptors(init, fork, threads),
|
|
14391
14503
|
...threads ? { credGen: threads.ids } : {}
|
|
@@ -14485,13 +14597,16 @@ async function runWasiThread(init, port2) {
|
|
|
14485
14597
|
ppid: id.ppid,
|
|
14486
14598
|
parent: () => identify(transport, init).ppid,
|
|
14487
14599
|
kernel: { sys, call: call2 },
|
|
14488
|
-
fs:
|
|
14489
|
-
|
|
14490
|
-
|
|
14491
|
-
|
|
14492
|
-
|
|
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)
|
|
14493
14608
|
),
|
|
14494
|
-
|
|
14609
|
+
call2
|
|
14495
14610
|
),
|
|
14496
14611
|
shared: threads.ids
|
|
14497
14612
|
});
|
|
@@ -14557,6 +14672,7 @@ var init_wasi_runtime = __esm({
|
|
|
14557
14672
|
init_wasi_imports();
|
|
14558
14673
|
init_wasi_module();
|
|
14559
14674
|
init_wasi_procfs();
|
|
14675
|
+
init_wasi_ptsfs();
|
|
14560
14676
|
init_wasi_sigmask();
|
|
14561
14677
|
init_wasi_signals();
|
|
14562
14678
|
init_wasi_stats();
|