@ai-ecoverse/slicc-kernel 1.77.1 → 1.78.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 -10
- package/dist/driver-worker.js +73 -4
- package/dist/driver-worker.js.map +3 -3
- package/dist/index.js +104 -14
- package/dist/index.js.map +4 -4
- package/dist/kernel-worker.js +20 -6
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-driver-worker.js +73 -4
- package/dist/node-driver-worker.js.map +3 -3
- package/dist/node-process-worker.js +18 -2
- package/dist/node-process-worker.js.map +2 -2
- package/dist/node.js +57 -15
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +18 -2
- package/dist/process-worker.js.map +2 -2
- package/package.json +1 -1
package/dist/node.js
CHANGED
|
@@ -93,6 +93,7 @@ function portCdpHook(ask, gone) {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
// src/fs/types.ts
|
|
96
|
+
var DEFAULT_USERS = "enforce";
|
|
96
97
|
function rangedOps(fs) {
|
|
97
98
|
const { pread, pwrite, truncate } = fs;
|
|
98
99
|
if (!pread || !pwrite || !truncate) return void 0;
|
|
@@ -1684,6 +1685,18 @@ function isSignal(sig) {
|
|
|
1684
1685
|
function sigbit(sig) {
|
|
1685
1686
|
return 1 << sig;
|
|
1686
1687
|
}
|
|
1688
|
+
function signalName(sig) {
|
|
1689
|
+
const name2 = Object.entries(SIG).find(([, n]) => n === sig)?.[0];
|
|
1690
|
+
return name2 === void 0 ? void 0 : `SIG${name2}`;
|
|
1691
|
+
}
|
|
1692
|
+
function quiet(p) {
|
|
1693
|
+
p.catch(() => void 0);
|
|
1694
|
+
return p;
|
|
1695
|
+
}
|
|
1696
|
+
function signalField(sig) {
|
|
1697
|
+
const name2 = signalName(sig);
|
|
1698
|
+
return name2 ? { signal: name2 } : {};
|
|
1699
|
+
}
|
|
1687
1700
|
var SIGNAL_BY_NAME = {
|
|
1688
1701
|
SIGINT: SIG.INT,
|
|
1689
1702
|
SIGTERM: SIG.TERM,
|
|
@@ -2782,7 +2795,8 @@ function serveClient(port, host) {
|
|
|
2782
2795
|
reply(req.id, { started: session.pid });
|
|
2783
2796
|
}
|
|
2784
2797
|
try {
|
|
2785
|
-
|
|
2798
|
+
const status = await session.exited;
|
|
2799
|
+
return { result: status, ...signalField(session.termsig()) };
|
|
2786
2800
|
} finally {
|
|
2787
2801
|
terminals.delete(req.id);
|
|
2788
2802
|
}
|
|
@@ -2807,7 +2821,7 @@ function serveClient(port, host) {
|
|
|
2807
2821
|
});
|
|
2808
2822
|
if (leader === void 0) throw fsError("ENOENT", `${req.argv[0] ?? ""}: command not found`);
|
|
2809
2823
|
if (!l.list().some((p) => p.pgid === leader)) groups.delete(leader);
|
|
2810
|
-
return { result: result.status };
|
|
2824
|
+
return { result: result.status, ...signalField(result.signal) };
|
|
2811
2825
|
}
|
|
2812
2826
|
async function handle(req) {
|
|
2813
2827
|
if (host.scope === "transport" && req.op !== "detach") {
|
|
@@ -2868,8 +2882,8 @@ function serveClient(port, host) {
|
|
|
2868
2882
|
}
|
|
2869
2883
|
const req = data;
|
|
2870
2884
|
handle(req).then(
|
|
2871
|
-
({ result, transfer }) => {
|
|
2872
|
-
reply(req.id, { result }, transfer);
|
|
2885
|
+
({ result, signal, transfer }) => {
|
|
2886
|
+
reply(req.id, { result, ...signal ? { signal } : {} }, transfer);
|
|
2873
2887
|
if (req.op === "detach") detach(req.kill === true);
|
|
2874
2888
|
},
|
|
2875
2889
|
(err) => {
|
|
@@ -3605,6 +3619,7 @@ var OpfsFs = class {
|
|
|
3605
3619
|
}
|
|
3606
3620
|
}
|
|
3607
3621
|
async current(path, dir) {
|
|
3622
|
+
if (dir === this.root) return path === "/";
|
|
3608
3623
|
if (performance.now() - (this.checked.get(dir) ?? -CHECK_MS) < CHECK_MS) return true;
|
|
3609
3624
|
const where = await this.root.resolve(dir).catch(() => null);
|
|
3610
3625
|
if (where === null || `/${where.join("/")}` !== path) return false;
|
|
@@ -14860,22 +14875,22 @@ function keepWatching(loop, signal) {
|
|
|
14860
14875
|
const stop = () => session2.abort();
|
|
14861
14876
|
signal.addEventListener("abort", stop);
|
|
14862
14877
|
let timer;
|
|
14863
|
-
const
|
|
14878
|
+
const quiet2 = () => {
|
|
14864
14879
|
clearTimeout(timer);
|
|
14865
14880
|
timer = setTimeout(stop, silenceMs);
|
|
14866
14881
|
};
|
|
14867
14882
|
let opened2 = false;
|
|
14868
14883
|
try {
|
|
14869
14884
|
const client = await loop.connect();
|
|
14870
|
-
|
|
14885
|
+
quiet2();
|
|
14871
14886
|
await client.watch(
|
|
14872
14887
|
session2.signal,
|
|
14873
14888
|
(event) => {
|
|
14874
|
-
|
|
14889
|
+
quiet2();
|
|
14875
14890
|
if (!event.ping) loop.event(event);
|
|
14876
14891
|
},
|
|
14877
14892
|
() => {
|
|
14878
|
-
|
|
14893
|
+
quiet2();
|
|
14879
14894
|
opened2 = true;
|
|
14880
14895
|
up = true;
|
|
14881
14896
|
loop.up(client);
|
|
@@ -17557,6 +17572,7 @@ var Launcher = class {
|
|
|
17557
17572
|
return {
|
|
17558
17573
|
pid: handle.pid,
|
|
17559
17574
|
exited: handle.exited,
|
|
17575
|
+
termsig: () => handle.termsig(),
|
|
17560
17576
|
write: (bytes) => tty.receive(bytes),
|
|
17561
17577
|
resize: (cols, rows) => tty.resize(cols, rows),
|
|
17562
17578
|
signal: (sig) => this.jobs.signalForeground(tty, leader, sig),
|
|
@@ -17601,7 +17617,8 @@ var Launcher = class {
|
|
|
17601
17617
|
});
|
|
17602
17618
|
options.onStarted?.(handle.pid);
|
|
17603
17619
|
const status = await handle.exited;
|
|
17604
|
-
|
|
17620
|
+
const signal = handle.termsig();
|
|
17621
|
+
return { status, ...signal ? { signal } : {}, stdout: concat5(out), stderr: concat5(err) };
|
|
17605
17622
|
}
|
|
17606
17623
|
};
|
|
17607
17624
|
|
|
@@ -18410,6 +18427,7 @@ var Channel = class {
|
|
|
18410
18427
|
return;
|
|
18411
18428
|
}
|
|
18412
18429
|
this.pending.delete(reply.id);
|
|
18430
|
+
call.ended?.(reply.signal);
|
|
18413
18431
|
if (reply.error !== void 0) call.reject(new KernelCallError(reply.error, reply.code));
|
|
18414
18432
|
else call.resolve(reply.result);
|
|
18415
18433
|
}
|
|
@@ -18458,12 +18476,14 @@ async function spawnOn(channel, argv, opts) {
|
|
|
18458
18476
|
if (opts.user !== void 0) await since(channel, 8, "spawn as a user", async () => {
|
|
18459
18477
|
});
|
|
18460
18478
|
const started = Promise.withResolvers();
|
|
18479
|
+
let endedBy;
|
|
18461
18480
|
const options = { ...rest2, ...stdin !== void 0 ? { stdin: bytesOf2(stdin) } : {} };
|
|
18462
18481
|
const { done: done4 } = channel.request(
|
|
18463
18482
|
{ op: "spawn", argv, options },
|
|
18464
18483
|
{
|
|
18465
18484
|
output: (fd, bytes) => (fd === 1 ? onStdout : onStderr)?.(bytes),
|
|
18466
|
-
started: started.resolve
|
|
18485
|
+
started: started.resolve,
|
|
18486
|
+
ended: (signal) => endedBy = signal
|
|
18467
18487
|
}
|
|
18468
18488
|
);
|
|
18469
18489
|
done4.catch(started.reject);
|
|
@@ -18473,9 +18493,18 @@ async function spawnOn(channel, argv, opts) {
|
|
|
18473
18493
|
pid,
|
|
18474
18494
|
pgid,
|
|
18475
18495
|
exited: done4,
|
|
18496
|
+
ended: endedOf(done4, () => endedBy),
|
|
18476
18497
|
signal: async (name2 = "SIGTERM") => void await channel.call({ op: "kill", pid: -pgid, signal: name2 })
|
|
18477
18498
|
};
|
|
18478
18499
|
}
|
|
18500
|
+
function endedOf(done4, signal) {
|
|
18501
|
+
return quiet(
|
|
18502
|
+
done4.then((status) => {
|
|
18503
|
+
const by = signal();
|
|
18504
|
+
return { status, ...by ? { signal: by } : {} };
|
|
18505
|
+
})
|
|
18506
|
+
);
|
|
18507
|
+
}
|
|
18479
18508
|
async function runOn(channel, argv, opts) {
|
|
18480
18509
|
const { onStdout, onStderr, ...rest2 } = opts;
|
|
18481
18510
|
const chunks2 = { 1: [], 2: [] };
|
|
@@ -18489,9 +18518,15 @@ async function runOn(channel, argv, opts) {
|
|
|
18489
18518
|
onStdout: tee(1, onStdout),
|
|
18490
18519
|
onStderr: tee(2, onStderr)
|
|
18491
18520
|
});
|
|
18492
|
-
const status = await child.
|
|
18521
|
+
const { status, signal } = await child.ended;
|
|
18493
18522
|
const text = (fd) => new TextDecoder().decode(concat6(chunks2[fd]));
|
|
18494
|
-
return {
|
|
18523
|
+
return {
|
|
18524
|
+
pid: child.pid,
|
|
18525
|
+
status,
|
|
18526
|
+
...signal ? { signal } : {},
|
|
18527
|
+
stdout: text(1),
|
|
18528
|
+
stderr: text(2)
|
|
18529
|
+
};
|
|
18495
18530
|
}
|
|
18496
18531
|
async function terminalOn(channel, argv, opts) {
|
|
18497
18532
|
const { onData, ...options } = opts;
|
|
@@ -18500,11 +18535,13 @@ async function terminalOn(channel, argv, opts) {
|
|
|
18500
18535
|
let listener = onData ?? null;
|
|
18501
18536
|
const backlog = [];
|
|
18502
18537
|
const started = Promise.withResolvers();
|
|
18538
|
+
let endedBy;
|
|
18503
18539
|
const { id: id2, done: done4 } = channel.request(
|
|
18504
18540
|
{ op: "open-terminal", argv, options },
|
|
18505
18541
|
{
|
|
18506
18542
|
output: (_fd, bytes) => listener ? listener(bytes) : backlog.push(bytes),
|
|
18507
|
-
started: started.resolve
|
|
18543
|
+
started: started.resolve,
|
|
18544
|
+
ended: (signal) => endedBy = signal
|
|
18508
18545
|
}
|
|
18509
18546
|
);
|
|
18510
18547
|
done4.catch(started.reject);
|
|
@@ -18513,6 +18550,7 @@ async function terminalOn(channel, argv, opts) {
|
|
|
18513
18550
|
return {
|
|
18514
18551
|
pid,
|
|
18515
18552
|
exited: done4,
|
|
18553
|
+
ended: endedOf(done4, () => endedBy),
|
|
18516
18554
|
get onData() {
|
|
18517
18555
|
return listener;
|
|
18518
18556
|
},
|
|
@@ -18748,7 +18786,7 @@ async function createNodeKernel(options = {}) {
|
|
|
18748
18786
|
...hostfsFetchOf(options),
|
|
18749
18787
|
...options.cdp ? { cdp: options.cdp } : {},
|
|
18750
18788
|
...options.hostname !== void 0 ? { hostname: options.hostname } : {},
|
|
18751
|
-
|
|
18789
|
+
users: options.users === void 0 ? DEFAULT_USERS : options.users,
|
|
18752
18790
|
...options.onDenial ? { onDenial: options.onDenial } : {},
|
|
18753
18791
|
...options.protect ? { protect: options.protect } : {},
|
|
18754
18792
|
...options.sealed ? { sealed: options.sealed } : {},
|
|
@@ -18778,6 +18816,7 @@ async function createNodeKernel(options = {}) {
|
|
|
18778
18816
|
);
|
|
18779
18817
|
return {
|
|
18780
18818
|
status: result.status,
|
|
18819
|
+
...signalField(result.signal),
|
|
18781
18820
|
stdout: decoder4.decode(result.stdout),
|
|
18782
18821
|
stderr: decoder4.decode(result.stderr)
|
|
18783
18822
|
};
|
|
@@ -18794,7 +18833,10 @@ async function createNodeKernel(options = {}) {
|
|
|
18794
18833
|
);
|
|
18795
18834
|
return {
|
|
18796
18835
|
pid: session.pid,
|
|
18797
|
-
exited: guard2(() => session.exited),
|
|
18836
|
+
exited: quiet(guard2(() => session.exited)),
|
|
18837
|
+
ended: quiet(
|
|
18838
|
+
guard2(async () => ({ status: await session.exited, ...signalField(session.termsig()) }))
|
|
18839
|
+
),
|
|
18798
18840
|
get onData() {
|
|
18799
18841
|
return listener;
|
|
18800
18842
|
},
|