@monoes/monomindcli 2.9.1 → 2.9.3
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/.claude/helpers/statusline.cjs +45 -0
- package/.claude/helpers/token-tracker.cjs +13 -1
- package/.claude/settings.json +0 -1
- package/.claude/skills/github-toolkit/SKILL.md +60 -0
- package/.claude/skills/mastermind-createorg/SKILL.md +8 -2
- package/.claude/skills/memory-toolkit/SKILL.md +75 -0
- package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +24 -1
- package/README.md +1 -1
- package/dist/src/agents/registry-builder.d.ts.map +1 -1
- package/dist/src/agents/registry-builder.js +94 -1
- package/dist/src/agents/registry-builder.js.map +1 -1
- package/dist/src/capabilities/cap-documents.js +7 -7
- package/dist/src/capabilities/cap-documents.js.map +1 -1
- package/dist/src/commands/completions.js +2 -2
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/doctor-env-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-env-checks.js +14 -2
- package/dist/src/commands/doctor-env-checks.js.map +1 -1
- package/dist/src/commands/index.d.ts +27 -41
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +113 -207
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init-wizard.d.ts.map +1 -1
- package/dist/src/commands/init-wizard.js +35 -0
- package/dist/src/commands/init-wizard.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +43 -0
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/neural-optimize.d.ts.map +1 -1
- package/dist/src/commands/neural-optimize.js +12 -8
- package/dist/src/commands/neural-optimize.js.map +1 -1
- package/dist/src/commands/org-observe.js +2 -2
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +2 -2
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +21 -4
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +16 -37
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +45 -0
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +8 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/init/upgrade.d.ts.map +1 -1
- package/dist/src/init/upgrade.js +3 -9
- package/dist/src/init/upgrade.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +1 -0
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +7 -15
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts +17 -0
- package/dist/src/memory/bm25-index.d.ts.map +1 -1
- package/dist/src/memory/bm25-index.js +17 -0
- package/dist/src/memory/bm25-index.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +4 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +128 -22
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +0 -50
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-kg.d.ts.map +1 -1
- package/dist/src/memory/memory-kg.js +21 -5
- package/dist/src/memory/memory-kg.js.map +1 -1
- package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
- package/dist/src/monovector/diff-classifier.js +11 -20
- package/dist/src/monovector/diff-classifier.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts +9 -0
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -0
- package/dist/src/orgrt/antigravity-runner.js +250 -0
- package/dist/src/orgrt/antigravity-runner.js.map +1 -0
- package/dist/src/orgrt/codex-runner.d.ts +9 -0
- package/dist/src/orgrt/codex-runner.d.ts.map +1 -0
- package/dist/src/orgrt/codex-runner.js +216 -0
- package/dist/src/orgrt/codex-runner.js.map +1 -0
- package/dist/src/orgrt/cross-org.d.ts.map +1 -1
- package/dist/src/orgrt/cross-org.js +8 -0
- package/dist/src/orgrt/cross-org.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +14 -7
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +72 -12
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/fence.d.ts +39 -0
- package/dist/src/orgrt/fence.d.ts.map +1 -0
- package/dist/src/orgrt/fence.js +75 -0
- package/dist/src/orgrt/fence.js.map +1 -0
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +27 -1
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/provider.d.ts.map +1 -1
- package/dist/src/orgrt/provider.js +26 -0
- package/dist/src/orgrt/provider.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +11 -1
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +60 -3
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/tool-fence.d.ts +7 -2
- package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
- package/dist/src/orgrt/tool-fence.js +18 -2
- package/dist/src/orgrt/tool-fence.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +222 -0
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +34 -3
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/orgrt/vercel-providers.d.ts +29 -0
- package/dist/src/orgrt/vercel-providers.d.ts.map +1 -0
- package/dist/src/orgrt/vercel-providers.js +162 -0
- package/dist/src/orgrt/vercel-providers.js.map +1 -0
- package/dist/src/orgrt/vercel-runner.d.ts +39 -0
- package/dist/src/orgrt/vercel-runner.d.ts.map +1 -0
- package/dist/src/orgrt/vercel-runner.js +121 -0
- package/dist/src/orgrt/vercel-runner.js.map +1 -0
- package/dist/src/orgrt/vercel-session-store.d.ts +12 -0
- package/dist/src/orgrt/vercel-session-store.d.ts.map +1 -0
- package/dist/src/orgrt/vercel-session-store.js +49 -0
- package/dist/src/orgrt/vercel-session-store.js.map +1 -0
- package/dist/src/pricing/model-pricing.d.ts +10 -1
- package/dist/src/pricing/model-pricing.d.ts.map +1 -1
- package/dist/src/pricing/model-pricing.js +18 -1
- package/dist/src/pricing/model-pricing.js.map +1 -1
- package/dist/src/services/crash-reporter.d.ts +6 -5
- package/dist/src/services/crash-reporter.d.ts.map +1 -1
- package/dist/src/services/crash-reporter.js +6 -81
- package/dist/src/services/crash-reporter.js.map +1 -1
- package/dist/src/ui/collector.mjs +16 -82
- package/dist/src/ui/dashboard.html +176 -545
- package/dist/src/ui/data/mastermind-sessions.json +1 -0
- package/dist/src/ui/markdown.js +273 -0
- package/dist/src/ui/server.mjs +99 -189
- package/dist/src/utils/input-guards.d.ts +4 -1
- package/dist/src/utils/input-guards.d.ts.map +1 -1
- package/dist/src/utils/input-guards.js +6 -4
- package/dist/src/utils/input-guards.js.map +1 -1
- package/dist/src/utils/redaction.d.ts +24 -0
- package/dist/src/utils/redaction.d.ts.map +1 -0
- package/dist/src/utils/redaction.js +190 -0
- package/dist/src/utils/redaction.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -5
- package/scripts/check-workspace-deps.mjs +45 -0
- package/scripts/publish.sh +24 -33
|
@@ -38,7 +38,10 @@ export declare function realOrResolved(p: string): string;
|
|
|
38
38
|
export declare function validateInput(value: unknown, opts: ValidateInputOpts): ValidationResult;
|
|
39
39
|
/**
|
|
40
40
|
* Sanitize an error before returning it to MCP callers.
|
|
41
|
-
* Strips filesystem paths from error messages to avoid
|
|
41
|
+
* Strips filesystem paths (POSIX and Windows) from error messages to avoid
|
|
42
|
+
* leaking internal layout. Shared with crash-reporter.ts and
|
|
43
|
+
* neural-optimize.ts's PII stripping via utils/redaction.ts — this used to
|
|
44
|
+
* be a single POSIX-only regex with no Windows-path handling.
|
|
42
45
|
*/
|
|
43
46
|
export declare function sanitizeError(error: unknown): string;
|
|
44
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guards.d.ts","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"input-guards.d.ts","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoDD;;;;;;;yCAOyC;AACzC,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBhD;AAuED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,iBAAiB,GACtB,gBAAgB,CAalB;AAMD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKpD;AAWD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,MAAM,SAAU,GACf,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,GACjB,MAAM,CAGR;AAQD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,MAAM,GAAG,IAAI,CAKvE;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAuChC"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { resolve, isAbsolute, relative, dirname, basename } from 'node:path';
|
|
12
12
|
import { cwd } from 'node:process';
|
|
13
13
|
import { realpathSync } from 'node:fs';
|
|
14
|
+
import { redactPaths } from './redaction.js';
|
|
14
15
|
/**
|
|
15
16
|
* Strip C0 and C1 control characters (U+0000–U+001F, U+007F–U+009F)
|
|
16
17
|
* but preserve printable ASCII and extended Unicode.
|
|
@@ -172,13 +173,14 @@ export function validateInput(value, opts) {
|
|
|
172
173
|
/* ------------------------------------------------------------------ */
|
|
173
174
|
/**
|
|
174
175
|
* Sanitize an error before returning it to MCP callers.
|
|
175
|
-
* Strips filesystem paths from error messages to avoid
|
|
176
|
+
* Strips filesystem paths (POSIX and Windows) from error messages to avoid
|
|
177
|
+
* leaking internal layout. Shared with crash-reporter.ts and
|
|
178
|
+
* neural-optimize.ts's PII stripping via utils/redaction.ts — this used to
|
|
179
|
+
* be a single POSIX-only regex with no Windows-path handling.
|
|
176
180
|
*/
|
|
177
181
|
export function sanitizeError(error) {
|
|
178
182
|
if (error instanceof Error) {
|
|
179
|
-
return error.message
|
|
180
|
-
.replace(/\/[^\s:]+(\/|(?=\s|:|$))/g, '<path>/')
|
|
181
|
-
.substring(0, 500);
|
|
183
|
+
return redactPaths(error.message).substring(0, 500);
|
|
182
184
|
}
|
|
183
185
|
return 'Internal error';
|
|
184
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guards.js","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"input-guards.js","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path redaction: home dir, username, generic `/home`/`/Users`/`C:\Users`
|
|
3
|
+
* prefixes (POSIX and Windows), and a generic absolute-path-to-basename
|
|
4
|
+
* collapse. Standalone entry point for callers that only need paths gone
|
|
5
|
+
* (e.g. sanitizeError() — an internal error message, not published data).
|
|
6
|
+
*/
|
|
7
|
+
export declare function redactPaths(text: string): string;
|
|
8
|
+
/** IPv4/IPv6, email, SSN, phone, and hostname redaction. */
|
|
9
|
+
export declare function redactPii(text: string): string;
|
|
10
|
+
/** API keys, tokens, passwords, private keys, and known provider key formats. */
|
|
11
|
+
export declare function redactSecrets(text: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Strip obvious secrets/PII/paths before anything gets sent somewhere it
|
|
14
|
+
* shouldn't (a public GitHub issue, an exported pattern file). Not a
|
|
15
|
+
* substitute for careful callers — this is a last-resort net.
|
|
16
|
+
*
|
|
17
|
+
* Order matters: home/user/generic-prefix replacement must run before the
|
|
18
|
+
* generic absolute-path collapse (so a username-bearing path collapses to
|
|
19
|
+
* `<user>`'s neighborhood correctly), and secret-pattern stripping runs
|
|
20
|
+
* before that path collapse too (a secret string that happens to look
|
|
21
|
+
* path-like should still hit the secret patterns first).
|
|
22
|
+
*/
|
|
23
|
+
export declare function redact(text: string): string;
|
|
24
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/utils/redaction.ts"],"names":[],"mappings":"AA+JA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY3C"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared redaction — paths, PII, and secret patterns.
|
|
3
|
+
*
|
|
4
|
+
* Previously duplicated in three places that had already diverged:
|
|
5
|
+
* - crash-reporter.ts's `redact()` — the fullest implementation (POSIX +
|
|
6
|
+
* Windows paths, IPv4/IPv6, email, SSN, phone, 12 secret patterns,
|
|
7
|
+
* hostnames). This module is a lift of that pipeline.
|
|
8
|
+
* - input-guards.ts's `sanitizeError()` — a single POSIX-only path regex,
|
|
9
|
+
* no PII/secret handling at all.
|
|
10
|
+
* - neural-optimize.ts's `stripPii` block — POSIX-only `/Users`/`/home`
|
|
11
|
+
* paths, email, IPv4; no Windows paths, no secret patterns, despite
|
|
12
|
+
* defaulting ON specifically because it feeds a publicly-published
|
|
13
|
+
* pattern export.
|
|
14
|
+
* Consolidated here so a new secret pattern or a Windows-path fix reaches
|
|
15
|
+
* every caller instead of two of three.
|
|
16
|
+
*/
|
|
17
|
+
import { homedir } from 'os';
|
|
18
|
+
// Step order matters within `redact()` — see the inline comments below for
|
|
19
|
+
// why (mirrors crash-reporter.ts's original pipeline exactly).
|
|
20
|
+
function stripHomeAndUser(text, home) {
|
|
21
|
+
let out = text;
|
|
22
|
+
if (home)
|
|
23
|
+
out = out.split(home).join('~');
|
|
24
|
+
const username = home.split('/').pop();
|
|
25
|
+
if (username && username.length > 2) {
|
|
26
|
+
out = out.replace(new RegExp(`\\b${username}\\b`, 'g'), '<user>');
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
// Generic path prefixes, in case a compiled binary's stack trace embeds a
|
|
31
|
+
// *different* machine's home dir (e.g. the CI runner or maintainer's build
|
|
32
|
+
// box) than the one stripHomeAndUser() is keyed to. Includes the Windows
|
|
33
|
+
// form — the gap both former narrow implementations had.
|
|
34
|
+
function stripGenericUserPrefixes(text) {
|
|
35
|
+
let out = text;
|
|
36
|
+
out = out.replace(/\/home\/[^/\s]+/g, '/home/<user>');
|
|
37
|
+
out = out.replace(/\/Users\/[^/\s]+/g, '/Users/<user>');
|
|
38
|
+
out = out.replace(/C:\\Users\\[^\\\s]+/g, 'C:\\Users\\<user>');
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
function stripIPv4(text) {
|
|
42
|
+
return text.replace(/\b(?:\d{1,3}\.){3}\d{1,3}\b/g, '<ip>');
|
|
43
|
+
}
|
|
44
|
+
// #124-review: the original `[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}`
|
|
45
|
+
// has the same catastrophic-backtracking shape as the hostname regex fixed
|
|
46
|
+
// above, in TWO places: the unbounded local-part quantifier backtracks
|
|
47
|
+
// character-by-character at every scan position when no `@` follows (a
|
|
48
|
+
// long dotted string with no `@` at all — ~2s on 40K chars), and the
|
|
49
|
+
// domain part's `[A-Za-z0-9.-]+` vs the final `\.[A-Za-z]{2,}` has the
|
|
50
|
+
// exact middle-vs-final split ambiguity the hostname fix removes. Local
|
|
51
|
+
// part bounded to 64 chars (RFC 5321's actual limit); domain rewritten so
|
|
52
|
+
// each label's trailing dot is consumed by the SAME repeated group, never
|
|
53
|
+
// re-attemptable as part of the final TLD segment, with the repetition
|
|
54
|
+
// itself capped at 10 labels (real hostnames essentially never need more).
|
|
55
|
+
function stripEmail(text) {
|
|
56
|
+
return text.replace(/\b[A-Za-z0-9._%+-]{1,64}@(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.){1,10}[A-Za-z]{2,24}\b/g, '<email>');
|
|
57
|
+
}
|
|
58
|
+
function stripSsnAndPhone(text) {
|
|
59
|
+
let out = text;
|
|
60
|
+
out = out.replace(/\b\d{3}-\d{2}-\d{4}\b/g, '<ssn>');
|
|
61
|
+
out = out.replace(/(?:\+?\d{1,3}[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g, '<phone>');
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
const SECRET_PATTERNS = [
|
|
65
|
+
/(?:api[_-]?key|apikey)\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/gi,
|
|
66
|
+
/(?:secret|password|passwd|pwd)\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/gi,
|
|
67
|
+
/(?:token|bearer)\s*[:=]\s*['"]?[^\s'"]{10,}['"]?/gi,
|
|
68
|
+
/-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g,
|
|
69
|
+
/sk-ant-[a-zA-Z0-9_-]{20,}/g,
|
|
70
|
+
/sk-[a-zA-Z0-9_-]{20,}/g,
|
|
71
|
+
/ghp_[a-zA-Z0-9]{36}/g,
|
|
72
|
+
/gho_[a-zA-Z0-9]{36}/g,
|
|
73
|
+
/npm_[a-zA-Z0-9]{36}/g,
|
|
74
|
+
/AKIA[0-9A-Z]{16}/g,
|
|
75
|
+
/eyJ[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}/g, // JWT
|
|
76
|
+
/[a-zA-Z][a-zA-Z0-9+.-]*:\/\/[^:\s]+:[^@\s]+@[^\s'"]+/g, // user:pass@host connection strings
|
|
77
|
+
];
|
|
78
|
+
function stripSecretPatterns(text) {
|
|
79
|
+
let out = text;
|
|
80
|
+
for (const pattern of SECRET_PATTERNS)
|
|
81
|
+
out = out.replace(pattern, '[redacted]');
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
// Collapse any remaining multi-segment absolute path to its basename,
|
|
85
|
+
// preserving optional :line:col suffixes for debuggability. Fires on
|
|
86
|
+
// /a/b, ~/a/b, C:\a\b — single-segment paths (/tmp) are not touched.
|
|
87
|
+
// Must run AFTER home-dir/username replacement — see redactPaths()/redact().
|
|
88
|
+
function collapseAbsolutePaths(text) {
|
|
89
|
+
return text.replace(/(?:~\/|(?<![:/>\w])\/(?!\/)|[A-Z]:\\)(?:[^\s'"]*[/\\])([\w.-]+(?::\d+(?::\d+)?)?)/g, '<path>/$1');
|
|
90
|
+
}
|
|
91
|
+
const KNOWN_CODE_EXTS = /\.(?:js|ts|jsx|tsx|json|md|yaml|yml|html|css|mjs|cjs|toml|xml|txt|log|sql|sh|py|go|rs|rb|java|c|cpp|h|hpp|swift|kt|lock|map)$/i;
|
|
92
|
+
function stripHostnames(text) {
|
|
93
|
+
let out = text;
|
|
94
|
+
// Contextual: hostnames that follow :// or @ (requires at least one dot).
|
|
95
|
+
out = out.replace(/(\/\/|@)([a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+)/g, '$1<host>');
|
|
96
|
+
// Standalone: 3+ dot-separated segments with a TLD-like tail (2-6 alpha
|
|
97
|
+
// chars). Excludes version numbers (v2.9.0, 1.2.3), filenames whose last
|
|
98
|
+
// segment is a known code/config extension, and bare decimal numbers.
|
|
99
|
+
//
|
|
100
|
+
// #124-review: the original two-part regex (`(?:\.seg)+` immediately
|
|
101
|
+
// followed by a required `\.[a-zA-Z]{2,6}`) let the engine backtrack over
|
|
102
|
+
// every way to split a long run of dot-segments between "middle
|
|
103
|
+
// repetitions" and "the final segment" before concluding no match —
|
|
104
|
+
// catastrophic (measured ~quadratic) backtracking on a crafted non-
|
|
105
|
+
// matching input (e.g. a long chain of short dotted tokens with no valid
|
|
106
|
+
// trailing TLD), reachable via both crash-reporter's redact() and
|
|
107
|
+
// neural-optimize.ts's public pattern-export path. Rewritten so segments
|
|
108
|
+
// can never contain a dot themselves — there is exactly one way to parse
|
|
109
|
+
// any input, so there is nothing to backtrack over. The "last segment
|
|
110
|
+
// must be a short alpha TLD" check moves into the callback instead of the
|
|
111
|
+
// regex, since the regex itself no longer distinguishes middle vs final.
|
|
112
|
+
out = out.replace(/\b[a-zA-Z][a-zA-Z0-9-]*(?:\.[a-zA-Z0-9][a-zA-Z0-9-]*){2,}\b/g, (match) => {
|
|
113
|
+
if (/^v?\d+(\.\d+)+$/.test(match))
|
|
114
|
+
return match; // version
|
|
115
|
+
if (KNOWN_CODE_EXTS.test(match))
|
|
116
|
+
return match; // filename
|
|
117
|
+
if (/^\d+(\.\d+)+$/.test(match))
|
|
118
|
+
return match; // decimal
|
|
119
|
+
const lastSegment = match.slice(match.lastIndexOf('.') + 1);
|
|
120
|
+
if (!/^[a-zA-Z]{2,6}$/.test(lastSegment))
|
|
121
|
+
return match; // not a TLD-shaped tail
|
|
122
|
+
return '<host>';
|
|
123
|
+
});
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
function stripIPv6(text) {
|
|
127
|
+
let out = text;
|
|
128
|
+
// Bracketed form (URLs): [::1], [fe80::1], [2001:db8::1]
|
|
129
|
+
out = out.replace(/\[(?:[0-9a-fA-F]{0,4}:){2,}[0-9a-fA-F]{0,4}\]/g, '[<ipv6>]');
|
|
130
|
+
// Full unbracketed: 3+ colon-separated hex groups (avoids HH:MM:SS false positives)
|
|
131
|
+
out = out.replace(/(?<![:\w])(?:[0-9a-fA-F]{1,4}:){3,7}[0-9a-fA-F]{0,4}(?![:\w])/g, '<ipv6>');
|
|
132
|
+
// Compressed :: with leading hex groups: fe80::1, 2001:db8::1.
|
|
133
|
+
// Uses \b (not lookbehind) so hex digits before :: don't block the match.
|
|
134
|
+
// std::vector is safe: 's' is not [0-9a-fA-F].
|
|
135
|
+
out = out.replace(/\b[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*::(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?\b/g, '<ipv6>');
|
|
136
|
+
// Compressed :: without leading hex: ::1, ::ffff:10.0.0.1
|
|
137
|
+
out = out.replace(/(?<![:\w])::(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?(?![:\w])/g, '<ipv6>');
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Path redaction: home dir, username, generic `/home`/`/Users`/`C:\Users`
|
|
142
|
+
* prefixes (POSIX and Windows), and a generic absolute-path-to-basename
|
|
143
|
+
* collapse. Standalone entry point for callers that only need paths gone
|
|
144
|
+
* (e.g. sanitizeError() — an internal error message, not published data).
|
|
145
|
+
*/
|
|
146
|
+
export function redactPaths(text) {
|
|
147
|
+
const home = homedir();
|
|
148
|
+
let out = stripHomeAndUser(text, home);
|
|
149
|
+
out = stripGenericUserPrefixes(out);
|
|
150
|
+
out = collapseAbsolutePaths(out);
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
/** IPv4/IPv6, email, SSN, phone, and hostname redaction. */
|
|
154
|
+
export function redactPii(text) {
|
|
155
|
+
let out = stripIPv4(text);
|
|
156
|
+
out = stripEmail(out);
|
|
157
|
+
out = stripSsnAndPhone(out);
|
|
158
|
+
out = stripHostnames(out);
|
|
159
|
+
out = stripIPv6(out);
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/** API keys, tokens, passwords, private keys, and known provider key formats. */
|
|
163
|
+
export function redactSecrets(text) {
|
|
164
|
+
return stripSecretPatterns(text);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Strip obvious secrets/PII/paths before anything gets sent somewhere it
|
|
168
|
+
* shouldn't (a public GitHub issue, an exported pattern file). Not a
|
|
169
|
+
* substitute for careful callers — this is a last-resort net.
|
|
170
|
+
*
|
|
171
|
+
* Order matters: home/user/generic-prefix replacement must run before the
|
|
172
|
+
* generic absolute-path collapse (so a username-bearing path collapses to
|
|
173
|
+
* `<user>`'s neighborhood correctly), and secret-pattern stripping runs
|
|
174
|
+
* before that path collapse too (a secret string that happens to look
|
|
175
|
+
* path-like should still hit the secret patterns first).
|
|
176
|
+
*/
|
|
177
|
+
export function redact(text) {
|
|
178
|
+
const home = homedir();
|
|
179
|
+
let out = stripHomeAndUser(text, home);
|
|
180
|
+
out = stripGenericUserPrefixes(out);
|
|
181
|
+
out = stripIPv4(out);
|
|
182
|
+
out = stripEmail(out);
|
|
183
|
+
out = stripSsnAndPhone(out);
|
|
184
|
+
out = stripSecretPatterns(out);
|
|
185
|
+
out = collapseAbsolutePaths(out);
|
|
186
|
+
out = stripHostnames(out);
|
|
187
|
+
out = stripIPv6(out);
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=redaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../src/utils/redaction.ts"],"names":[],"mappings":"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"}
|