doc-detective 4.6.0 → 4.7.0

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.
Files changed (55) hide show
  1. package/dist/cli.js +57 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/common/src/schemas/schemas.json +6 -18
  4. package/dist/common/src/types/generated/config_v3.d.ts +2 -1
  5. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  6. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +2 -1
  7. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  8. package/dist/core/config.d.ts +17 -1
  9. package/dist/core/config.d.ts.map +1 -1
  10. package/dist/core/config.js +250 -68
  11. package/dist/core/config.js.map +1 -1
  12. package/dist/debug/command.d.ts +10 -0
  13. package/dist/debug/command.d.ts.map +1 -0
  14. package/dist/debug/command.js +72 -0
  15. package/dist/debug/command.js.map +1 -0
  16. package/dist/debug/envvars.d.ts +9 -0
  17. package/dist/debug/envvars.d.ts.map +1 -0
  18. package/dist/debug/envvars.js +231 -0
  19. package/dist/debug/envvars.js.map +1 -0
  20. package/dist/debug/index.d.ts +85 -0
  21. package/dist/debug/index.d.ts.map +1 -0
  22. package/dist/debug/index.js +465 -0
  23. package/dist/debug/index.js.map +1 -0
  24. package/dist/debug/redact.d.ts +7 -0
  25. package/dist/debug/redact.d.ts.map +1 -0
  26. package/dist/debug/redact.js +190 -0
  27. package/dist/debug/redact.js.map +1 -0
  28. package/dist/debug/render.d.ts +8 -0
  29. package/dist/debug/render.d.ts.map +1 -0
  30. package/dist/debug/render.js +42 -0
  31. package/dist/debug/render.js.map +1 -0
  32. package/dist/debug/system.d.ts +24 -0
  33. package/dist/debug/system.d.ts.map +1 -0
  34. package/dist/debug/system.js +59 -0
  35. package/dist/debug/system.js.map +1 -0
  36. package/dist/debug/tools.d.ts +11 -0
  37. package/dist/debug/tools.d.ts.map +1 -0
  38. package/dist/debug/tools.js +170 -0
  39. package/dist/debug/tools.js.map +1 -0
  40. package/dist/hints/hints.d.ts.map +1 -1
  41. package/dist/hints/hints.js +17 -0
  42. package/dist/hints/hints.js.map +1 -1
  43. package/dist/index.cjs +283 -134
  44. package/dist/runtime/installer.d.ts.map +1 -1
  45. package/dist/runtime/installer.js +44 -9
  46. package/dist/runtime/installer.js.map +1 -1
  47. package/dist/runtime/loader.d.ts +20 -0
  48. package/dist/runtime/loader.d.ts.map +1 -1
  49. package/dist/runtime/loader.js +50 -0
  50. package/dist/runtime/loader.js.map +1 -1
  51. package/dist/utils.d.ts +2 -1
  52. package/dist/utils.d.ts.map +1 -1
  53. package/dist/utils.js +38 -11
  54. package/dist/utils.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,190 @@
