@inerrata-corporation/errata 2.0.14-dev.3162 → 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 +10 -50
- 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) => {
|
|
@@ -81266,7 +81226,7 @@ function createWatchBreaker(deps) {
|
|
|
81266
81226
|
}
|
|
81267
81227
|
|
|
81268
81228
|
// src/engine.ts
|
|
81269
|
-
var DAEMON_VERSION = true ? "2.0.14-dev.
|
|
81229
|
+
var DAEMON_VERSION = true ? "2.0.14-dev.3165" : "2.0.0-alpha.0";
|
|
81270
81230
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
81271
81231
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
81272
81232
|
var GIT_OP_MUTE_MS = 4e3;
|