@ai-ecoverse/slicc-kernel 1.160.0 → 1.160.2

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/dist/node.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // src/node.ts
2
+ import { createHash } from "node:crypto";
2
3
  import { isAbsolute } from "node:path";
3
4
  import { MessageChannel as MessageChannel2, Worker } from "node:worker_threads";
4
5
 
@@ -3672,7 +3673,7 @@ function satisfies(version, range2) {
3672
3673
  }
3673
3674
 
3674
3675
  // src/version.ts
3675
- var KERNEL_VERSION = true ? "1.160.0" : "0.0.0-dev";
3676
+ var KERNEL_VERSION = true ? "1.160.2" : "0.0.0-dev";
3676
3677
  var OS_RELEASE = "6.0.0-slicc";
3677
3678
  function procVersion() {
3678
3679
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -10968,7 +10969,8 @@ async function dispatchSyncFs(req) {
10968
10969
  const entry = resolveSyncFsToken(req.token);
10969
10970
  if (!entry) return { ok: false, errno: "EACCES", message: "sync-fs: unknown or revoked token" };
10970
10971
  if (req.identity && req.op === "create") return created(entry, req);
10971
- if (!req.identity || !IDENTITY_OPS.has(req.op)) return dispatchOne(entry, req);
10972
+ if (!req.identity || !IDENTITY_OPS.has(req.op))
10973
+ return devsOf(entry, req, await dispatchOne(entry, req));
10972
10974
  const { fs, cwd } = entry;
10973
10975
  const path = fs.resolvePath(cwd, req.path);
10974
10976
  const identified = async (held) => {
@@ -10986,6 +10988,30 @@ async function dispatchSyncFs(req) {
10986
10988
  return toErrno(err);
10987
10989
  }
10988
10990
  }
10991
+ var DEV_PROBES = /* @__PURE__ */ new Set(["stat", "lstat", "read", "exists"]);
10992
+ async function devsOf(entry, req, result) {
10993
+ if (req.devs !== true || !DEV_PROBES.has(req.op)) return result;
10994
+ const absent2 = result.ok ? result.kind === "json" && result.json === false : result.errno === "ENOENT";
10995
+ if (!absent2) return result;
10996
+ const dev = await devTarget(entry, req, entry.fs.resolvePath(entry.cwd, req.path));
10997
+ if (dev === void 0) return result;
10998
+ return result.ok ? json2({ dev }) : { ...result, dev };
10999
+ }
11000
+ async function devTarget(entry, req, path) {
11001
+ const look = async (op, at) => {
11002
+ const r = await dispatchPath(entry, { token: req.token, op, path: at });
11003
+ if (!r.ok) throw new Error(r.errno);
11004
+ return r.json;
11005
+ };
11006
+ const resolved2 = await physicalPathAsync(
11007
+ {
11008
+ lstat: async (p) => await look("lstat", p),
11009
+ readlink: async (p) => String(await look("readlink", p))
11010
+ },
11011
+ path
11012
+ );
11013
+ return resolved2 !== path && (resolved2 === "/dev" || resolved2.startsWith("/dev/")) ? resolved2 : void 0;
11014
+ }
10989
11015
  async function created(entry, req) {
10990
11016
  const result = await dispatchOne(entry, req);
10991
11017
  if (!result.ok) return result;
@@ -11172,7 +11198,8 @@ function encodeSabResult(result) {
11172
11198
  JSON.stringify({
11173
11199
  errno: result.errno,
11174
11200
  message: result.message,
11175
- ...result.direct ? { direct: true } : {}
11201
+ ...result.direct ? { direct: true } : {},
11202
+ ...result.dev !== void 0 ? { dev: result.dev } : {}
11176
11203
  })
11177
11204
  )
11178
11205
  };
@@ -30900,7 +30927,7 @@ var Launcher = class {
30900
30927
  this.moduleUrls.delete(source);
30901
30928
  this.moduleUrls.set(source, known);
30902
30929
  known.users++;
30903
- return known.made.url;
30930
+ return known.made;
30904
30931
  }
30905
30932
  const held = {
30906
30933
  made: (this.moduleUrl ?? dataModuleUrl)(source),
@@ -30915,7 +30942,7 @@ var Launcher = class {
30915
30942
  entry.evicted = true;
30916
30943
  this.releaseUrl(entry);
30917
30944
  }
30918
- return held.made.url;
30945
+ return held.made;
30919
30946
  }
30920
30947
  heldUrl(program) {
30921
30948
  const held = program.abi === "js" && program.url ? this.urlsInUse.get(program.url) : void 0;
@@ -30996,8 +31023,8 @@ var Launcher = class {
30996
31023
  }
30997
31024
  const { asked } = target;
30998
31025
  if (target.abi === "js") {
30999
- const url = this.urlFor(await this.text(target.wasm, caller, asked));
31000
- return { abi: "js", glue: "", url, path: target.wasm };
31026
+ const { url, source } = this.urlFor(await this.text(target.wasm, caller, asked));
31027
+ return { abi: "js", glue: "", url, path: target.wasm, ...source ? { source } : {} };
31001
31028
  }
31002
31029
  if (target.abi !== "wasi") {
31003
31030
  const [glue, { module: module2 }] = await Promise.all([
@@ -34775,6 +34802,11 @@ function sparesOf(options) {
34775
34802
  function processWorker(file, workerData) {
34776
34803
  return new Worker(file, { env: workerEnv(), ...workerData ? { workerData } : {} });
34777
34804
  }
34805
+ function sourceModule(source) {
34806
+ const url = `slicc-module:${createHash("sha256").update(source).digest("hex")}`;
34807
+ return { url, source, revoke: () => {
34808
+ } };
34809
+ }
34778
34810
  function warmPoolOf(options, file, workerData, live) {
34779
34811
  const size = sparesOf(options);
34780
34812
  if (size === 0) return void 0;
@@ -34892,6 +34924,7 @@ async function createNodeKernel(options = {}) {
34892
34924
  const transport = options.network?.transport;
34893
34925
  const launcher = new Launcher({
34894
34926
  fs,
34927
+ moduleUrl: sourceModule,
34895
34928
  unlinkOwner: pidOwner(process),
34896
34929
  createWorker: () => nodeWorker(file, live, terminated, workerData, warm ? () => warm.take() : void 0),
34897
34930
  createDriverWorker: () => nodeWorker(
@@ -35038,6 +35071,7 @@ export {
35038
35071
  memoryRoot,
35039
35072
  nodeTransport,
35040
35073
  serveHostfsPort,
35074
+ sourceModule,
35041
35075
  sparesOf,
35042
35076
  warmPool
35043
35077
  };