@inerrata-corporation/errata 2.0.2-dev.688 → 2.0.2-dev.692
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/errata.mjs +78 -23
- package/package.json +1 -1
package/errata.mjs
CHANGED
|
@@ -32946,7 +32946,7 @@ async function Module2(moduleArg = {}) {
|
|
|
32946
32946
|
}
|
|
32947
32947
|
};
|
|
32948
32948
|
if (flags.loadAsync) {
|
|
32949
|
-
return metadata.neededDynlibs.reduce((
|
|
32949
|
+
return metadata.neededDynlibs.reduce((chain2, dynNeeded) => chain2.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule);
|
|
32950
32950
|
}
|
|
32951
32951
|
metadata.neededDynlibs.forEach((needed) => loadDynamicLibrary(needed, flags, localScope));
|
|
32952
32952
|
return loadModule();
|
|
@@ -49533,13 +49533,13 @@ function learnedCard(c, opts) {
|
|
|
49533
49533
|
}
|
|
49534
49534
|
if (c.chain.instanceOf)
|
|
49535
49535
|
segs.push(`<span class="e">INSTANCE_OF</span> <span class="rc">${esc3(c.chain.instanceOf)}</span>`);
|
|
49536
|
-
const
|
|
49536
|
+
const chain2 = segs.length > 0 ? `\u2514\u2500 ${segs.join(" \u2500 ")}` : '\u2514\u2500 <span class="rc">(no causal chain yet)</span>';
|
|
49537
49537
|
return `<div class="lcard">
|
|
49538
49538
|
<div class="row1">
|
|
49539
49539
|
<span class="prob">${esc3(c.problem)}</span>
|
|
49540
49540
|
<span class="badge ${PROV_CLASS[c.provenance]}">${BADGE2[c.provenance]} ${PROV_LABEL[c.provenance]}</span>
|
|
49541
49541
|
</div>
|
|
49542
|
-
<div class="chain">${
|
|
49542
|
+
<div class="chain">${chain2}</div>
|
|
49543
49543
|
<div class="lfoot">${trustHtml(c.trust, c.trustNote)}${nextHtml(c.next, opts)}</div>
|
|
49544
49544
|
</div>`;
|
|
49545
49545
|
}
|
|
@@ -53829,6 +53829,27 @@ function retireEpisodeProvenance(store, now, opts = {}) {
|
|
|
53829
53829
|
|
|
53830
53830
|
// src/pass-worker-client.ts
|
|
53831
53831
|
import { Worker } from "node:worker_threads";
|
|
53832
|
+
|
|
53833
|
+
// src/pass-gate.ts
|
|
53834
|
+
var QUEUE_WARN_MS = 12e4;
|
|
53835
|
+
var chain = Promise.resolve();
|
|
53836
|
+
function withHeavyPassSlot(label, fn) {
|
|
53837
|
+
const queuedAt = Date.now();
|
|
53838
|
+
const run3 = chain.then(() => {
|
|
53839
|
+
const waited = Date.now() - queuedAt;
|
|
53840
|
+
if (waited > QUEUE_WARN_MS) {
|
|
53841
|
+
console.warn(`[errata] heavy-pass slot: ${label} waited ${Math.round(waited / 1e3)}s`);
|
|
53842
|
+
}
|
|
53843
|
+
return fn();
|
|
53844
|
+
});
|
|
53845
|
+
chain = run3.then(
|
|
53846
|
+
() => void 0,
|
|
53847
|
+
() => void 0
|
|
53848
|
+
);
|
|
53849
|
+
return run3;
|
|
53850
|
+
}
|
|
53851
|
+
|
|
53852
|
+
// src/pass-worker-client.ts
|
|
53832
53853
|
var PassWorker = class {
|
|
53833
53854
|
constructor(init2) {
|
|
53834
53855
|
this.init = init2;
|
|
@@ -53859,14 +53880,32 @@ var PassWorker = class {
|
|
|
53859
53880
|
}
|
|
53860
53881
|
call(kind, payload) {
|
|
53861
53882
|
if (this.stopped) return Promise.reject(new Error("pass worker stopped"));
|
|
53862
|
-
this.
|
|
53863
|
-
|
|
53864
|
-
|
|
53865
|
-
|
|
53866
|
-
|
|
53867
|
-
this.
|
|
53868
|
-
|
|
53869
|
-
|
|
53883
|
+
return withHeavyPassSlot(`${kind}:${this.init.workspaceId}`, async () => {
|
|
53884
|
+
if (this.stopped) throw new Error("pass worker stopped");
|
|
53885
|
+
this.ensureWorker();
|
|
53886
|
+
const id = this.nextId++;
|
|
53887
|
+
try {
|
|
53888
|
+
await this.ready;
|
|
53889
|
+
return await new Promise((resolve6, reject) => {
|
|
53890
|
+
this.pending.set(id, { resolve: resolve6, reject });
|
|
53891
|
+
this.worker.postMessage({ id, kind, ...payload !== void 0 ? { payload } : {} });
|
|
53892
|
+
});
|
|
53893
|
+
} finally {
|
|
53894
|
+
void this.recycleIdle();
|
|
53895
|
+
}
|
|
53896
|
+
});
|
|
53897
|
+
}
|
|
53898
|
+
/** Terminate the (idle) worker so its retained heap returns to the OS; the
|
|
53899
|
+
* next call respawns it. No-op when requests are pending or already down. */
|
|
53900
|
+
async recycleIdle() {
|
|
53901
|
+
if (this.stopped || !this.worker || this.pending.size > 0) return;
|
|
53902
|
+
const w = this.worker;
|
|
53903
|
+
this.worker = null;
|
|
53904
|
+
this.ready = null;
|
|
53905
|
+
try {
|
|
53906
|
+
await w.terminate();
|
|
53907
|
+
} catch {
|
|
53908
|
+
}
|
|
53870
53909
|
}
|
|
53871
53910
|
ensureWorker() {
|
|
53872
53911
|
if (this.worker) return;
|
|
@@ -55455,7 +55494,7 @@ function startLoopLagMonitor(thresholdMs = 1e3) {
|
|
|
55455
55494
|
}
|
|
55456
55495
|
|
|
55457
55496
|
// src/engine.ts
|
|
55458
|
-
var DAEMON_VERSION = true ? "2.0.2-dev.
|
|
55497
|
+
var DAEMON_VERSION = true ? "2.0.2-dev.692" : "2.0.0-alpha.0";
|
|
55459
55498
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
55460
55499
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
55461
55500
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -58203,14 +58242,30 @@ var ConsolidateWorker = class {
|
|
|
58203
58242
|
* unavailable — the caller's inline fallback handles it. */
|
|
58204
58243
|
run(req) {
|
|
58205
58244
|
if (this.stopped) return Promise.reject(new Error("consolidate worker stopped"));
|
|
58206
|
-
|
|
58207
|
-
|
|
58208
|
-
|
|
58209
|
-
|
|
58210
|
-
|
|
58211
|
-
this.
|
|
58212
|
-
|
|
58213
|
-
|
|
58245
|
+
return withHeavyPassSlot(`consolidate:${req.kind ?? "pass"}`, async () => {
|
|
58246
|
+
if (this.stopped) throw new Error("consolidate worker stopped");
|
|
58247
|
+
this.ensureWorker();
|
|
58248
|
+
const id = this.nextId++;
|
|
58249
|
+
try {
|
|
58250
|
+
await this.ready;
|
|
58251
|
+
return await new Promise((resolve6, reject) => {
|
|
58252
|
+
this.pending.set(id, { resolve: resolve6, reject });
|
|
58253
|
+
this.worker.postMessage({ ...req, id });
|
|
58254
|
+
});
|
|
58255
|
+
} finally {
|
|
58256
|
+
void this.recycleIdle();
|
|
58257
|
+
}
|
|
58258
|
+
});
|
|
58259
|
+
}
|
|
58260
|
+
async recycleIdle() {
|
|
58261
|
+
if (this.stopped || !this.worker || this.pending.size > 0) return;
|
|
58262
|
+
const w = this.worker;
|
|
58263
|
+
this.worker = null;
|
|
58264
|
+
this.ready = null;
|
|
58265
|
+
try {
|
|
58266
|
+
await w.terminate();
|
|
58267
|
+
} catch {
|
|
58268
|
+
}
|
|
58214
58269
|
}
|
|
58215
58270
|
ensureWorker() {
|
|
58216
58271
|
if (this.worker) return;
|
|
@@ -58581,7 +58636,7 @@ function findGitRoot(absPath) {
|
|
|
58581
58636
|
var RETRY_COOLDOWN_MS = 15 * 6e4;
|
|
58582
58637
|
function createRootAdopter(deps) {
|
|
58583
58638
|
const attempted = /* @__PURE__ */ new Map();
|
|
58584
|
-
let
|
|
58639
|
+
let chain2 = Promise.resolve();
|
|
58585
58640
|
const tryAdopt = async (path2) => {
|
|
58586
58641
|
if (!deps.linkingAllowed()) return;
|
|
58587
58642
|
const root = findGitRoot(path2);
|
|
@@ -58601,9 +58656,9 @@ function createRootAdopter(deps) {
|
|
|
58601
58656
|
return {
|
|
58602
58657
|
noteMiss(path2) {
|
|
58603
58658
|
if (!path2) return;
|
|
58604
|
-
|
|
58659
|
+
chain2 = chain2.then(() => tryAdopt(path2)).catch(() => void 0);
|
|
58605
58660
|
},
|
|
58606
|
-
idle: () =>
|
|
58661
|
+
idle: () => chain2
|
|
58607
58662
|
};
|
|
58608
58663
|
}
|
|
58609
58664
|
|