@ai-ecoverse/slicc-kernel 1.136.1 → 1.136.3

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.
@@ -6699,7 +6699,7 @@ var KERNEL_VERSION, OS_RELEASE;
6699
6699
  var init_version = __esm({
6700
6700
  "src/version.ts"() {
6701
6701
  "use strict";
6702
- KERNEL_VERSION = true ? "1.136.1" : "0.0.0-dev";
6702
+ KERNEL_VERSION = true ? "1.136.3" : "0.0.0-dev";
6703
6703
  OS_RELEASE = "6.0.0-slicc";
6704
6704
  }
6705
6705
  });
package/dist/node.js CHANGED
@@ -7486,7 +7486,7 @@ function satisfies(version, range2) {
7486
7486
  }
7487
7487
 
7488
7488
  // src/version.ts
7489
- var KERNEL_VERSION = true ? "1.136.1" : "0.0.0-dev";
7489
+ var KERNEL_VERSION = true ? "1.136.3" : "0.0.0-dev";
7490
7490
  var OS_RELEASE = "6.0.0-slicc";
7491
7491
  function procVersion() {
7492
7492
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -19956,7 +19956,20 @@ var KEY_PARSE_RANGES = [
19956
19956
  [-28671, -24576],
19957
19957
  [-127, -96]
19958
19958
  ];
19959
- var keyParse = (code) => code !== -15360 && KEY_PARSE_RANGES.some(([lo, hi]) => code >= lo && code <= hi);
19959
+ var BEFORE_DECRYPT = /* @__PURE__ */ new Set([
19960
+ -15360,
19961
+ -15488,
19962
+ -16256,
19963
+ -14720,
19964
+ -4480,
19965
+ -4608,
19966
+ -4736,
19967
+ -5120,
19968
+ -24704,
19969
+ -24960,
19970
+ -106
19971
+ ]);
19972
+ var keyParse = (code) => !BEFORE_DECRYPT.has(code) && KEY_PARSE_RANGES.some(([lo, hi]) => code >= lo && code <= hi);
19960
19973
  function keyRefused(err, locked) {
19961
19974
  const raw2 = err instanceof TlsError ? err.code : 0;
19962
19975
  const code = locked && keyParse(raw2) ? -15232 : raw2;
@@ -22130,6 +22143,18 @@ var WasmProcess = class {
22130
22143
  throw err;
22131
22144
  }
22132
22145
  }
22146
+ async complain(line) {
22147
+ const stderr = this.fds.has(2) ? this.fds.get(2).file : void 0;
22148
+ if (!stderr?.write || stderr.sealed || stderr.clipboard) return false;
22149
+ const bytes = new TextEncoder().encode(`${line}
22150
+ `);
22151
+ const timeout = new Promise((r) => setTimeout(() => r(0), 1e3));
22152
+ const sent = await Promise.race([stderr.write(bytes, AbortSignal.timeout(1e3)), timeout]).then(
22153
+ (n) => n,
22154
+ () => 0
22155
+ );
22156
+ return sent > 0;
22157
+ }
22133
22158
  async clipboardComplaint(err) {
22134
22159
  const name2 = this.options.clipboardName;
22135
22160
  if (name2 === void 0 || !(err instanceof KernelError) || err.detail === void 0) return;
@@ -23605,6 +23630,29 @@ function outOfMemory(opts, data) {
23605
23630
  }
23606
23631
  return true;
23607
23632
  }
23633
+ function workerError(event) {
23634
+ return String(event.message ?? "worker error");
23635
+ }
23636
+ var CrashSlot = class {
23637
+ status;
23638
+ reported = false;
23639
+ report;
23640
+ constructor(report) {
23641
+ this.report = report;
23642
+ }
23643
+ take(status, message3, finish) {
23644
+ if (this.status) return;
23645
+ this.status = status;
23646
+ const done4 = () => {
23647
+ this.reported = true;
23648
+ finish(...status);
23649
+ };
23650
+ void this.report(message3).then(done4, done4);
23651
+ }
23652
+ };
23653
+ async function crashReport(process2, onError, message3) {
23654
+ if (!await process2.complain(message3)) onError?.(message3);
23655
+ }
23608
23656
  function spawnWasmProcess(opts) {
23609
23657
  const { promise: ready2, resolve: started } = readiness(opts.program.abi);
23610
23658
  const sab = new SharedArrayBuffer(SAB_HEADER_BYTES + SAB_DEFAULT_WINDOW_BYTES);
@@ -23655,9 +23703,11 @@ function spawnWasmProcess(opts) {
23655
23703
  const jsThreads = jsThreadsOf(opts, process2, token, dispatch2, clocks, header4);
23656
23704
  const { promise: exited, resolve: settle } = Promise.withResolvers();
23657
23705
  let done4 = false;
23706
+ const crash = new CrashSlot((message3) => crashReport(process2, opts.onError, message3));
23658
23707
  let endedBy;
23659
23708
  const finish = (code, sig) => {
23660
23709
  if (done4) return;
23710
+ if (crash.status && !crash.reported) return;
23661
23711
  done4 = true;
23662
23712
  started(true);
23663
23713
  clocks.freeze();
@@ -23686,8 +23736,9 @@ function spawnWasmProcess(opts) {
23686
23736
  } else if (data?.type === WASM_PROCESS_EXIT) {
23687
23737
  finish(...dying.status(data.code));
23688
23738
  } else if (data?.type === WASM_PROCESS_ERROR) {
23689
- if (!dying.ending) opts.onError?.(String(data.message));
23690
- finish(...dying.status(data.code));
23739
+ const status = dying.status(data.code);
23740
+ if (dying.ending) finish(...status);
23741
+ else crash.take(status, String(data.message), finish);
23691
23742
  } else if (data?.type === WASM_THREAD_SPAWN && data.thread) {
23692
23743
  spawnThread(data.thread);
23693
23744
  } else if (data?.type === JS_THREAD_SPAWN && jsThreads) {
@@ -23697,8 +23748,7 @@ function spawnWasmProcess(opts) {
23697
23748
  const onMessage = (event) => handle(event.data);
23698
23749
  const onError = (event) => {
23699
23750
  event.preventDefault();
23700
- opts.onError?.(String(event.message ?? "worker error"));
23701
- finish(CRASHED);
23751
+ crash.take([CRASHED], workerError(event), finish);
23702
23752
  };
23703
23753
  worker.addEventListener("message", onMessage);
23704
23754
  worker.addEventListener("error", onError);