@ai-ecoverse/slicc-kernel 1.125.12 → 1.126.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.
- package/README.md +12 -3
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +96 -12
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-process-worker.js +90 -25
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +96 -12
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +90 -25
- package/dist/process-worker.js.map +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/kernel/net/tls-client.d.ts +4 -0
- package/dist/types/kernel/net/tls-uplink.d.ts +2 -1
- package/dist/types/kernel/sealed-session.d.ts +44 -0
- package/dist/types/kernel/sealed.d.ts +3 -0
- package/dist/types/process/js/js-context.d.ts +15 -3
- package/dist/types/process/js/js-io.d.ts +3 -0
- package/dist/types/process/js/js-net.d.ts +1 -0
- package/dist/types/process/js/js-sync.d.ts +5 -3
- package/dist/types/process/js/js-tty.d.ts +11 -1
- 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.
|
|
2658
|
+
KERNEL_VERSION = true ? "1.126.0" : "0.0.0-dev";
|
|
2659
2659
|
OS_RELEASE = "6.0.0-slicc";
|
|
2660
2660
|
}
|
|
2661
2661
|
});
|
|
@@ -15775,7 +15775,8 @@ function sessionOf(r) {
|
|
|
15775
15775
|
}
|
|
15776
15776
|
return Object.freeze({
|
|
15777
15777
|
path: "kernel",
|
|
15778
|
-
substitutes:
|
|
15778
|
+
substitutes: r.substitutes === true,
|
|
15779
|
+
verified: r.verified === true,
|
|
15779
15780
|
protocol: r.protocol ?? "TLSv1.2",
|
|
15780
15781
|
alpnProtocol: r.alpnProtocol,
|
|
15781
15782
|
authorized: r.authorized === true,
|
|
@@ -16251,20 +16252,24 @@ function syncOps(kernel, shared) {
|
|
|
16251
16252
|
const r = kernel.blocking({ op: "fd-read", fd, max: Math.min(max, MAX_IO) });
|
|
16252
16253
|
return r.ok && r.kind === "bytes" ? r.bytes : new Uint8Array(0);
|
|
16253
16254
|
};
|
|
16254
|
-
const write2 = (fd, data) => {
|
|
16255
|
+
const write2 = (fd, data, options) => {
|
|
16255
16256
|
const bytes = typeof data === "string" ? encoder3.encode(data) : data;
|
|
16256
16257
|
const i = info(fd);
|
|
16257
|
-
if (writeDevice(i)) return;
|
|
16258
|
+
if (writeDevice(i)) return bytes.length;
|
|
16259
|
+
const nonblock = options?.nonblock === true;
|
|
16258
16260
|
let at = 0;
|
|
16259
16261
|
while (at < bytes.length) {
|
|
16260
16262
|
const body = bytes.subarray(at, at + MAX_IO);
|
|
16261
16263
|
try {
|
|
16262
|
-
|
|
16264
|
+
const req = { op: "fd-write", fd, body, ...nonblock ? { nonblock } : {} };
|
|
16265
|
+
at += written(kernel.blocking(req), body.length);
|
|
16263
16266
|
} catch (err) {
|
|
16264
16267
|
if (brokenPipe(err, i)) kernel.call({ op: "proc-kill", pid: shared.pid, sig: SIG.PIPE });
|
|
16265
16268
|
throw err;
|
|
16266
16269
|
}
|
|
16270
|
+
if (nonblock) break;
|
|
16267
16271
|
}
|
|
16272
|
+
return at;
|
|
16268
16273
|
};
|
|
16269
16274
|
const statOf = (op, path) => {
|
|
16270
16275
|
const abs = resolve(path);
|
|
@@ -16555,7 +16560,7 @@ function rawOf(termios) {
|
|
|
16555
16560
|
raw.c_cc[VTIME] = 0;
|
|
16556
16561
|
return raw;
|
|
16557
16562
|
}
|
|
16558
|
-
function ttyOps(kernel) {
|
|
16563
|
+
function ttyOps(kernel, syncKernel) {
|
|
16559
16564
|
const saved = /* @__PURE__ */ new Map();
|
|
16560
16565
|
const terminalOf = async (fd) => (await kernel.json({ op: "fd-info", fd })).terminal ?? `fd ${fd}`;
|
|
16561
16566
|
const getAttr = async (fd) => await kernel.json({ op: "tty-get", fd });
|
|
@@ -16607,8 +16612,27 @@ function ttyOps(kernel) {
|
|
|
16607
16612
|
await back.catch(() => void 0);
|
|
16608
16613
|
}
|
|
16609
16614
|
};
|
|
16615
|
+
const syncGet = (fd) => syncKernel.json({ op: "tty-get", fd });
|
|
16616
|
+
const syncSet = (fd, termios) => void syncKernel.json({ op: "tty-set", fd, termios: copy(termios) });
|
|
16617
|
+
const syncTty = {
|
|
16618
|
+
getAttr: syncGet,
|
|
16619
|
+
setAttr: syncSet,
|
|
16620
|
+
setRaw(fd, raw) {
|
|
16621
|
+
const info = syncKernel.json({ op: "fd-info", fd });
|
|
16622
|
+
const terminal = info.terminal ?? `fd ${fd}`;
|
|
16623
|
+
if (!raw) {
|
|
16624
|
+
const original = saved.get(terminal);
|
|
16625
|
+
saved.delete(terminal);
|
|
16626
|
+
if (original) syncSet(fd, original.termios);
|
|
16627
|
+
return;
|
|
16628
|
+
}
|
|
16629
|
+
const current = syncGet(fd);
|
|
16630
|
+
if (!saved.has(terminal)) saved.set(terminal, { fd, termios: current });
|
|
16631
|
+
syncSet(fd, rawOf(current));
|
|
16632
|
+
}
|
|
16633
|
+
};
|
|
16610
16634
|
const modes = () => [...saved].reverse().map(([terminal, { fd, termios }]) => ({ terminal, fd, termios }));
|
|
16611
|
-
return { tty, restore, modes };
|
|
16635
|
+
return { tty, syncTty, restore, modes };
|
|
16612
16636
|
}
|
|
16613
16637
|
var BRKINT, INPCK, ISTRIP, ICRNL, IXON, ONLCR, CS8, ISIG, ICANON2, ECHO2, IEXTEN, VTIME, VMIN;
|
|
16614
16638
|
var init_js_tty = __esm({
|
|
@@ -16834,6 +16858,26 @@ var init_js_websocket = __esm({
|
|
|
16834
16858
|
});
|
|
16835
16859
|
|
|
16836
16860
|
// src/process/js/js-context.ts
|
|
16861
|
+
function fdList(list) {
|
|
16862
|
+
const fds = [...list ?? []];
|
|
16863
|
+
if (!fds.every((fd) => Number.isInteger(fd) && fd >= 0))
|
|
16864
|
+
throw new JsCallError("EINVAL", "select", "ERR_INVALID_ARG_VALUE: fds must be integers >= 0");
|
|
16865
|
+
return fds;
|
|
16866
|
+
}
|
|
16867
|
+
async function selectOp(kernel, sets, signal) {
|
|
16868
|
+
signal?.throwIfAborted();
|
|
16869
|
+
const read2 = fdList(sets.read);
|
|
16870
|
+
const write2 = fdList(sets.write);
|
|
16871
|
+
const timeoutMs2 = sets.timeoutMs ?? -1;
|
|
16872
|
+
if (!Number.isFinite(timeoutMs2))
|
|
16873
|
+
throw new JsCallError("EINVAL", "select", "ERR_INVALID_ARG_VALUE: timeoutMs");
|
|
16874
|
+
const r = await kernel.blocking(
|
|
16875
|
+
{ op: "fd-select", read: read2, write: write2, timeoutMs: Math.max(-1, Math.floor(timeoutMs2)) },
|
|
16876
|
+
signal
|
|
16877
|
+
);
|
|
16878
|
+
const got = r.ok && r.kind === "json" ? r.json : {};
|
|
16879
|
+
return { read: got.read ?? [], write: got.write ?? [] };
|
|
16880
|
+
}
|
|
16837
16881
|
function listen(listeners, listener) {
|
|
16838
16882
|
const own = (error, promise) => listener(error, promise);
|
|
16839
16883
|
listeners.add(own);
|
|
@@ -16923,7 +16967,17 @@ function writer(kernel, info, pid) {
|
|
|
16923
16967
|
writes.delete(w);
|
|
16924
16968
|
}
|
|
16925
16969
|
};
|
|
16926
|
-
|
|
16970
|
+
const writeSome = async (fd, data) => {
|
|
16971
|
+
const i = await info(fd);
|
|
16972
|
+
if (writeDevice(i)) return data.length;
|
|
16973
|
+
const body = data.subarray(0, MAX_IO);
|
|
16974
|
+
const r = await kernel.raw({ op: "fd-write", fd, body, nonblock: true });
|
|
16975
|
+
if (r.ok) return written(r, body.length);
|
|
16976
|
+
if (brokenPipe(callError(r, "fd-write"), i))
|
|
16977
|
+
await kernel.call({ op: "proc-kill", pid, sig: SIG.PIPE });
|
|
16978
|
+
throw callError(r, "fd-write");
|
|
16979
|
+
};
|
|
16980
|
+
return { writes, writeAll, writeSome };
|
|
16927
16981
|
}
|
|
16928
16982
|
function readable2(read2) {
|
|
16929
16983
|
return new ReadableStream(
|
|
@@ -17071,6 +17125,24 @@ function pendingReads(kernel, info, random) {
|
|
|
17071
17125
|
};
|
|
17072
17126
|
return { read: read2, closing };
|
|
17073
17127
|
}
|
|
17128
|
+
function tracked2(pending, writeAll, writeSome) {
|
|
17129
|
+
return (fd, data, options) => {
|
|
17130
|
+
const bytes = typeof data === "string" ? encoder4.encode(data) : data;
|
|
17131
|
+
let settle;
|
|
17132
|
+
const settled2 = new Promise((resolve) => settle = resolve);
|
|
17133
|
+
pending.add(settled2);
|
|
17134
|
+
return (async () => {
|
|
17135
|
+
try {
|
|
17136
|
+
if (options?.nonblock === true) return await writeSome(fd, bytes);
|
|
17137
|
+
await writeAll(fd, bytes);
|
|
17138
|
+
return bytes.length;
|
|
17139
|
+
} finally {
|
|
17140
|
+
pending.delete(settled2);
|
|
17141
|
+
settle();
|
|
17142
|
+
}
|
|
17143
|
+
})();
|
|
17144
|
+
};
|
|
17145
|
+
}
|
|
17074
17146
|
function createContext(o) {
|
|
17075
17147
|
const { kernel } = o;
|
|
17076
17148
|
const infos = /* @__PURE__ */ new Map();
|
|
@@ -17097,22 +17169,13 @@ function createContext(o) {
|
|
|
17097
17169
|
return got;
|
|
17098
17170
|
};
|
|
17099
17171
|
const { read: read2, closing } = pendingReads(kernel, info, random);
|
|
17100
|
-
const { writes, writeAll } = writer(kernel, info, o.pid);
|
|
17101
|
-
const write2 = (
|
|
17102
|
-
|
|
17103
|
-
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
try {
|
|
17108
|
-
await writeAll(fd, bytes);
|
|
17109
|
-
} finally {
|
|
17110
|
-
pending.delete(settled2);
|
|
17111
|
-
settle();
|
|
17112
|
-
}
|
|
17113
|
-
})();
|
|
17114
|
-
};
|
|
17115
|
-
const writable2 = (fd) => new WritableStream({ write: (chunk) => write2(fd, chunk) });
|
|
17172
|
+
const { writes, writeAll, writeSome } = writer(kernel, info, o.pid);
|
|
17173
|
+
const write2 = tracked2(pending, writeAll, writeSome);
|
|
17174
|
+
const writable2 = (fd) => new WritableStream({
|
|
17175
|
+
write: async (chunk) => {
|
|
17176
|
+
await write2(fd, chunk);
|
|
17177
|
+
}
|
|
17178
|
+
});
|
|
17116
17179
|
const statOf = async (op, path) => {
|
|
17117
17180
|
const abs = resolve(path);
|
|
17118
17181
|
if (inDev(abs)) return devAsync(kernel, devStat(abs, op === "stat"));
|
|
@@ -17138,10 +17201,11 @@ function createContext(o) {
|
|
|
17138
17201
|
const lane = o.lane ?? laneOf(void 0);
|
|
17139
17202
|
if (o.lane && o.lane !== noLane) kernel.syncLane = o.lane;
|
|
17140
17203
|
const syncKernel = new JsSyncKernel(lane, kernel, unwind);
|
|
17141
|
-
const terminal = ttyOps(kernel);
|
|
17204
|
+
const terminal = ttyOps(kernel, syncKernel);
|
|
17142
17205
|
const shared = { pid: o.pid, resolve, random, infos, handles, closing };
|
|
17143
17206
|
const sync = {
|
|
17144
17207
|
kernel: KERNEL_INFO,
|
|
17208
|
+
tty: terminal.syncTty,
|
|
17145
17209
|
...watchingSyncOps(kernel, syncKernel, shared),
|
|
17146
17210
|
run: (options) => runSync(syncKernel, { env: o.env, cwd: o.cwd, resolve, signal: signalNumber }, options),
|
|
17147
17211
|
spawn: (options) => spawnSync(options),
|
|
@@ -17186,6 +17250,7 @@ function createContext(o) {
|
|
|
17186
17250
|
},
|
|
17187
17251
|
socketpair: async () => await kernel.json({ op: "sock-pair", domain: "unix", type: "stream" }),
|
|
17188
17252
|
pipe: async () => await kernel.json({ op: "fd-pipe" }),
|
|
17253
|
+
select: (sets, options) => selectOp(kernel, sets, options?.signal),
|
|
17189
17254
|
async fdStatus(fd) {
|
|
17190
17255
|
const type = typeOf(await info(fd));
|
|
17191
17256
|
return { type, tty: type === "tty", seekable: type === "file" };
|