@ai-ecoverse/slicc-kernel 1.110.6 → 1.110.8

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
@@ -6494,7 +6494,7 @@ function satisfies(version, range2) {
6494
6494
  }
6495
6495
 
6496
6496
  // src/version.ts
6497
- var KERNEL_VERSION = true ? "1.110.6" : "0.0.0-dev";
6497
+ var KERNEL_VERSION = true ? "1.110.8" : "0.0.0-dev";
6498
6498
  var OS_RELEASE = "6.0.0-slicc";
6499
6499
  function procVersion() {
6500
6500
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -22582,13 +22582,34 @@ var Launcher = class {
22582
22582
  return { abi: "emscripten", glue, wasm, argv0: baseName2(argv0 || file), ...asked };
22583
22583
  }
22584
22584
  const owner = await this.glueOwner(glue, baseName2(file), scope);
22585
- return owner && { ...targetOf(owner), ...asked };
22585
+ if (!owner) return void 0;
22586
+ return { ...targetOf(owner), ...asked, ...owner.glue === glue ? {} : { copy: glue } };
22586
22587
  }
22587
22588
  async glueOwner(glue, name2, scope) {
22588
- const owners = [...(await this.commands(scope)).values()].filter(
22589
- (c) => c.abi === "emscripten" && !c.script && c.glue === glue
22590
- );
22591
- return owners.find((c) => c.name === name2) ?? owners[0];
22589
+ const commands = [...(await this.commands(scope)).values()];
22590
+ const owners = commands.filter((c) => c.abi === "emscripten" && !c.script && c.glue === glue);
22591
+ if (owners.length > 0) return owners.find((c) => c.name === name2) ?? owners[0];
22592
+ const leaf = baseName2(glue);
22593
+ const dir = glue.slice(0, glue.lastIndexOf("/"));
22594
+ for (const c of commands) {
22595
+ if (c.abi !== "emscripten" || c.script || c.name !== leaf) continue;
22596
+ const own = await physicalPathAsync(this.base, c.glue).catch(() => c.glue);
22597
+ if (own.slice(0, own.lastIndexOf("/")) !== dir) continue;
22598
+ if (await this.sameFile(glue, own)) return c;
22599
+ }
22600
+ return void 0;
22601
+ }
22602
+ sameFiles = /* @__PURE__ */ new Map();
22603
+ async sameFile(a, b) {
22604
+ const [x, y] = await Promise.all([this.base.stat(a), this.base.stat(b)]).catch(() => []);
22605
+ if (!x?.isFile || !y?.isFile || x.size !== y.size) return false;
22606
+ const stamp = [x, y].map((st) => `${st.size}:${st.mtime.getTime()}:${st.ino}`).join("|");
22607
+ const known = this.sameFiles.get(`${a}|${b}`);
22608
+ if (known?.stamp === stamp) return known.same;
22609
+ const [p, q] = await Promise.all([this.base.readFileBuffer(a), this.base.readFileBuffer(b)]);
22610
+ const same = p.length === q.length && p.every((byte, i) => byte === q[i]);
22611
+ this.sameFiles.set(`${a}|${b}`, { stamp, same });
22612
+ return same;
22592
22613
  }
22593
22614
  async wasmOwner(wasm, name2, scope) {
22594
22615
  const leaf = baseName2(wasm);
@@ -22686,6 +22707,7 @@ var Launcher = class {
22686
22707
  await need(g, "exec", this.fs.resolvePath(req.cwd, file), want);
22687
22708
  }
22688
22709
  for (const bin of planned?.bins ?? []) await need(g, "exec", bin, R_OK | X_OK);
22710
+ if (planned?.target.copy) await need(g, "exec", planned.target.copy, R_OK | X_OK);
22689
22711
  }
22690
22712
  async checkedPlan(req, { ppid, cred, scope }, fds) {
22691
22713
  const refused2 = async (err) => {