@inerrata-corporation/errata 2.0.6-dev.2533 → 2.0.6-dev.2550
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 +122 -6
- package/package.json +1 -1
package/errata.mjs
CHANGED
|
@@ -28832,7 +28832,7 @@ function buildAgentInstruction(opts = {}) {
|
|
|
28832
28832
|
tail
|
|
28833
28833
|
].join("\n");
|
|
28834
28834
|
}
|
|
28835
|
-
var TAG_EXAMPLE, GLOSS;
|
|
28835
|
+
var TAG_EXAMPLE, TAG_OPENERS, GLOSS;
|
|
28836
28836
|
var init_agent_signals = __esm({
|
|
28837
28837
|
"src/agent-signals.ts"() {
|
|
28838
28838
|
"use strict";
|
|
@@ -28888,6 +28888,11 @@ var init_agent_signals = __esm({
|
|
|
28888
28888
|
confirm: (ref) => `(confirm:[${ref}])`,
|
|
28889
28889
|
refute: (ref) => `(refute:[${ref}] one line why)`
|
|
28890
28890
|
};
|
|
28891
|
+
TAG_OPENERS = [
|
|
28892
|
+
...new Set(
|
|
28893
|
+
Object.values(TAG_EXAMPLE).map((example) => /^(\([a-z][\w-]*:|\[[!?])/i.exec(example("x"))?.[1]?.toLowerCase()).filter((opener) => opener !== void 0)
|
|
28894
|
+
)
|
|
28895
|
+
];
|
|
28891
28896
|
GLOSS = {
|
|
28892
28897
|
prior: "a shown prior helped, or you work in a primed language/package",
|
|
28893
28898
|
problem: "a problem you notice or report \u2014 any bug, finding, or thing wrong; about specific code? name the file: [!what's wrong @ src/file.ts:42]",
|
|
@@ -74145,15 +74150,54 @@ function clauseBefore(sentence, idx) {
|
|
|
74145
74150
|
}
|
|
74146
74151
|
var FIX_RATIONALE_MIN = 12;
|
|
74147
74152
|
var FIX_RATIONALE_WINDOW = 160;
|
|
74153
|
+
var SIBLING_MARKUP_SOURCES = [
|
|
74154
|
+
CITE_GROUP_RE,
|
|
74155
|
+
FLAG_RE,
|
|
74156
|
+
FIX_LONG_RE,
|
|
74157
|
+
CAUSE_LONG_RE,
|
|
74158
|
+
CONFIRM_LONG_RE,
|
|
74159
|
+
REFUTE_LONG_RE,
|
|
74160
|
+
ATTEMPT_RE,
|
|
74161
|
+
CONSTRAINT_RE
|
|
74162
|
+
].map((re) => ({ source: re.source, flags: re.flags.includes("g") ? re.flags : `${re.flags}g` }));
|
|
74163
|
+
function maskSiblingMarkup(sentence, tagStart, tagEnd) {
|
|
74164
|
+
let masked = sentence;
|
|
74165
|
+
for (const { source, flags: flags2 } of SIBLING_MARKUP_SOURCES) {
|
|
74166
|
+
masked = masked.replace(new RegExp(source, flags2), (m, ...rest2) => {
|
|
74167
|
+
const at = rest2.find((v) => typeof v === "number");
|
|
74168
|
+
if (at <= tagStart && at + m.length >= tagEnd) return m;
|
|
74169
|
+
return " ".repeat(m.length);
|
|
74170
|
+
});
|
|
74171
|
+
}
|
|
74172
|
+
return masked;
|
|
74173
|
+
}
|
|
74174
|
+
var RESIDUAL_OPENER_RE = new RegExp(
|
|
74175
|
+
TAG_OPENERS.map((o) => o.startsWith("(") ? String.raw`\(\s*${o.slice(1, -1)}\s*:` : o.replace(/[[\]!?]/g, "\\$&")).join("|"),
|
|
74176
|
+
"i"
|
|
74177
|
+
);
|
|
74148
74178
|
function fixRationaleBefore(sentence, idx) {
|
|
74149
|
-
const
|
|
74179
|
+
const masked = maskSiblingMarkup(sentence, idx, idx + 1);
|
|
74180
|
+
let start2 = Math.max(0, idx - FIX_RATIONALE_WINDOW);
|
|
74181
|
+
if (start2 > 0 && /\S/.test(masked[start2 - 1]) && /\S/.test(masked[start2])) {
|
|
74182
|
+
const ws = masked.slice(start2, idx).search(/\s/);
|
|
74183
|
+
start2 = ws < 0 ? idx : start2 + ws;
|
|
74184
|
+
}
|
|
74185
|
+
const win = masked.slice(start2, idx);
|
|
74150
74186
|
const m = /[.;!?—][^.;!?—]*$/.exec(win);
|
|
74151
74187
|
const clause = m ? win.slice(m.index + 1) : win;
|
|
74152
74188
|
return clause.replace(/\s+/g, " ").trim();
|
|
74153
74189
|
}
|
|
74154
74190
|
function fixRationaleAfter(sentence, endIdx) {
|
|
74155
|
-
|
|
74156
|
-
|
|
74191
|
+
if (/^\s*[)\]}]/.test(sentence.slice(endIdx))) return "";
|
|
74192
|
+
const masked = maskSiblingMarkup(sentence, endIdx - 1, endIdx);
|
|
74193
|
+
let end = Math.min(masked.length, endIdx + FIX_RATIONALE_WINDOW);
|
|
74194
|
+
if (end < masked.length && /\S/.test(masked[end - 1]) && /\S/.test(masked[end])) {
|
|
74195
|
+
const lastWs = masked.slice(endIdx, end).search(/\s\S*$/);
|
|
74196
|
+
end = lastWs < 0 ? endIdx : endIdx + lastWs;
|
|
74197
|
+
}
|
|
74198
|
+
let win = masked.slice(endIdx, end);
|
|
74199
|
+
const residual = RESIDUAL_OPENER_RE.exec(win);
|
|
74200
|
+
if (residual) win = win.slice(0, residual.index);
|
|
74157
74201
|
const stripped = win.replace(/^[\s—:–,-]+/, "");
|
|
74158
74202
|
const m = /^[^.;!?—]*/.exec(stripped);
|
|
74159
74203
|
const clause = (m ? m[0] : stripped).replace(/\s+/g, " ").trim();
|
|
@@ -74165,6 +74209,78 @@ function deriveFixRationale(sentence, startIdx, endIdx) {
|
|
|
74165
74209
|
if (before.length >= FIX_RATIONALE_MIN) return before;
|
|
74166
74210
|
return fixRationaleAfter(sentence, endIdx);
|
|
74167
74211
|
}
|
|
74212
|
+
var LEADING_OPENER_RE = new RegExp(String.raw`^(?:${RESIDUAL_OPENER_RE.source})(?:#[a-z][\w-]{0,63})?\s*`, "i");
|
|
74213
|
+
var WRAPPER_PAIRS = [["(", ")"], ["[", "]"]];
|
|
74214
|
+
var LEADING_HANDLES_RE = /^(?:\[[a-z0-9][\w-]{0,80}\]\s*,?\s*)+/i;
|
|
74215
|
+
function leadingBracketClose(t) {
|
|
74216
|
+
const pair = WRAPPER_PAIRS.find(([open2]) => t.startsWith(open2));
|
|
74217
|
+
if (!pair) return null;
|
|
74218
|
+
let depth = 0;
|
|
74219
|
+
for (let i2 = 0; i2 < t.length; i2++) {
|
|
74220
|
+
if (t[i2] === pair[0]) depth++;
|
|
74221
|
+
else if (t[i2] === pair[1] && --depth === 0) return i2;
|
|
74222
|
+
}
|
|
74223
|
+
return -1;
|
|
74224
|
+
}
|
|
74225
|
+
function trailingBracketStray(t) {
|
|
74226
|
+
const pair = WRAPPER_PAIRS.find(([, close]) => t.endsWith(close));
|
|
74227
|
+
if (!pair) return false;
|
|
74228
|
+
let depth = 0;
|
|
74229
|
+
for (const ch of t.slice(0, -1)) {
|
|
74230
|
+
if (ch === pair[0]) depth++;
|
|
74231
|
+
else if (ch === pair[1] && depth > 0) depth--;
|
|
74232
|
+
}
|
|
74233
|
+
return depth === 0;
|
|
74234
|
+
}
|
|
74235
|
+
function cleanTagText(text) {
|
|
74236
|
+
let t = text.replace(/\s+/g, " ").trim();
|
|
74237
|
+
for (let pass = 0; pass < 8; pass++) {
|
|
74238
|
+
const before = t;
|
|
74239
|
+
const close = leadingBracketClose(t);
|
|
74240
|
+
const opener = close === null ? null : LEADING_OPENER_RE.exec(t);
|
|
74241
|
+
if (close === -1) {
|
|
74242
|
+
t = t.slice(opener ? opener[0].length : 1).trim();
|
|
74243
|
+
} else if (opener && close === t.length - 1) {
|
|
74244
|
+
t = t.slice(opener[0].length, -1).trim();
|
|
74245
|
+
}
|
|
74246
|
+
if (opener && t !== before) t = t.replace(LEADING_HANDLES_RE, "").trim();
|
|
74247
|
+
if (trailingBracketStray(t)) t = t.slice(0, -1).trim();
|
|
74248
|
+
if (t === before) break;
|
|
74249
|
+
}
|
|
74250
|
+
return t;
|
|
74251
|
+
}
|
|
74252
|
+
var TAG_TEXT_FIELDS = [
|
|
74253
|
+
"fixRationale",
|
|
74254
|
+
"statement",
|
|
74255
|
+
"causeText",
|
|
74256
|
+
"causeOf",
|
|
74257
|
+
"patternText",
|
|
74258
|
+
"domainText",
|
|
74259
|
+
"packageText",
|
|
74260
|
+
"componentText"
|
|
74261
|
+
];
|
|
74262
|
+
function cleanEmittedTags(tags) {
|
|
74263
|
+
const kept = [];
|
|
74264
|
+
for (const tag of tags) {
|
|
74265
|
+
let emptied = false;
|
|
74266
|
+
for (const field of TAG_TEXT_FIELDS) {
|
|
74267
|
+
const value = tag[field];
|
|
74268
|
+
if (value === void 0) continue;
|
|
74269
|
+
const cleaned = cleanTagText(value);
|
|
74270
|
+
if (field === "fixRationale" && cleaned.length < FIX_RATIONALE_MIN) {
|
|
74271
|
+
delete tag.fixRationale;
|
|
74272
|
+
continue;
|
|
74273
|
+
}
|
|
74274
|
+
if (cleaned.length === 0) emptied = true;
|
|
74275
|
+
tag[field] = cleaned;
|
|
74276
|
+
}
|
|
74277
|
+
const hasReference = tag.handle !== void 0 || (tag.handles?.length ?? 0) > 0 || (tag.refuteHandles?.length ?? 0) > 0;
|
|
74278
|
+
if (emptied && !hasReference) continue;
|
|
74279
|
+
if (tag.kind === "fix" && !hasReference && tag.fixRationale === void 0) continue;
|
|
74280
|
+
kept.push(tag);
|
|
74281
|
+
}
|
|
74282
|
+
return kept;
|
|
74283
|
+
}
|
|
74168
74284
|
function emptyTagDispositions() {
|
|
74169
74285
|
return {
|
|
74170
74286
|
oversizeSegments: 0,
|
|
@@ -74532,7 +74648,7 @@ function parseInlineTagsWithDispositions(text) {
|
|
|
74532
74648
|
}
|
|
74533
74649
|
for (let i2 = seqStart; i2 < out2.length; i2++) out2[i2].seq = seqNo;
|
|
74534
74650
|
}
|
|
74535
|
-
return { tags: out2, dispositions };
|
|
74651
|
+
return { tags: cleanEmittedTags(out2), dispositions };
|
|
74536
74652
|
}
|
|
74537
74653
|
var LABEL_PAIR = {
|
|
74538
74654
|
"Problem>RootCause": "CAUSED_BY",
|
|
@@ -78206,7 +78322,7 @@ function createWatchBreaker(deps) {
|
|
|
78206
78322
|
}
|
|
78207
78323
|
|
|
78208
78324
|
// src/engine.ts
|
|
78209
|
-
var DAEMON_VERSION = true ? "2.0.6-dev.
|
|
78325
|
+
var DAEMON_VERSION = true ? "2.0.6-dev.2550" : "2.0.0-alpha.0";
|
|
78210
78326
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
78211
78327
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
78212
78328
|
var GIT_OP_MUTE_MS = 4e3;
|