@ai-ecoverse/slicc-kernel 1.109.0 → 1.110.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 +20 -2
- package/dist/kernel-worker.js +59 -12
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +59 -12
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +1 -1
- package/dist/types/commands.d.ts +6 -0
- package/dist/types/cron/command.d.ts +1 -1
- package/dist/types/launcher.d.ts +2 -1
- package/package.json +1 -6
|
@@ -5204,7 +5204,7 @@ var KERNEL_VERSION, OS_RELEASE;
|
|
|
5204
5204
|
var init_version = __esm({
|
|
5205
5205
|
"src/version.ts"() {
|
|
5206
5206
|
"use strict";
|
|
5207
|
-
KERNEL_VERSION = true ? "1.
|
|
5207
|
+
KERNEL_VERSION = true ? "1.110.0" : "0.0.0-dev";
|
|
5208
5208
|
OS_RELEASE = "6.0.0-slicc";
|
|
5209
5209
|
}
|
|
5210
5210
|
});
|
package/dist/node.js
CHANGED
|
@@ -5975,14 +5975,14 @@ var WsReader = class {
|
|
|
5975
5975
|
}
|
|
5976
5976
|
};
|
|
5977
5977
|
function switchingHead(accept2, protocol = "") {
|
|
5978
|
-
const
|
|
5978
|
+
const chosen2 = protocol ? `Sec-WebSocket-Protocol: ${protocol}\r
|
|
5979
5979
|
` : "";
|
|
5980
5980
|
return latin1Bytes(
|
|
5981
5981
|
`HTTP/1.1 101 Switching Protocols\r
|
|
5982
5982
|
Upgrade: websocket\r
|
|
5983
5983
|
Connection: Upgrade\r
|
|
5984
5984
|
Sec-WebSocket-Accept: ${accept2}\r
|
|
5985
|
-
${
|
|
5985
|
+
${chosen2}\r
|
|
5986
5986
|
`
|
|
5987
5987
|
);
|
|
5988
5988
|
}
|
|
@@ -6435,7 +6435,7 @@ function satisfies(version, range2) {
|
|
|
6435
6435
|
}
|
|
6436
6436
|
|
|
6437
6437
|
// src/version.ts
|
|
6438
|
-
var KERNEL_VERSION = true ? "1.
|
|
6438
|
+
var KERNEL_VERSION = true ? "1.110.0" : "0.0.0-dev";
|
|
6439
6439
|
var OS_RELEASE = "6.0.0-slicc";
|
|
6440
6440
|
function procVersion() {
|
|
6441
6441
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -6483,6 +6483,37 @@ function argsOf(pkg, raw) {
|
|
|
6483
6483
|
if (!raw.every((arg) => typeof arg === "string")) return void 0;
|
|
6484
6484
|
return raw.map((arg) => arg.replace(PACKAGE, pkg));
|
|
6485
6485
|
}
|
|
6486
|
+
var warnedVariants = /* @__PURE__ */ new Set();
|
|
6487
|
+
function variantOf(pkg, raw) {
|
|
6488
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return void 0;
|
|
6489
|
+
const { env, wasm } = raw;
|
|
6490
|
+
const path = inside(pkg, wasm);
|
|
6491
|
+
if (!path || !env || typeof env !== "object" || Array.isArray(env)) return void 0;
|
|
6492
|
+
const pairs = Object.entries(env);
|
|
6493
|
+
if (pairs.length === 0) return void 0;
|
|
6494
|
+
if (!pairs.every(([key, value2]) => ENV_KEY.test(key) && typeof value2 === "string")) {
|
|
6495
|
+
return void 0;
|
|
6496
|
+
}
|
|
6497
|
+
return { env: Object.fromEntries(pairs), wasm: path };
|
|
6498
|
+
}
|
|
6499
|
+
function variantsOf(pkg, name2, raw) {
|
|
6500
|
+
if (raw === void 0) return void 0;
|
|
6501
|
+
const variants = Array.isArray(raw) ? raw.map((one) => variantOf(pkg, one)) : [void 0];
|
|
6502
|
+
if (variants.every((one) => one !== void 0)) {
|
|
6503
|
+
return variants.length > 0 ? variants : void 0;
|
|
6504
|
+
}
|
|
6505
|
+
const key = `${pkg}:${name2}:${JSON.stringify(raw)}`;
|
|
6506
|
+
if (!warnedVariants.has(key)) {
|
|
6507
|
+
warnedVariants.add(key);
|
|
6508
|
+
console.warn(`slicc-kernel: ${pkg}: ${name2}: ignoring malformed "variants", running its wasm`);
|
|
6509
|
+
}
|
|
6510
|
+
return void 0;
|
|
6511
|
+
}
|
|
6512
|
+
function variantFor(variants, env) {
|
|
6513
|
+
return variants?.find(
|
|
6514
|
+
(one) => Object.entries(one.env).every(([key, value2]) => env[key] === value2)
|
|
6515
|
+
)?.wasm;
|
|
6516
|
+
}
|
|
6486
6517
|
function abiOf(raw, fallback) {
|
|
6487
6518
|
const abi = raw ?? fallback;
|
|
6488
6519
|
return abi === "emscripten" || abi === "wasi" || abi === "js" ? abi : void 0;
|
|
@@ -6516,6 +6547,7 @@ function commandOf(pkg, name2, raw, packageAbi, shared) {
|
|
|
6516
6547
|
const glue = abi === "wasi" ? wasm : inside(pkg, raw.glue);
|
|
6517
6548
|
if (!abi || !glue || !wasm) return void 0;
|
|
6518
6549
|
const imports = abi === "wasi" ? inside(pkg, raw.imports) : void 0;
|
|
6550
|
+
const variants = variantsOf(pkg, name2, raw.variants);
|
|
6519
6551
|
return {
|
|
6520
6552
|
name: name2,
|
|
6521
6553
|
abi,
|
|
@@ -6527,7 +6559,8 @@ function commandOf(pkg, name2, raw, packageAbi, shared) {
|
|
|
6527
6559
|
...abi === "wasi" && raw.preopenRoot === true ? { preopenRoot: true } : {},
|
|
6528
6560
|
...args ? { args } : {},
|
|
6529
6561
|
...withEnv,
|
|
6530
|
-
...imports ? { imports } : {}
|
|
6562
|
+
...imports ? { imports } : {},
|
|
6563
|
+
...variants ? { variants } : {}
|
|
6531
6564
|
};
|
|
6532
6565
|
}
|
|
6533
6566
|
function commandsOf(pkg, manifest) {
|
|
@@ -6847,13 +6880,14 @@ var CRONTAB_SOURCE = `export default async function crontab(ctx) {
|
|
|
6847
6880
|
let text;
|
|
6848
6881
|
try {
|
|
6849
6882
|
if (file === "-") {
|
|
6883
|
+
const stream = new TextDecoder();
|
|
6850
6884
|
const parts = [];
|
|
6851
6885
|
for (;;) {
|
|
6852
6886
|
const chunk = await ctx.read(0);
|
|
6853
6887
|
if (chunk.length === 0) break;
|
|
6854
|
-
parts.push(decode(chunk));
|
|
6888
|
+
parts.push(stream.decode(chunk, { stream: true }));
|
|
6855
6889
|
}
|
|
6856
|
-
text = parts.join("");
|
|
6890
|
+
text = parts.join("") + stream.decode();
|
|
6857
6891
|
} else text = decode(await ctx.fs.readFile(ctx.resolve(file)));
|
|
6858
6892
|
} catch (err) {
|
|
6859
6893
|
await say(2, "crontab: " + file + ": " + (err && err.code ? err.code : String(err)) + "\\n");
|
|
@@ -7399,7 +7433,10 @@ var CronService = class {
|
|
|
7399
7433
|
const account = await this.host.lookup(job.user);
|
|
7400
7434
|
if (account) out.push({ source: "system", account, job });
|
|
7401
7435
|
}
|
|
7402
|
-
const names = await fs.readdir(SPOOL_DIR).catch(() =>
|
|
7436
|
+
const names = await fs.readdir(SPOOL_DIR).catch((err) => {
|
|
7437
|
+
if (err?.code === "ENOENT") return [];
|
|
7438
|
+
throw err;
|
|
7439
|
+
});
|
|
7403
7440
|
for (const name2 of names.sort()) {
|
|
7404
7441
|
if (name2.startsWith(".") || name2.endsWith("~")) continue;
|
|
7405
7442
|
const path = `${SPOOL_DIR}/${name2}`;
|
|
@@ -21991,9 +22028,18 @@ function targetOf(command) {
|
|
|
21991
22028
|
...command.env ? { env: command.env } : {},
|
|
21992
22029
|
...command.unset ? { unset: command.unset } : {},
|
|
21993
22030
|
...command.imports ? { imports: command.imports } : {},
|
|
21994
|
-
...command.preopenRoot ? { preopenRoot: true } : {}
|
|
22031
|
+
...command.preopenRoot ? { preopenRoot: true } : {},
|
|
22032
|
+
...command.variants ? { variants: command.variants } : {}
|
|
21995
22033
|
};
|
|
21996
22034
|
}
|
|
22035
|
+
function chosen(planned, env) {
|
|
22036
|
+
const { target } = planned;
|
|
22037
|
+
const wasm = variantFor(target.variants, env);
|
|
22038
|
+
if (wasm === void 0) return planned;
|
|
22039
|
+
const { asked: _asked, ...rest2 } = target;
|
|
22040
|
+
const glue = target.abi === "wasi" ? wasm : target.glue;
|
|
22041
|
+
return { ...planned, target: { ...rest2, wasm, glue } };
|
|
22042
|
+
}
|
|
21997
22043
|
function withScriptEnv(target, command) {
|
|
21998
22044
|
if (!command) return target;
|
|
21999
22045
|
return {
|
|
@@ -22904,14 +22950,15 @@ var Launcher = class {
|
|
|
22904
22950
|
...target.preopenRoot ? { preopenRoot: true } : {}
|
|
22905
22951
|
};
|
|
22906
22952
|
}
|
|
22907
|
-
async launch(
|
|
22908
|
-
const { target, args } = planned;
|
|
22953
|
+
async launch(asked, req) {
|
|
22909
22954
|
const cwd = await physicalPathAsync(this.base, req.cwd);
|
|
22910
22955
|
const seen = { ...req.env, HOSTNAME: this.hostname, cwd };
|
|
22911
|
-
const env = { ...expandDefaults(target.env, seen), ...req.env };
|
|
22912
|
-
for (const key of target.unset ?? []) delete env[key];
|
|
22956
|
+
const env = { ...expandDefaults(asked.target.env, seen), ...req.env };
|
|
22957
|
+
for (const key of asked.target.unset ?? []) delete env[key];
|
|
22913
22958
|
delete env[TICKET_ENV];
|
|
22914
22959
|
env.HOSTNAME = this.hostname;
|
|
22960
|
+
const planned = chosen(asked, env);
|
|
22961
|
+
const { target, args } = planned;
|
|
22915
22962
|
let program;
|
|
22916
22963
|
await this.pnpmReady();
|
|
22917
22964
|
try {
|