1
+ // Redaction helpers for the debug-dump env-var listings.
2
+ //
3
+ // Doc Detective's `debug` subcommand and `DOC_DETECTIVE_DEBUG=true` env
4
+ // var dump enumerate env vars referenced by config / input files and,
5
+ // when `--include-env` is passed, dump the full `process.env`. Both
6
+ // flows route values through `redactValue` so credentials don't end up
7
+ // in pasted bug reports.
8
+ //
9
+ // We never redact the NAME — knowing which variable was referenced is
10
+ // often more useful than the value, and it lets users grep their config
11
+ // for the offender.
12
+ //
13
+ // Two layers of detection:
14
+ // 1. Name-based: catches conventional secret naming (TOKEN, SECRET,
15
+ // KEY, PASSWORD, AUTH, CREDENTIAL, BEARER) PLUS connection-string-
16
+ // shaped suffixes (_URL, _URI, _DSN, _PASS, _PASSWD, _PWD), the
17
+ // WEBHOOK substring, and the bare names JWT / PAT.
18
+ // 2. Value-based: catches credentials embedded in values regardless
19
+ // of name — URL userinfo (`://user:pass@`), JWTs, GitHub tokens,
20
+ // and AWS access key IDs. This is what keeps a sloppy
21
+ // `MY_THING = postgres://app:hunter2@host/db` from leaking.
22
+ // Name patterns. Both must miss for a value to be considered name-safe.
23
+ //
24
+ // `_PASS$` covers SMTP_PASS / DB_PASS but NOT PASSAGE / PASSPORT. The
25
+ // other suffix anchors are similarly chosen to minimize collateral
26
+ // over-redaction while catching every common credential carrier
27
+ // surveyed in the security review.
28
+ const SECRET_NAME_PATTERNS = [
29
+ /token|secret|password|auth|credential|bearer/i,
30
+ // `key` only as a tokenized word (KEY / API_KEY / api-key / bare `key`)
31
+ // or a CamelCase suffix (apiKey, accessKey) — NOT the raw substring,
32
+ // which over-redacts innocuous names like MONKEY / hockeyStats.
33
+ /(^|[_-])key([_-]|$)/i,
34
+ /[a-z]Key([^a-z]|$)/,
35
+ /(_URL|_URI|_DSN|_PASS|_PASSWD|_PWD)$/i,
36
+ /WEBHOOK/i,
37
+ /^(JWT|PAT)$/i,
38
+ ];
39
+ // Value patterns. Even when the NAME looks innocuous, a value matching
40
+ // any of these is almost certainly a credential and gets redacted.
41
+ //
42
+ // Userinfo regex matches `scheme://user:pass@host/...` — the colon-
43
+ // separated credentials embedded in connection strings. Anchored on
44
+ // `://` to avoid matching arbitrary "x:y@z" substrings.
45
+ //
46
+ // JWT shape is the canonical three-segment base64url. Anchored on the
47
+ // `eyJ` header prefix that all JWTs begin with.
48
+ //
49
+ // GitHub token patterns from
50
+ // https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/
51
+ //
52
+ // AWS access key ID pattern from AWS docs (20 chars, AKIA/ASIA prefix).
53
+ const SECRET_VALUE_PATTERNS = [
54
+ // URL userinfo: `scheme://[user]:password@host`. The user portion is
55
+ // optional so we also catch `redis://:password@host` (a common Redis
56
+ // password-only form).
57
+ /:\/\/[^/\s:@]*:[^@\s]+@/,
58
+ /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\b/,
59
+ /\bgh[pousr]_[A-Za-z0-9]{36,255}\b/,
60
+ // GitHub fine-grained PAT: `github_pat_` + base62/underscore body.
61
+ /\bgithub_pat_[A-Za-z0-9_]{20,255}\b/,
62
+ /\b(AKIA|ASIA)[0-9A-Z]{16}\b/,
63
+ ];
64
+ export function isSecretName(name) {
65
+ return SECRET_NAME_PATTERNS.some((p) => p.test(name));
66
+ }
67
+ export function isSecretValue(value) {
68
+ return SECRET_VALUE_PATTERNS.some((p) => p.test(value));
69
+ }
70
+ export function redactValue(name, value) {
71
+ if (value === undefined)
72
+ return "<unset>";
73
+ if (value === "")
74
+ return "<empty>";
75
+ if (isSecretName(name)) {
76
+ return `***redacted (${value.length} chars)***`;
77
+ }
78
+ if (isSecretValue(value)) {
79
+ return `***redacted (${value.length} chars, value shape)***`;
80
+ }
81
+ return value;
82
+ }
83
+ // Redact a single `process.argv` entry so the dump stays safe to paste.
84
+ // CLI args can carry credentials that bypass the env/config redaction:
85
+ // - `--token=ghp_…` / `--api-key=…` → value redacted when the flag name
86
+ // looks secret;
87
+ // - an embedded credential anywhere (`https://user:pass@host`, a JWT, a
88
+ // GitHub/AWS token) → redacted by value shape.
89
+ // Node + entry-point paths and ordinary flags pass through unchanged.
90
+ export function redactArg(arg) {
91
+ if (typeof arg !== "string" || arg.length === 0)
92
+ return arg;
93
+ const eq = arg.indexOf("=");
94
+ if (eq > 0) {
95
+ const flag = arg.slice(0, eq);
96
+ const value = arg.slice(eq + 1);
97
+ const name = flag.replace(/^-+/, "");
98
+ if (isSecretName(name)) {
99
+ return `${flag}=***redacted (${value.length} chars)***`;
100
+ }
101
+ if (isSecretValue(value)) {
102
+ return `${flag}=***redacted (${value.length} chars, value shape)***`;
103
+ }
104
+ return arg;
105
+ }
106
+ if (isSecretValue(arg)) {
107
+ return `***redacted (${arg.length} chars, value shape)***`;
108
+ }
109
+ return arg;
110
+ }
111
+ // Redact a full argv array with flag/value context. Beyond what redactArg
112
+ // catches per-token, this handles the SPLIT form where a secret-named flag
113
+ // and its value are separate args (`--password hunter2`) — `hunter2` alone
114
+ // matches no value-shape, so it would otherwise leak. When a bare
115
+ // secret-named flag is seen, the next non-flag token is redacted.
116
+ export function redactArgv(args) {
117
+ const out = [];
118
+ let expectSecretValue = false;
119
+ for (const arg of args) {
120
+ if (expectSecretValue && !arg.startsWith("-")) {
121
+ out.push(`***redacted (${arg.length} chars)***`);
122
+ expectSecretValue = false;
123
+ continue;
124
+ }
125
+ expectSecretValue = false;
126
+ // Bare secret-named flag (e.g. `--password`) with no `=value` — its
127
+ // value is the following token. Matched by flag NAME, so single-letter
128
+ // aliases (`-p`) are intentionally NOT treated as secret: none of Doc
129
+ // Detective's flags carry a credential via a short alias, and blanket-
130
+ // redacting any `-x value` would clobber legitimate flags (`-i`, `-o`).
131
+ const bareFlag = arg.match(/^--?([^=]+)$/);
132
+ if (bareFlag && isSecretName(bareFlag[1])) {
133
+ out.push(arg);
134
+ expectSecretValue = true;
135
+ continue;
136
+ }
137
+ out.push(redactArg(arg));
138
+ }
139
+ return out;
140
+ }
141
+ // Recursively walk an arbitrary value (object / array / primitive) and
142
+ // return a deep-cloned copy with sensitive strings replaced. Used by
143
+ // the Config section of the debug dump so secrets in config files
144
+ // (integrations.heretto[].apiToken, integrations.docDetectiveApi.apiKey,
145
+ // inline webhook URLs, anything in DOC_DETECTIVE_CONFIG, etc.) don't
146
+ // land in pasted bug reports.
147
+ //
148
+ // Redaction rules, applied per leaf string:
149
+ // 1. If the string's parent key matches a secret-name pattern → redact.
150
+ // 2. Else if the string's contents match a secret-value pattern → redact.
151
+ // 3. Otherwise → return as-is.
152
+ //
153
+ // Non-string leaves (numbers / booleans / null) are returned as-is even
154
+ // under a secret-named key: in practice these don't carry credentials,
155
+ // and preserving them keeps the dump useful for debugging non-secret
156
+ // numeric / boolean state.
157
+ export function redactObject(value) {
158
+ return redactWalk(value, null, new WeakSet());
159
+ }
160
+ function redactWalk(value, parentKey, seen) {
161
+ if (value === null || value === undefined)
162
+ return value;
163
+ if (typeof value === "string") {
164
+ if (parentKey !== null && isSecretName(parentKey)) {
165
+ return `***redacted (${value.length} chars)***`;
166
+ }
167
+ if (isSecretValue(value)) {
168
+ return `***redacted (${value.length} chars, value shape)***`;
169
+ }
170
+ return value;
171
+ }
172
+ if (typeof value !== "object")
173
+ return value;
174
+ if (seen.has(value))
175
+ return "<circular>";
176
+ seen.add(value);
177
+ if (Array.isArray(value)) {
178
+ // Array elements inherit the parent key (e.g. `tokens: ["a","b"]`
179
+ // → each element evaluated against `tokens` for name-based check).
180
+ return value.map((v) => redactWalk(v, parentKey, seen));
181
+ }
182
+ const out = {};
183
+ for (const k of Object.keys(value)) {
184
+ if (k === "__proto__" || k === "constructor" || k === "prototype")
185
+ continue;
186
+ out[k] = redactWalk(value[k], k, seen);
187
+ }
188
+ return out;
189
+ }
190
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/debug/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface Section {
2
+ title: string;
3
+ body: string;
4
+ }
5
+ export declare function renderSection(title: string, lines: string[]): Section;
6
+ export declare function renderKeyValues(rows: Array<[string, unknown]>): string[];
7
+ export declare function renderDocument(sections: Section[], generatedAt?: string): string;
8
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/debug/render.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,CAGxE;AAWD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAchF"}
@@ -0,0 +1,42 @@
1
+ // Plaintext sectioned renderer for the debug dump.
2
+ //
3
+ // No ANSI colors — output is meant to be pasted into a GitHub issue, so
4
+ // we keep it grep-friendly and copyable. Each section is a header line
5
+ // followed by `key: value` lines or a free-form text block.
6
+ export function renderSection(title, lines) {
7
+ return { title, body: lines.join("\n") };
8
+ }
9
+ export function renderKeyValues(rows) {
10
+ const maxKey = rows.reduce((m, [k]) => Math.max(m, k.length), 0);
11
+ return rows.map(([k, v]) => ` ${k.padEnd(maxKey, " ")} ${formatValue(v)}`);
12
+ }
13
+ function formatValue(value) {
14
+ if (value === undefined)
15
+ return "<unset>";
16
+ if (value === null)
17
+ return "<null>";
18
+ if (typeof value === "string")
19
+ return value;
20
+ if (Array.isArray(value))
21
+ return JSON.stringify(value);
22
+ if (typeof value === "object")
23
+ return JSON.stringify(value);
24
+ return String(value);
25
+ }
26
+ export function renderDocument(sections, generatedAt) {
27
+ const out = [];
28
+ out.push("=".repeat(72));
29
+ out.push("Doc Detective diagnostic dump");
30
+ if (generatedAt)
31
+ out.push(`Generated: ${generatedAt}`);
32
+ out.push("=".repeat(72));
33
+ for (const s of sections) {
34
+ out.push("");
35
+ out.push(`-- ${s.title} `.padEnd(72, "-"));
36
+ out.push(s.body);
37
+ }
38
+ out.push("");
39
+ out.push("=".repeat(72));
40
+ return out.join("\n");
41
+ }
42
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/debug/render.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,4DAA4D;AAO5D,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAe;IAC1D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA8B;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAmB,EAAE,WAAoB;IACtE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1C,IAAI,WAAW;QAAE,GAAG,CAAC,IAAI,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;IACvD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface SystemInfo {
2
+ platform: string;
3
+ arch: string;
4
+ release: string;
5
+ osVersion: string;
6
+ cpuCount: number;
7
+ cpuModel: string;
8
+ cpuSpeedMhz: number;
9
+ totalMemoryMb: number;
10
+ freeMemoryMb: number;
11
+ uptimeSeconds: number;
12
+ hostname: string;
13
+ wallclockIso: string;
14
+ timezone: string;
15
+ pid: number;
16
+ ppid: number;
17
+ cwd: string;
18
+ argv: string[];
19
+ execPath: string;
20
+ isTTY: boolean;
21
+ ci: string | undefined;
22
+ }
23
+ export declare function collectSystemInfo(): SystemInfo;
24
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/debug/system.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;CACxB;AAED,wBAAgB,iBAAiB,IAAI,UAAU,CA2C9C"}
@@ -0,0 +1,59 @@
1
+ // System-information collectors for the debug dump.
2
+ //
3
+ // Pure synchronous reads of `os` and `process`. No I/O, no spawns.
4
+ // Output is consumed by `render.ts` and `index.ts` only.
5
+ import os from "node:os";
6
+ import { redactArgv } from "./redact.js";
7
+ export function collectSystemInfo() {
8
+ const cpus = (() => {
9
+ try {
10
+ return os.cpus() || [];
11
+ }
12
+ catch {
13
+ return [];
14
+ }
15
+ })();
16
+ const first = cpus[0];
17
+ const timezone = (() => {
18
+ try {
19
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || "<unknown>";
20
+ }
21
+ catch {
22
+ return "<unknown>";
23
+ }
24
+ })();
25
+ return {
26
+ platform: os.platform(),
27
+ arch: os.arch(),
28
+ release: os.release(),
29
+ osVersion: safe(() => os.version(), "<unknown>"),
30
+ cpuCount: cpus.length,
31
+ cpuModel: first?.model || "<unknown>",
32
+ cpuSpeedMhz: first?.speed || 0,
33
+ totalMemoryMb: Math.round(os.totalmem() / (1024 * 1024)),
34
+ freeMemoryMb: Math.round(os.freemem() / (1024 * 1024)),
35
+ uptimeSeconds: Math.round(os.uptime()),
36
+ hostname: safe(() => os.hostname(), "<unknown>"),
37
+ wallclockIso: new Date().toISOString(),
38
+ timezone,
39
+ pid: process.pid,
40
+ ppid: process.ppid,
41
+ cwd: safe(() => process.cwd(), "<unknown>"),
42
+ // Redact credentials that may ride in CLI args — `--token=…`, the split
43
+ // `--password hunter2` form, or an embedded URL with userinfo — so the
44
+ // dump stays safe to paste.
45
+ argv: redactArgv(process.argv),
46
+ execPath: process.execPath,
47
+ isTTY: Boolean(process.stdout.isTTY),
48
+ ci: process.env.CI,
49
+ };
50
+ }
51
+ function safe(fn, fallback) {
52
+ try {
53
+ return fn();
54
+ }
55
+ catch {
56
+ return fallback;
57
+ }
58
+ }
59
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/debug/system.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,mEAAmE;AACnE,yDAAyD;AAEzD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyBzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,IAAI,WAAW,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;QACf,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC;QAChD,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,WAAW;QACrC,WAAW,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;QAC9B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACxD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACtD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC;QAChD,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC;QAC3C,wEAAwE;QACxE,uEAAuE;QACvE,4BAA4B;QAC5B,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAI,EAAW,EAAE,QAAW;IACvC,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function envWithoutNodeModulesBin(): NodeJS.ProcessEnv;
2
+ export interface ToolResult {
3
+ name: string;
4
+ version: string;
5
+ notes?: string;
6
+ }
7
+ export declare function probeTool(name: string, command: string, options?: {
8
+ timeoutMs?: number;
9
+ }): Promise<ToolResult>;
10
+ export declare function probeAllTools(cacheDir?: string): Promise<ToolResult[]>;
11
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/debug/tools.ts"],"names":[],"mappings":"AAiCA,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,UAAU,CAU5D;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,UAAU,CAAC,CAkCrB;AA4CD,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAa5E"}
@@ -0,0 +1,170 @@
1
+ // Tool-version probes for the debug dump.
2
+ //
3
+ // Two flavors of probe:
4
+ // 1. Spawn-based (`probeTool`) — runs `<binary> --version` with a
5
+ // hard timeout (default 3000 ms). Used for system binaries (node,
6
+ // npm, npx, git, docker, java, python). To keep with the
7
+ // "don't execute project-local binaries" model, the spawn runs with
8
+ // a PATH that has any `node_modules/.bin` segments stripped, so a
9
+ // repo-local shim (common when launched from an npm/yarn/pnpm
10
+ // script, which prepends `node_modules/.bin`) can't shadow a system
11
+ // tool during diagnostics.
12
+ // 2. Metadata-read (`resolveHeavyDep*`) — reads `version` from a named
13
+ // package's `package.json` without executing it. Used for appium and
14
+ // ffmpeg so a compromised `node_modules/.bin/<tool>` doesn't run on
15
+ // `doc-detective debug`.
16
+ //
17
+ // All spawn-based probes use `shell: true` for PATH lookup consistency
18
+ // across Windows (where binaries can be `.cmd`). Package-read probes
19
+ // do no I/O beyond a `require` call.
20
+ import { spawn } from "node:child_process";
21
+ import { createRequire } from "node:module";
22
+ import path from "node:path";
23
+ import { resolveHeavyDepPath, resolveHeavyDepVersion, } from "../runtime/loader.js";
24
+ const require = createRequire(import.meta.url);
25
+ // Return a copy of `process.env` whose PATH has any `node_modules/.bin`
26
+ // segments removed, so a repo-local shim can't shadow a system tool the
27
+ // probes invoke by bare name. Exported for testing.
28
+ export function envWithoutNodeModulesBin() {
29
+ const env = { ...process.env };
30
+ const pathKey = Object.keys(env).find((k) => k.toLowerCase() === "path");
31
+ if (pathKey && typeof env[pathKey] === "string") {
32
+ env[pathKey] = env[pathKey]
33
+ .split(path.delimiter)
34
+ .filter((seg) => !/[\\/]node_modules[\\/]\.bin([\\/]|$)/i.test(seg))
35
+ .join(path.delimiter);
36
+ }
37
+ return env;
38
+ }
39
+ const DEFAULT_TIMEOUT_MS = 3000;
40
+ export async function probeTool(name, command, options = {}) {
41
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
42
+ try {
43
+ const { stdout, stderr, exitCode, timedOut } = await runWithTimeout(command, timeoutMs);
44
+ if (timedOut)
45
+ return { name, version: `<timed out after ${timeoutMs}ms>` };
46
+ if (exitCode !== 0) {
47
+ const firstLine = (stderr || stdout || "").split("\n")[0]?.trim() || "";
48
+ // "command not found" shell errors (e.g. Windows' "'java' is not
49
+ // recognized as an internal or external command,") are just noise —
50
+ // the `<not found>` marker already says the tool is absent, and the
51
+ // raw message is a truncated, comma-dangling fragment. Suppress those;
52
+ // keep genuinely-informative errors as a note.
53
+ const notFoundNoise = /not recognized|not found|no such file|cannot find|command not found/i.test(firstLine);
54
+ return {
55
+ name,
56
+ version: "<not found>",
57
+ notes: notFoundNoise ? undefined : firstLine || undefined,
58
+ };
59
+ }
60
+ // Some tools (java, appium with stderr noise) print version on stderr.
61
+ // Fall back to stderr when stdout is empty OR whitespace-only — a bare
62
+ // "\n" on stdout is truthy but carries no version.
63
+ const text = (stdout.trim() ? stdout : stderr || "").trim();
64
+ const firstLine = text.split("\n")[0] || "<unknown>";
65
+ return { name, version: firstLine };
66
+ }
67
+ catch (err) {
68
+ return { name, version: "<probe failed>", notes: err?.message };
69
+ }
70
+ }
71
+ function runWithTimeout(command, timeoutMs) {
72
+ return new Promise((resolve) => {
73
+ const child = spawn(command, {
74
+ shell: true,
75
+ env: envWithoutNodeModulesBin(),
76
+ });
77
+ let stdout = "";
78
+ let stderr = "";
79
+ let settled = false;
80
+ const settle = (result) => {
81
+ if (settled)
82
+ return;
83
+ settled = true;
84
+ try {
85
+ child.kill();
86
+ }
87
+ catch {
88
+ // Best-effort kill.
89
+ }
90
+ resolve(result);
91
+ };
92
+ const t = setTimeout(() => settle({ stdout, stderr, exitCode: -1, timedOut: true }), timeoutMs);
93
+ child.stdout?.on("data", (c) => {
94
+ stdout += c.toString();
95
+ });
96
+ child.stderr?.on("data", (c) => {
97
+ stderr += c.toString();
98
+ });
99
+ child.on("error", (err) => {
100
+ clearTimeout(t);
101
+ settle({ stdout, stderr: stderr + (err.message || ""), exitCode: -1, timedOut: false });
102
+ });
103
+ child.on("close", (code) => {
104
+ clearTimeout(t);
105
+ settle({ stdout, stderr, exitCode: code ?? -1, timedOut: false });
106
+ });
107
+ });
108
+ }
109
+ // The probe set the debug dump runs. Order is the print order. `cacheDir`
110
+ // (from config) lets the appium probe see cache-installed runtime deps.
111
+ export async function probeAllTools(cacheDir) {
112
+ const probes = [
113
+ { name: "node", version: process.version },
114
+ probeTool("npm", "npm --version"),
115
+ probeTool("npx", "npx --version"),
116
+ probePython(),
117
+ probeTool("java", "java -version"),
118
+ probeFfmpeg(),
119
+ probeAppium(cacheDir),
120
+ probeTool("git", "git --version"),
121
+ probeTool("docker", "docker --version"),
122
+ ];
123
+ return Promise.all(probes);
124
+ }
125
+ async function probePython() {
126
+ const py3 = await probeTool("python3", "python3 --version");
127
+ if (py3.version !== "<not found>" && !py3.version.startsWith("<timed out")) {
128
+ return { name: "python", version: py3.version };
129
+ }
130
+ const py = await probeTool("python", "python --version");
131
+ return { name: "python", version: py.version, notes: py.notes };
132
+ }
133
+ function probeFfmpeg() {
134
+ // Doc Detective bundles ffmpeg via @ffmpeg-installer/ffmpeg. Report the
135
+ // installer's package version and location using metadata only —
136
+ // `require.resolve` + reading the package.json (JSON, no code). We
137
+ // deliberately do NOT `require("@ffmpeg-installer/ffmpeg")` (its index.js
138
+ // runs platform-branching code) nor invoke the binary, so a compromised
139
+ // installer dep can never execute during `doc-detective debug`.
140
+ try {
141
+ const pkgPath = require.resolve("@ffmpeg-installer/ffmpeg/package.json");
142
+ const pkg = require(pkgPath);
143
+ return {
144
+ name: "ffmpeg",
145
+ version: `@ffmpeg-installer/ffmpeg ${pkg.version}`,
146
+ notes: `installer package: ${path.dirname(pkgPath)}`,
147
+ };
148
+ }
149
+ catch {
150
+ return { name: "ffmpeg", version: "<bundled installer not found>" };
151
+ }
152
+ }
153
+ // Resolve appium the same way the runtime does — shim node_modules OR
154
+ // `<cacheDir>/runtime` — so a cached install (`doc-detective install`) is
155
+ // reported as present here too, instead of `<not installed>` while the
156
+ // Browsers section shows it available. Reads version metadata only; never
157
+ // executes an appium binary.
158
+ function probeAppium(cacheDir) {
159
+ const resolved = resolveHeavyDepPath("appium", { cacheDir });
160
+ if (!resolved) {
161
+ return { name: "appium", version: "<not installed>" };
162
+ }
163
+ const version = resolveHeavyDepVersion("appium", { cacheDir });
164
+ return {
165
+ name: "appium",
166
+ version: version ?? "<unknown>",
167
+ notes: `from: ${resolved}`,
168
+ };
169
+ }
170
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/debug/tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/hints/hints.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,KAAK,EAAE,IAAI,EAwjBvB,CAAC"}
1
+ {"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/hints/hints.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,KAAK,EAAE,IAAI,EA0kBvB,CAAC"}
@@ -316,6 +316,23 @@ export const HINTS = [
316
316
  when: (ctx) => !ctx.usedStepTypes.has("checkLink") && ctx.usedStepTypes.has("goTo"),
317
317
  },
318
318
  // ------------------------------------------------------------------
319
+ // useDebugFlag (current-run problem)
320
+ // ------------------------------------------------------------------
321
+ {
322
+ id: "useDebugFlag",
323
+ priority: 20,
324
+ markdown: [
325
+ "Stuck on a setup problem? `doc-detective debug` captures your OS, Doc Detective version, browsers, tool versions, and any env vars referenced by your config:",
326
+ "",
327
+ "```bash",
328
+ "doc-detective debug",
329
+ "```",
330
+ "",
331
+ "Review the output before pasting into a bug report — secrets are best-effort-redacted by name and value shape, but values with novel names or shapes (custom URL-style connection strings, in-house token formats) may slip through. `--include-env` opts into a full `process.env` dump if you need it.",
332
+ ].join("\n"),
333
+ when: (ctx) => ctx.failedCount > 0,
334
+ },
335
+ // ------------------------------------------------------------------
319
336
  // useDryRunToDebugNoTests (current-run problem)
320
337
  // ------------------------------------------------------------------
321
338
  {
@@ -1 +1 @@
1
- {"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/hints/hints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/hints/hints.ts"],"names":[],"mappings":"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"}