@inerrata-corporation/errata 2.0.2-dev.1196 → 2.0.2-dev.1205
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 +77 -6
- package/package.json +1 -1
package/errata.mjs
CHANGED
|
@@ -40068,6 +40068,8 @@ var init_reconcile = __esm({
|
|
|
40068
40068
|
var mcp_exports = {};
|
|
40069
40069
|
__export(mcp_exports, {
|
|
40070
40070
|
INSTRUCTIONS: () => INSTRUCTIONS,
|
|
40071
|
+
RG_REFUTED_DAMP: () => RG_REFUTED_DAMP,
|
|
40072
|
+
RG_SUSPECT_BOOST: () => RG_SUSPECT_BOOST,
|
|
40071
40073
|
createMcpHandler: () => createMcpHandler,
|
|
40072
40074
|
runMcpServer: () => runMcpServer,
|
|
40073
40075
|
runTool: () => runTool,
|
|
@@ -40139,6 +40141,22 @@ function takeDiscriminatorNudge(path2) {
|
|
|
40139
40141
|
shared.close();
|
|
40140
40142
|
}
|
|
40141
40143
|
}
|
|
40144
|
+
function hitState(n) {
|
|
40145
|
+
const reasons = n.attrs["refuteReasons"];
|
|
40146
|
+
if (n.attrs["resolutionSuspect"] === true && n.attrs["resolvedAt"] != null) {
|
|
40147
|
+
return { state: "regression-suspect", factor: RG_SUSPECT_BOOST };
|
|
40148
|
+
}
|
|
40149
|
+
if (n.attrs["refutedAt"] != null) {
|
|
40150
|
+
return { state: "refuted", ...reasons?.[0] ? { refutedWhy: reasons[0] } : {}, factor: RG_REFUTED_DAMP };
|
|
40151
|
+
}
|
|
40152
|
+
if (n.attrs["reopenedFrom"] === "regression") {
|
|
40153
|
+
return { state: "reopened-regression", factor: RG_SUSPECT_BOOST };
|
|
40154
|
+
}
|
|
40155
|
+
if (n.attrs["resolvedAt"] != null && n.attrs["resolvedAs"] == null) {
|
|
40156
|
+
return { state: "resolved", factor: 1 };
|
|
40157
|
+
}
|
|
40158
|
+
return { factor: 1 };
|
|
40159
|
+
}
|
|
40142
40160
|
function commentAnchorId(store, commentId) {
|
|
40143
40161
|
const out2 = store.outEdges(commentId, ["EXPLAINS", "ANNOTATES"]);
|
|
40144
40162
|
if (out2.length > 0) return out2[0].to;
|
|
@@ -40203,14 +40221,16 @@ function searchGraph(store, query, limit) {
|
|
|
40203
40221
|
}
|
|
40204
40222
|
add(node2, matched);
|
|
40205
40223
|
}
|
|
40206
|
-
return [...merged.values()].sort(
|
|
40207
|
-
(a, b) => rankTier(a.node) - rankTier(b.node) || b.matched - a.matched || b.node.pageRank - a.node.pageRank
|
|
40208
|
-
).slice(0, limit).map(({ node: node2, via }) => ({
|
|
40224
|
+
return [...merged.values()].map((e) => ({ ...e, rg: hitState(e.node) })).sort(
|
|
40225
|
+
(a, b) => rankTier(a.node) - rankTier(b.node) || b.matched - a.matched || b.node.pageRank * b.rg.factor - a.node.pageRank * a.rg.factor
|
|
40226
|
+
).slice(0, limit).map(({ node: node2, via, rg }) => ({
|
|
40209
40227
|
id: node2.id,
|
|
40210
40228
|
label: node2.label,
|
|
40211
40229
|
description: node2.description,
|
|
40212
40230
|
pageRank: node2.pageRank,
|
|
40213
|
-
...via ? { via } : {}
|
|
40231
|
+
...via ? { via } : {},
|
|
40232
|
+
...rg.state ? { state: rg.state } : {},
|
|
40233
|
+
...rg.refutedWhy ? { refutedWhy: rg.refutedWhy } : {}
|
|
40214
40234
|
}));
|
|
40215
40235
|
}
|
|
40216
40236
|
function runTool(name2, args2, store, ctx = {}) {
|
|
@@ -40503,7 +40523,7 @@ async function runMcpServer(workspaceRoot) {
|
|
|
40503
40523
|
if (resp) process.stdout.write(JSON.stringify(resp) + "\n");
|
|
40504
40524
|
}
|
|
40505
40525
|
}
|
|
40506
|
-
var INSTRUCTIONS, AUDIT_RUN_THRESHOLD, AUDIT_NUDGE_COOLDOWN, DISCRIMINATOR_NUDGE_COOLDOWN, AUDIT_FLAG_NUDGE, TOOLS;
|
|
40526
|
+
var INSTRUCTIONS, AUDIT_RUN_THRESHOLD, AUDIT_NUDGE_COOLDOWN, DISCRIMINATOR_NUDGE_COOLDOWN, AUDIT_FLAG_NUDGE, RG_REFUTED_DAMP, RG_SUSPECT_BOOST, TOOLS;
|
|
40507
40527
|
var init_mcp = __esm({
|
|
40508
40528
|
"src/mcp.ts"() {
|
|
40509
40529
|
"use strict";
|
|
@@ -40567,6 +40587,8 @@ var init_mcp = __esm({
|
|
|
40567
40587
|
AUDIT_NUDGE_COOLDOWN = 12;
|
|
40568
40588
|
DISCRIMINATOR_NUDGE_COOLDOWN = 40;
|
|
40569
40589
|
AUDIT_FLAG_NUDGE = "\u26A1 errata \u2014 reading/auditing? anything you notice that's off, flag it inline as `[!one line]` (`[?\u2026]` = TODO) \u2014 no tool call, we harvest it.";
|
|
40590
|
+
RG_REFUTED_DAMP = 0.75;
|
|
40591
|
+
RG_SUSPECT_BOOST = 1.25;
|
|
40570
40592
|
TOOLS = [
|
|
40571
40593
|
{
|
|
40572
40594
|
name: "errata.switch_context",
|
|
@@ -57043,7 +57065,7 @@ function createWatchBreaker(deps) {
|
|
|
57043
57065
|
}
|
|
57044
57066
|
|
|
57045
57067
|
// src/engine.ts
|
|
57046
|
-
var DAEMON_VERSION = true ? "2.0.2-dev.
|
|
57068
|
+
var DAEMON_VERSION = true ? "2.0.2-dev.1205" : "2.0.0-alpha.0";
|
|
57047
57069
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
57048
57070
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
57049
57071
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -60628,6 +60650,26 @@ function createHealthSentinel(deps = {}) {
|
|
|
60628
60650
|
};
|
|
60629
60651
|
}
|
|
60630
60652
|
|
|
60653
|
+
// src/codex-wake.ts
|
|
60654
|
+
var CODEX_WAKE_LOOKBACK_MS = 10 * 6e4;
|
|
60655
|
+
var CODEX_WAKE_BOOT_LOOKBACK_MS = 24 * 60 * 6e4;
|
|
60656
|
+
function codexWakeCandidates(input) {
|
|
60657
|
+
if (input.disabled) return [];
|
|
60658
|
+
const find = input.find ?? ((cwd, since) => codexRolloutsForCwd(cwd, { sinceMs: since, limit: 1 }).length);
|
|
60659
|
+
const out2 = [];
|
|
60660
|
+
for (const entry of input.entries) {
|
|
60661
|
+
if (input.liveRoots.has(input.normPath(entry.path))) continue;
|
|
60662
|
+
let n = 0;
|
|
60663
|
+
try {
|
|
60664
|
+
n = find(entry.path, input.sinceMs);
|
|
60665
|
+
} catch {
|
|
60666
|
+
continue;
|
|
60667
|
+
}
|
|
60668
|
+
if (n > 0) out2.push({ name: entry.name, path: entry.path });
|
|
60669
|
+
}
|
|
60670
|
+
return out2;
|
|
60671
|
+
}
|
|
60672
|
+
|
|
60631
60673
|
// src/multi.ts
|
|
60632
60674
|
var projectSymbolSalts = /* @__PURE__ */ new Map();
|
|
60633
60675
|
async function resolveProjectSymbolSalt(client, projectId) {
|
|
@@ -61168,6 +61210,33 @@ async function startMultiDaemon(opts = {}) {
|
|
|
61168
61210
|
};
|
|
61169
61211
|
const idleSweep = setInterval(sweepIdleWorkspaces, WORKSPACE_SWEEP_INTERVAL_MS);
|
|
61170
61212
|
idleSweep.unref?.();
|
|
61213
|
+
let codexWakeFirstPass = true;
|
|
61214
|
+
const sweepCodexWake = () => {
|
|
61215
|
+
const lookback = codexWakeFirstPass ? CODEX_WAKE_BOOT_LOOKBACK_MS : CODEX_WAKE_LOOKBACK_MS;
|
|
61216
|
+
codexWakeFirstPass = false;
|
|
61217
|
+
let entries2;
|
|
61218
|
+
try {
|
|
61219
|
+
entries2 = listWorkspaceEntries();
|
|
61220
|
+
} catch {
|
|
61221
|
+
return;
|
|
61222
|
+
}
|
|
61223
|
+
const candidates = codexWakeCandidates({
|
|
61224
|
+
entries: entries2,
|
|
61225
|
+
liveRoots: new Set(records.map((r) => normPath(r.root))),
|
|
61226
|
+
normPath,
|
|
61227
|
+
sinceMs: Date.now() - lookback,
|
|
61228
|
+
disabled: process.env["ERRATA_CODEX_WAKE_DISABLE"] === "1"
|
|
61229
|
+
});
|
|
61230
|
+
for (const c of candidates) {
|
|
61231
|
+
if (attachWorkspace(c.path).attached) {
|
|
61232
|
+
console.log(`[errata] woke workspace ${c.name} \u2014 recent Codex rollout (headless capture)`);
|
|
61233
|
+
}
|
|
61234
|
+
}
|
|
61235
|
+
};
|
|
61236
|
+
const codexWake = setInterval(sweepCodexWake, WORKSPACE_SWEEP_INTERVAL_MS);
|
|
61237
|
+
codexWake.unref?.();
|
|
61238
|
+
const codexWakeBoot = setTimeout(sweepCodexWake, 5e3);
|
|
61239
|
+
codexWakeBoot.unref?.();
|
|
61171
61240
|
const reindexAll = async (rOpts) => {
|
|
61172
61241
|
const out2 = /* @__PURE__ */ new Map();
|
|
61173
61242
|
const toIndex = records.filter((r) => rOpts?.force || r.engine.store.nodeCount() === 0);
|
|
@@ -61881,6 +61950,8 @@ async function startMultiDaemon(opts = {}) {
|
|
|
61881
61950
|
},
|
|
61882
61951
|
async stop() {
|
|
61883
61952
|
clearInterval(idleSweep);
|
|
61953
|
+
clearInterval(codexWake);
|
|
61954
|
+
clearTimeout(codexWakeBoot);
|
|
61884
61955
|
try {
|
|
61885
61956
|
const cur = readFileSync27(lockPath, "utf8");
|
|
61886
61957
|
if (JSON.parse(cur).pid === process.pid) unlinkSync3(lockPath);
|