@inerrata-corporation/errata 2.0.14-dev.3160 → 2.0.14-dev.3165
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 +20 -51
- package/package.json +1 -1
package/errata.mjs
CHANGED
|
@@ -15493,8 +15493,6 @@ function looksLikeSecretValue(raw2, quoted) {
|
|
|
15493
15493
|
if (raw2.includes("${") || raw2.includes("{{") || raw2.includes("%(")) return false;
|
|
15494
15494
|
if (raw2.startsWith("[redacted:")) return false;
|
|
15495
15495
|
if (quoted) return raw2.length > 0;
|
|
15496
|
-
const lower = raw2.toLowerCase();
|
|
15497
|
-
if (ASSIGNMENT_STOPWORDS.has(lower)) return false;
|
|
15498
15496
|
if (/^(?:process\.env\.|os\.environ(?:\[|\.)|(?:request|response|config|settings|options)\.)/.test(raw2)) return false;
|
|
15499
15497
|
if (/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\(/.test(raw2)) return false;
|
|
15500
15498
|
return raw2.length > 0;
|
|
@@ -15559,75 +15557,36 @@ function scrubHistoryValue(value) {
|
|
|
15559
15557
|
const clear = (input) => typeof input === "string" ? input.replace(literals, REDACTED_CREDENTIAL) : Array.isArray(input) ? input.map(clear) : input && typeof input === "object" ? Object.fromEntries(Object.entries(input).map(([k, v]) => [k, clear(v)])) : input;
|
|
15560
15558
|
return clear(safe);
|
|
15561
15559
|
}
|
|
15562
|
-
var HISTORY_SCRUBBER_VERSION, REDACTED_CREDENTIAL, REDACTED_EMAIL, cred,
|
|
15560
|
+
var HISTORY_SCRUBBER_VERSION, REDACTED_CREDENTIAL, REDACTED_EMAIL, cred, PASSWORD_PROSE_DESCRIPTORS, CREDENTIAL_RULES, EMAIL_RE;
|
|
15563
15561
|
var init_history_text = __esm({
|
|
15564
15562
|
"../../packages/shared/src/history-text.ts"() {
|
|
15565
15563
|
"use strict";
|
|
15566
|
-
HISTORY_SCRUBBER_VERSION = "history-scrub-
|
|
15564
|
+
HISTORY_SCRUBBER_VERSION = "history-scrub-5";
|
|
15567
15565
|
REDACTED_CREDENTIAL = "[redacted:credential]";
|
|
15568
15566
|
REDACTED_EMAIL = "[redacted:email]";
|
|
15569
15567
|
cred = () => REDACTED_CREDENTIAL;
|
|
15570
|
-
|
|
15571
|
-
"string",
|
|
15572
|
-
"boolean",
|
|
15573
|
-
"number",
|
|
15568
|
+
PASSWORD_PROSE_DESCRIPTORS = /* @__PURE__ */ new Set([
|
|
15574
15569
|
"required",
|
|
15575
15570
|
"optional",
|
|
15576
15571
|
"undefined",
|
|
15577
15572
|
"unknown",
|
|
15578
|
-
"function",
|
|
15579
|
-
"process",
|
|
15580
|
-
"request",
|
|
15581
|
-
"response",
|
|
15582
|
-
"password",
|
|
15583
|
-
"secret",
|
|
15584
|
-
"token",
|
|
15585
|
-
"tokens",
|
|
15586
|
-
"credential",
|
|
15587
|
-
"credentials",
|
|
15588
|
-
"bearer",
|
|
15589
|
-
"basic",
|
|
15590
|
-
"example",
|
|
15591
15573
|
"redacted",
|
|
15592
15574
|
"nullable",
|
|
15593
|
-
"readonly",
|
|
15594
|
-
"override",
|
|
15595
|
-
"abstract",
|
|
15596
|
-
"interface",
|
|
15597
|
-
"constant",
|
|
15598
|
-
"variable",
|
|
15599
|
-
"property",
|
|
15600
|
-
"parameter",
|
|
15601
|
-
"argument",
|
|
15602
|
-
"callback",
|
|
15603
|
-
"promise",
|
|
15604
|
-
"settings",
|
|
15605
|
-
"options",
|
|
15606
|
-
"default",
|
|
15607
15575
|
"disabled",
|
|
15608
15576
|
"enabled",
|
|
15609
|
-
"internal",
|
|
15610
|
-
"external",
|
|
15611
|
-
"protected",
|
|
15612
15577
|
"provided",
|
|
15613
|
-
"resolved",
|
|
15614
15578
|
"rejected",
|
|
15615
|
-
"expected",
|
|
15616
|
-
"received",
|
|
15617
15579
|
"salt",
|
|
15618
15580
|
"hash",
|
|
15619
15581
|
"hashed",
|
|
15620
|
-
"hashing"
|
|
15621
|
-
"authentication",
|
|
15622
|
-
"field",
|
|
15623
|
-
"format"
|
|
15582
|
+
"hashing"
|
|
15624
15583
|
]);
|
|
15625
15584
|
CREDENTIAL_RULES = [
|
|
15626
15585
|
// Human-written seed/reset notes omit assignment punctuation: password `…`
|
|
15627
15586
|
// or password (…). Preserve names of fields and hash components.
|
|
15628
15587
|
{
|
|
15629
15588
|
re: /\b((?:password|passwd|passphrase|pwd)\s+)(["'`(])([^\s"'`,;)}\]]+)(["'`)])/gi,
|
|
15630
|
-
replace: (m) => !
|
|
15589
|
+
replace: (m) => !(m[2] === "(" && PASSWORD_PROSE_DESCRIPTORS.has((m[3] ?? "").toLowerCase())) && looksLikeSecretValue(m[3] ?? "", true) ? `${m[1]}${m[2]}${REDACTED_CREDENTIAL}${m[4]}` : null
|
|
15631
15590
|
},
|
|
15632
15591
|
// "with SeedValue42! credentials" and "with SeedValue42!/seeded account".
|
|
15633
15592
|
// Require mixed-case letters plus a digit, or a password-like special char;
|
|
@@ -15657,7 +15616,7 @@ var init_history_text = __esm({
|
|
|
15657
15616
|
re: /\b((?:password|passwd|passphrase|pwd)\s+(?:is|was|of)\s+)(["'\x60]?)([^\s"'\x60,;)}\]]+)/gi,
|
|
15658
15617
|
replace: (m) => {
|
|
15659
15618
|
const value = m[3] ?? "";
|
|
15660
|
-
if (
|
|
15619
|
+
if (!m[2] && PASSWORD_PROSE_DESCRIPTORS.has(value.toLowerCase()) || value.startsWith("[redacted:") || /\$\{|\{\{|process\./.test(value)) return null;
|
|
15661
15620
|
return `${m[1]}${m[2]}${REDACTED_CREDENTIAL}`;
|
|
15662
15621
|
}
|
|
15663
15622
|
},
|
|
@@ -15693,8 +15652,9 @@ var init_history_text = __esm({
|
|
|
15693
15652
|
},
|
|
15694
15653
|
// Assignments after key-ish names: `password=...`, `API_KEY: "..."`,
|
|
15695
15654
|
// `"client_secret": "..."`, `AWS_SECRET_ACCESS_KEY=...`, 32+ hex/base64 after
|
|
15696
|
-
// any of them.
|
|
15697
|
-
// `password
|
|
15655
|
+
// any of them. Recognizable expressions such as `process.env.X` survive.
|
|
15656
|
+
// Bare `password: string` is ambiguous with YAML containing a literal weak
|
|
15657
|
+
// password, so it is redacted. A stopword is never proof of safe code.
|
|
15698
15658
|
{
|
|
15699
15659
|
re: /((?:[A-Za-z0-9_.-]*?)(?:password|passwd|passphrase|pwd|secret|token|api[_-]?key|apikey|access[_-]?key|private[_-]?key|auth[_-]?key|credential)(?:[A-Za-z0-9_-]*))(["']?\s*(?:=>|=|:)\s*)(["'`]?)([^\s"'`,;)}\]]+)/gi,
|
|
15700
15660
|
replace: (m) => {
|
|
@@ -75865,6 +75825,7 @@ var PLACEHOLDER_HANDLES = /* @__PURE__ */ new Set([
|
|
|
75865
75825
|
"b"
|
|
75866
75826
|
]);
|
|
75867
75827
|
var isPlaceholderHandle = (h) => PLACEHOLDER_HANDLES.has(h.toLowerCase());
|
|
75828
|
+
var FLAG_BODY_HANDLE_RE = /^(?:[a-z0-9]+(?:-[a-z0-9]+){2,}-(?=[0-9a-f]{0,3}\d)[0-9a-f]{4}|(?:pat|sol|drc|dcause|dfix|dprob|prob|claim|err)_[0-9a-f]{6,})$/i;
|
|
75868
75829
|
var FIX_PREFIX = /^\s*fix:(?:#([a-z][\w-]{0,63}))?\s*/i;
|
|
75869
75830
|
var CONSTRAINT_RE = /\(\s*constraint:\s*([^()\n]{8,}?)\s*\)/gi;
|
|
75870
75831
|
var CAUSE_PREFIX = /^\s*cause:(?:#([a-z][\w-]{0,63}))?\s*/i;
|
|
@@ -76040,7 +76001,8 @@ function emptyTagDispositions() {
|
|
|
76040
76001
|
negated: 0,
|
|
76041
76002
|
unparseable: 0,
|
|
76042
76003
|
placeholderEcho: 0,
|
|
76043
|
-
verdictNoHandle: 0
|
|
76004
|
+
verdictNoHandle: 0,
|
|
76005
|
+
flagAsHandle: 0
|
|
76044
76006
|
};
|
|
76045
76007
|
}
|
|
76046
76008
|
function addTagDispositions(a, b) {
|
|
@@ -76052,6 +76014,7 @@ function addTagDispositions(a, b) {
|
|
|
76052
76014
|
a.unparseable += b.unparseable;
|
|
76053
76015
|
a.placeholderEcho += b.placeholderEcho;
|
|
76054
76016
|
a.verdictNoHandle += b.verdictNoHandle;
|
|
76017
|
+
a.flagAsHandle += b.flagAsHandle;
|
|
76055
76018
|
}
|
|
76056
76019
|
function parseInlineTags(text) {
|
|
76057
76020
|
return parseInlineTagsWithDispositions(text).tags;
|
|
@@ -76287,6 +76250,11 @@ function parseInlineTagsWithDispositions(text) {
|
|
|
76287
76250
|
while ((f = FLAG_RE.exec(sentence)) !== null) {
|
|
76288
76251
|
const flagThread = f[2];
|
|
76289
76252
|
const raw3 = f[3].trim();
|
|
76253
|
+
if (FLAG_BODY_HANDLE_RE.test(raw3) && !f[4]) {
|
|
76254
|
+
dispositions.flagAsHandle++;
|
|
76255
|
+
out2.push({ kind: "prior", handle: raw3, sentence: sfield });
|
|
76256
|
+
continue;
|
|
76257
|
+
}
|
|
76290
76258
|
if (raw3.length >= 8) {
|
|
76291
76259
|
const segs = raw3.split(CAUSE_ARROW).map((s) => s.trim()).filter((s) => s.length > 0);
|
|
76292
76260
|
const symptomRaw = segs.length > 1 ? segs[0] : raw3;
|
|
@@ -81258,7 +81226,7 @@ function createWatchBreaker(deps) {
|
|
|
81258
81226
|
}
|
|
81259
81227
|
|
|
81260
81228
|
// src/engine.ts
|
|
81261
|
-
var DAEMON_VERSION = true ? "2.0.14-dev.
|
|
81229
|
+
var DAEMON_VERSION = true ? "2.0.14-dev.3165" : "2.0.0-alpha.0";
|
|
81262
81230
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
81263
81231
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
81264
81232
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -82975,6 +82943,7 @@ function createWorkspaceEngine(opts) {
|
|
|
82975
82943
|
// HZ-corrob-wire: a verdict group naming no resolvable handle — judged,
|
|
82976
82944
|
// but nothing judgeable was cited.
|
|
82977
82945
|
tagsVerdictNoHandle: dispositions.verdictNoHandle,
|
|
82946
|
+
tagsFlagAsHandle: dispositions.flagAsHandle,
|
|
82978
82947
|
unresolvedHandles,
|
|
82979
82948
|
priorEdgesFlagOff,
|
|
82980
82949
|
priorEdgesNoSource,
|