@inerrata-corporation/errata 2.0.0-dev.90 → 2.0.0-dev.91
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 +67 -30
- package/package.json +1 -1
package/errata.mjs
CHANGED
|
@@ -45370,12 +45370,13 @@ function extractExecutables(command) {
|
|
|
45370
45370
|
return out2;
|
|
45371
45371
|
}
|
|
45372
45372
|
function observeCommandTools(store, command, ts) {
|
|
45373
|
-
const result = { minted: [], reinforced: [] };
|
|
45373
|
+
const result = { minted: [], reinforced: [], nodeIds: [] };
|
|
45374
45374
|
const osName = currentOsName();
|
|
45375
45375
|
for (const name2 of extractExecutables(command)) {
|
|
45376
45376
|
if (!PUBLIC_TOOLS.has(name2)) continue;
|
|
45377
45377
|
if (PLUMBING.has(name2)) continue;
|
|
45378
45378
|
const id = toolNodeId(name2);
|
|
45379
|
+
result.nodeIds.push(id);
|
|
45379
45380
|
const existing = store.getNode(id);
|
|
45380
45381
|
if (existing) {
|
|
45381
45382
|
store.updateNode(id, {
|
|
@@ -45407,23 +45408,23 @@ function observeCommandTools(store, command, ts) {
|
|
|
45407
45408
|
attrs: { name: name2, canonicalId: toolCanonicalId(name2), public: true }
|
|
45408
45409
|
});
|
|
45409
45410
|
result.minted.push(name2);
|
|
45410
|
-
|
|
45411
|
-
|
|
45412
|
-
|
|
45413
|
-
|
|
45414
|
-
|
|
45415
|
-
|
|
45416
|
-
|
|
45417
|
-
|
|
45418
|
-
|
|
45419
|
-
|
|
45420
|
-
|
|
45421
|
-
|
|
45422
|
-
|
|
45423
|
-
|
|
45424
|
-
|
|
45425
|
-
}
|
|
45426
|
-
}
|
|
45411
|
+
}
|
|
45412
|
+
if (osName) {
|
|
45413
|
+
const os2 = resolveOsNode(store, osName, ts);
|
|
45414
|
+
store.mergeEdge({
|
|
45415
|
+
id: `edge_${digest({ from: id, type: "RUNS_ON", to: os2.id })}`.slice(0, 24),
|
|
45416
|
+
from: id,
|
|
45417
|
+
to: os2.id,
|
|
45418
|
+
type: "RUNS_ON",
|
|
45419
|
+
confidence: 1,
|
|
45420
|
+
// observed
|
|
45421
|
+
extractionSource: "daemon-extracted",
|
|
45422
|
+
createdAt: ts,
|
|
45423
|
+
lastSeenAt: ts,
|
|
45424
|
+
navSuccesses: 0,
|
|
45425
|
+
navFailures: 0,
|
|
45426
|
+
attrs: { observed: true }
|
|
45427
|
+
});
|
|
45427
45428
|
}
|
|
45428
45429
|
}
|
|
45429
45430
|
return result;
|
|
@@ -45862,7 +45863,8 @@ function buildWebUi(deps) {
|
|
|
45862
45863
|
ts: Date.now()
|
|
45863
45864
|
});
|
|
45864
45865
|
try {
|
|
45865
|
-
observeCommandTools(deps.store, input["command"], Date.now());
|
|
45866
|
+
const observed = observeCommandTools(deps.store, input["command"], Date.now());
|
|
45867
|
+
deps.onToolsObserved?.(String(body2["session_id"] ?? ""), observed.nodeIds);
|
|
45866
45868
|
} catch {
|
|
45867
45869
|
}
|
|
45868
45870
|
if (failed) recallCtx = recallForError(deps.store, stderr || combined);
|
|
@@ -49244,11 +49246,8 @@ var SUPERSEDES_PREFIX = /^\s*supersedes:(?:#([a-z][\w-]{0,63}))?\s*/i;
|
|
|
49244
49246
|
var ALTERNATIVE_PREFIX = /^\s*alternative:(?:#([a-z][\w-]{0,63}))?\s*/i;
|
|
49245
49247
|
var INSTANCE_PREFIX = /^\s*instance:\s*/i;
|
|
49246
49248
|
var PATTERN_RE = /\(\s*pattern:\s*([^()\n]{3,}?)\s*\)/gi;
|
|
49247
|
-
var PATTERN_TEXT_MAX = 120;
|
|
49248
49249
|
var CAUSE_TEXT_MIN = 8;
|
|
49249
|
-
var CAUSE_TEXT_MAX = 200;
|
|
49250
49250
|
var FLAG_RE = /\[([!?])(?:#([a-z][\w-]{0,63})\s+)?\s*([^\]\n]{8,}?)\s*(?:@\s*([^\s\]]+?)(?::(\d+))?\s*)?\]/g;
|
|
49251
|
-
var FLAG_MAX = 200;
|
|
49252
49251
|
var CONSTRAINT_MIN = 8;
|
|
49253
49252
|
function clauseBefore(sentence, idx) {
|
|
49254
49253
|
const win = sentence.slice(Math.max(0, idx - 80), idx);
|
|
@@ -49323,7 +49322,7 @@ function parseInlineTags(text) {
|
|
|
49323
49322
|
} else {
|
|
49324
49323
|
const raw3 = content.replace(/\s+/g, " ").trim();
|
|
49325
49324
|
if (raw3.length >= CAUSE_TEXT_MIN) {
|
|
49326
|
-
const causeText = raw3
|
|
49325
|
+
const causeText = raw3;
|
|
49327
49326
|
out2.push({ kind: "triage", causeText, sentence: sfield, ...verbThread ? { threadId: verbThread } : {} });
|
|
49328
49327
|
}
|
|
49329
49328
|
}
|
|
@@ -49365,7 +49364,7 @@ function parseInlineTags(text) {
|
|
|
49365
49364
|
if (raw3.length >= 8) {
|
|
49366
49365
|
const segs = raw3.split(CAUSE_ARROW).map((s) => s.trim()).filter((s) => s.length > 0);
|
|
49367
49366
|
const symptomRaw = segs.length > 1 ? segs[0] : raw3;
|
|
49368
|
-
const statement = symptomRaw
|
|
49367
|
+
const statement = symptomRaw;
|
|
49369
49368
|
const asFix = f[1] === "!" && /^(?:fixed|resolved)\s*[:,-]\s*/i.exec(statement);
|
|
49370
49369
|
if (asFix) {
|
|
49371
49370
|
const note = statement.slice(asFix[0].length).trim();
|
|
@@ -49397,7 +49396,7 @@ function parseInlineTags(text) {
|
|
|
49397
49396
|
while ((a = ATTEMPT_RE.exec(sentence)) !== null) {
|
|
49398
49397
|
const raw3 = a[3].replace(/\s+/g, " ").trim();
|
|
49399
49398
|
if (raw3.length >= CONSTRAINT_MIN) {
|
|
49400
|
-
const statement = raw3
|
|
49399
|
+
const statement = raw3;
|
|
49401
49400
|
const isFailure = a[1].toLowerCase() === "failed";
|
|
49402
49401
|
let refuteHandles;
|
|
49403
49402
|
if (isFailure) {
|
|
@@ -49431,7 +49430,7 @@ function parseInlineTags(text) {
|
|
|
49431
49430
|
} else {
|
|
49432
49431
|
const raw3 = body2.replace(/\s+/g, " ").trim();
|
|
49433
49432
|
if (raw3.length >= 3) {
|
|
49434
|
-
const patternText = raw3
|
|
49433
|
+
const patternText = raw3;
|
|
49435
49434
|
out2.push({ kind: "pattern", patternText, sentence: sfield });
|
|
49436
49435
|
}
|
|
49437
49436
|
}
|
|
@@ -49441,7 +49440,7 @@ function parseInlineTags(text) {
|
|
|
49441
49440
|
while ((c = CONSTRAINT_RE.exec(sentence)) !== null) {
|
|
49442
49441
|
const raw3 = c[1].replace(/\s+/g, " ").trim();
|
|
49443
49442
|
if (raw3.length >= CONSTRAINT_MIN) {
|
|
49444
|
-
const statement = raw3
|
|
49443
|
+
const statement = raw3;
|
|
49445
49444
|
out2.push({ kind: "constraint", statement, sentence: sfield });
|
|
49446
49445
|
}
|
|
49447
49446
|
}
|
|
@@ -49540,6 +49539,7 @@ function mintPriorEdge(store, source, target, sentence, touched, ts) {
|
|
|
49540
49539
|
if (anchorIds.size === 0 && (target.label === "Language" || target.label === "Package")) {
|
|
49541
49540
|
for (const e of store.inEdges(target.id, STACK_GROUNDING_EDGES)) anchorIds.add(e.from);
|
|
49542
49541
|
}
|
|
49542
|
+
if (anchorIds.size === 0 && target.label === "Tool") anchorIds.add(target.id);
|
|
49543
49543
|
const corroborated = tagEdgeCorroborated(anchorIds, touched, false);
|
|
49544
49544
|
store.mergeEdge({
|
|
49545
49545
|
id: `edge_${digest({ from: source.id, type, to: target.id, k: "priorTag" })}`.slice(0, 24),
|
|
@@ -49556,7 +49556,12 @@ function mintPriorEdge(store, source, target, sentence, touched, ts) {
|
|
|
49556
49556
|
navFailures: 0,
|
|
49557
49557
|
attrs: { provisional: true, priorTag: true, primingProvenance: true, corroborated }
|
|
49558
49558
|
});
|
|
49559
|
-
if (type === "CONCERNS")
|
|
49559
|
+
if (type === "CONCERNS") {
|
|
49560
|
+
try {
|
|
49561
|
+
stampObservedOs(store, source.id, currentOsName(), ts);
|
|
49562
|
+
} catch {
|
|
49563
|
+
}
|
|
49564
|
+
}
|
|
49560
49565
|
return true;
|
|
49561
49566
|
}
|
|
49562
49567
|
function harvestInlineTags(store, text, opts) {
|
|
@@ -50871,6 +50876,34 @@ function createWorkingFileState() {
|
|
|
50871
50876
|
};
|
|
50872
50877
|
}
|
|
50873
50878
|
|
|
50879
|
+
// src/tool-run-state.ts
|
|
50880
|
+
var MAX_SESSIONS = 64;
|
|
50881
|
+
var MAX_TOOLS_PER_SESSION = 64;
|
|
50882
|
+
function createToolRunState() {
|
|
50883
|
+
const bySession = /* @__PURE__ */ new Map();
|
|
50884
|
+
return {
|
|
50885
|
+
record(sessionId, toolNodeIds) {
|
|
50886
|
+
if (!sessionId || toolNodeIds.length === 0) return;
|
|
50887
|
+
let set2 = bySession.get(sessionId);
|
|
50888
|
+
if (!set2) {
|
|
50889
|
+
if (bySession.size >= MAX_SESSIONS) {
|
|
50890
|
+
const oldest = bySession.keys().next().value;
|
|
50891
|
+
if (oldest !== void 0) bySession.delete(oldest);
|
|
50892
|
+
}
|
|
50893
|
+
set2 = /* @__PURE__ */ new Set();
|
|
50894
|
+
bySession.set(sessionId, set2);
|
|
50895
|
+
}
|
|
50896
|
+
for (const id of toolNodeIds) {
|
|
50897
|
+
if (set2.size >= MAX_TOOLS_PER_SESSION) break;
|
|
50898
|
+
set2.add(id);
|
|
50899
|
+
}
|
|
50900
|
+
},
|
|
50901
|
+
get(sessionId) {
|
|
50902
|
+
return bySession.get(sessionId) ?? /* @__PURE__ */ new Set();
|
|
50903
|
+
}
|
|
50904
|
+
};
|
|
50905
|
+
}
|
|
50906
|
+
|
|
50874
50907
|
// src/engine.ts
|
|
50875
50908
|
init_paths();
|
|
50876
50909
|
|
|
@@ -51268,7 +51301,7 @@ function startLoopLagMonitor(thresholdMs = 1e3) {
|
|
|
51268
51301
|
}
|
|
51269
51302
|
|
|
51270
51303
|
// src/engine.ts
|
|
51271
|
-
var DAEMON_VERSION = true ? "2.0.0-dev.
|
|
51304
|
+
var DAEMON_VERSION = true ? "2.0.0-dev.91" : "2.0.0-alpha.0";
|
|
51272
51305
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
51273
51306
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
51274
51307
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -51549,6 +51582,7 @@ function createWorkspaceEngine(opts) {
|
|
|
51549
51582
|
});
|
|
51550
51583
|
}
|
|
51551
51584
|
const workingFiles = createWorkingFileState();
|
|
51585
|
+
const toolRuns = createToolRunState();
|
|
51552
51586
|
let ctxRefreshTimer = null;
|
|
51553
51587
|
let contextDirty = false;
|
|
51554
51588
|
let remotePriors = [];
|
|
@@ -51918,12 +51952,14 @@ function createWorkspaceEngine(opts) {
|
|
|
51918
51952
|
}
|
|
51919
51953
|
try {
|
|
51920
51954
|
const touchedFileId = turnFile ? resolveFileId(turnFile) : void 0;
|
|
51955
|
+
const touched = new Set(toolRuns.get(sessionId));
|
|
51956
|
+
if (touchedFileId) touched.add(touchedFileId);
|
|
51921
51957
|
const plan = harvestInlineTags(store, turn.text, {
|
|
51922
51958
|
sourceId: sessionLastProblem.get(sessionId),
|
|
51923
51959
|
handleMap,
|
|
51924
51960
|
ts: t,
|
|
51925
51961
|
mintPriors: elicit,
|
|
51926
|
-
...
|
|
51962
|
+
...touched.size > 0 ? { sessionTouchedIds: touched } : {}
|
|
51927
51963
|
});
|
|
51928
51964
|
priorEdges += plan.priorEdges;
|
|
51929
51965
|
const wf = workingFiles.get(sessionId);
|
|
@@ -52325,6 +52361,7 @@ function createWorkspaceEngine(opts) {
|
|
|
52325
52361
|
webHooks: {
|
|
52326
52362
|
onWorkingFileChanged,
|
|
52327
52363
|
onHook: () => telemetry.count("hooks_fired"),
|
|
52364
|
+
onToolsObserved: (sessionId, toolNodeIds) => toolRuns.record(sessionId, toolNodeIds),
|
|
52328
52365
|
onHookEvent,
|
|
52329
52366
|
onShellEvent,
|
|
52330
52367
|
onToolError,
|