doc-detective 4.11.0 → 4.12.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.
package/dist/cli.js CHANGED
@@ -94,6 +94,7 @@ async function runTestsHandler(args) {
94
94
  configPath: configPath,
95
95
  configError: err instanceof Error ? err : new Error(String(err)),
96
96
  outDir: defaultDebugDir(),
97
+ args,
97
98
  });
98
99
  // The env-var dump replaced a real test run; a broken config must
99
100
  // still fail the process so CI doesn't go green on an unran suite.
@@ -114,6 +115,7 @@ async function runTestsHandler(args) {
114
115
  configPath,
115
116
  configError: null,
116
117
  outDir: defaultDebugDir(),
118
+ args,
117
119
  });
118
120
  return;
119
121
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface AppiumDriverStatus {
2
+ name: string;
3
+ registered: boolean | null;
4
+ npmResolvable: boolean;
5
+ }
6
+ export interface AppiumDiagnostics {
7
+ appiumHome: string | null;
8
+ appiumInstalled: boolean;
9
+ extensionsManifestPath: string | null;
10
+ extensionsManifestPresent: boolean;
11
+ manifestError?: string;
12
+ registeredDrivers: string[];
13
+ drivers: AppiumDriverStatus[];
14
+ }
15
+ export declare function registeredDriverPkgNames(manifestText: string): string[];
16
+ export declare function collectAppiumDiagnostics(config: any): AppiumDiagnostics;
17
+ //# sourceMappingURL=appium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appium.d.ts","sourceRoot":"","sources":["../../src/debug/appium.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,kBAAkB;IAEjC,IAAI,EAAE,MAAM,CAAC;IAKb,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IAGnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAKD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,iBAAiB,CAyDvE"}
@@ -0,0 +1,98 @@
1
+ // Appium registration collector for the diagnostic dump.
2
+ //
3
+ // Reconciles the two ways an Appium driver can be "there":
4
+ // - npm-resolvable: the driver package resolves from the shim node_modules
5
+ // or the runtime cache (resolveHeavyDepPath).
6
+ // - registered: Appium has it recorded in its extensions manifest
7
+ // (<APPIUM_HOME>/node_modules/.cache/appium/extensions.yaml) under the
8
+ // active APPIUM_HOME.
9
+ // The mismatch ("I npm-installed it but Appium doesn't see it") is a real
10
+ // support case, usually an APPIUM_HOME pointing at the wrong node_modules.
11
+ //
12
+ // Registration is read straight from extensions.yaml — the same manifest
13
+ // Appium itself reads — rather than spawning `appium driver list`. That
14
+ // command cold-loads Appium and does an npm update-check (network), so it's
15
+ // slow and variable (8s+ cold vs <1s warm); a bounded probe would
16
+ // intermittently time out and then mislabel every registered driver as
17
+ // "not registered". The manifest is authoritative, offline, and instant, so
18
+ // the dump has no subprocess at all.
19
+ import fs from "node:fs";
20
+ import path from "node:path";
21
+ import YAML from "yaml";
22
+ import { setAppiumHome } from "../core/appium.js";
23
+ import { resolveHeavyDepPath } from "../runtime/loader.js";
24
+ // The driver packages doc-detective installs. Order matches the browsers we
25
+ // support (Chrome via chromium, Firefox via gecko).
26
+ const KNOWN_DRIVERS = ["appium-chromium-driver", "appium-geckodriver"];
27
+ // Parse the `pkgName` of every driver recorded in an extensions.yaml
28
+ // document. Falls back to the short driver key when an entry omits pkgName.
29
+ // Pure (takes the YAML text) so it's unit-testable without a filesystem.
30
+ export function registeredDriverPkgNames(manifestText) {
31
+ const doc = YAML.parse(manifestText);
32
+ const drivers = doc?.drivers;
33
+ if (!drivers || typeof drivers !== "object")
34
+ return [];
35
+ const names = [];
36
+ for (const key of Object.keys(drivers)) {
37
+ const entry = drivers[key];
38
+ const pkg = entry?.pkgName;
39
+ names.push(typeof pkg === "string" && pkg.length > 0 ? pkg : key);
40
+ }
41
+ return names;
42
+ }
43
+ export function collectAppiumDiagnostics(config) {
44
+ const ctx = { cacheDir: config?.cacheDir };
45
+ // Resolve APPIUM_HOME independently (the cache collector also does this in a
46
+ // full dump). Idempotent, so order doesn't matter — this collector is
47
+ // correct whether called standalone or after collectCacheStatus.
48
+ try {
49
+ setAppiumHome(ctx);
50
+ }
51
+ catch {
52
+ // Best-effort — diagnostics must never crash.
53
+ }
54
+ const appiumHome = process.env.APPIUM_HOME || null;
55
+ // Appium records registered extensions in
56
+ // <APPIUM_HOME>/node_modules/.cache/appium/extensions.yaml.
57
+ const extensionsManifestPath = appiumHome
58
+ ? path.join(appiumHome, "node_modules", ".cache", "appium", "extensions.yaml")
59
+ : null;
60
+ let extensionsManifestPresent = false;
61
+ let manifestError;
62
+ let registeredDrivers = [];
63
+ if (extensionsManifestPath) {
64
+ try {
65
+ extensionsManifestPresent = fs.existsSync(extensionsManifestPath);
66
+ }
67
+ catch {
68
+ extensionsManifestPresent = false;
69
+ }
70
+ if (extensionsManifestPresent) {
71
+ try {
72
+ registeredDrivers = registeredDriverPkgNames(fs.readFileSync(extensionsManifestPath, "utf8"));
73
+ }
74
+ catch (err) {
75
+ manifestError = err?.message || String(err);
76
+ }
77
+ }
78
+ }
79
+ // Registration is only KNOWN when the manifest was read successfully;
80
+ // otherwise every driver's `registered` is null (unknown), not false.
81
+ const registrationKnown = extensionsManifestPresent && !manifestError;
82
+ const registeredSet = new Set(registeredDrivers);
83
+ const drivers = KNOWN_DRIVERS.map((name) => ({
84
+ name,
85
+ npmResolvable: Boolean(resolveHeavyDepPath(name, ctx)),
86
+ registered: registrationKnown ? registeredSet.has(name) : null,
87
+ }));
88
+ return {
89
+ appiumHome,
90
+ appiumInstalled: Boolean(resolveHeavyDepPath("appium", ctx)),
91
+ extensionsManifestPath,
92
+ extensionsManifestPresent,
93
+ manifestError,
94
+ registeredDrivers,
95
+ drivers,
96
+ };
97
+ }
98
+ //# sourceMappingURL=appium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appium.js","sourceRoot":"","sources":["../../src/debug/appium.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface CacheEntry {
2
+ label: string;
3
+ path: string | null;
4
+ exists: boolean;
5
+ writable: boolean | null;
6
+ freeBytes: number | null;
7
+ }
8
+ export interface CacheStatus {
9
+ entries: CacheEntry[];
10
+ error?: string;
11
+ }
12
+ export declare function collectCacheStatus(config: any): CacheStatus;
13
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/debug/cache.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAGhB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAGzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW,CAiD3D"}
@@ -0,0 +1,132 @@
1
+ // Cache & runtime status collector for the diagnostic dump.
2
+ //
3
+ // Resolves the directories the lazy installer and runtime depend on
4
+ // (cacheDir / runtimeDir / browsersDir / installed.json / APPIUM_HOME)
5
+ // and reports, per location, whether it exists, is writable, and how much
6
+ // disk space is free. A non-writable cacheDir is a common silent failure
7
+ // mode for lazy installs, so surfacing it here lets the Findings layer
8
+ // suggest `DOC_DETECTIVE_CACHE_DIR`.
9
+ //
10
+ // Read-only and crash-proof: every probe is wrapped so a permission error
11
+ // on one path degrades to `writable: false` rather than aborting the dump.
12
+ // (`getCacheDir` does create the cache root as a side effect — acceptable
13
+ // here since the dump is explicitly probing the cache, and it matches how
14
+ // every other consumer resolves the dir.)
15
+ import fs from "node:fs";
16
+ import path from "node:path";
17
+ import { getCacheDir, getRuntimeDir, getBrowsersDir, getInstalledRecordPath, } from "../runtime/cacheDir.js";
18
+ import { setAppiumHome } from "../core/appium.js";
19
+ function safeExists(target) {
20
+ try {
21
+ return fs.existsSync(target);
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ // The target itself if it exists, otherwise the nearest existing ancestor —
28
+ // so probes against a not-yet-created dir (e.g. <cache>/runtime/browsers,
29
+ // whose parents may also be missing) answer "could doc-detective create and
30
+ // write here?" instead of failing on the first non-existent level.
31
+ function nearestExistingPath(target) {
32
+ let current = target;
33
+ // Bounded by the path depth; stops at the filesystem root (dirname of a
34
+ // root returns the root itself).
35
+ for (let i = 0; i < 64; i++) {
36
+ if (safeExists(current))
37
+ return current;
38
+ const parent = path.dirname(current);
39
+ if (parent === current)
40
+ return current;
41
+ current = parent;
42
+ }
43
+ return current;
44
+ }
45
+ // Probe W_OK on the path (or its nearest existing ancestor).
46
+ function isWritable(target) {
47
+ try {
48
+ fs.accessSync(nearestExistingPath(target), fs.constants.W_OK);
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ function freeSpaceBytes(target) {
56
+ try {
57
+ // statfsSync landed in Node 18.15 / 19.6; older runtimes lack it.
58
+ const statfsSync = fs
59
+ .statfsSync;
60
+ if (typeof statfsSync !== "function")
61
+ return null;
62
+ const stats = statfsSync(nearestExistingPath(target));
63
+ if (typeof stats?.bavail !== "number" || typeof stats?.bsize !== "number") {
64
+ return null;
65
+ }
66
+ return stats.bavail * stats.bsize;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ function probeDir(label, p) {
73
+ return {
74
+ label,
75
+ path: p,
76
+ exists: safeExists(p),
77
+ writable: isWritable(p),
78
+ freeBytes: freeSpaceBytes(p),
79
+ };
80
+ }
81
+ export function collectCacheStatus(config) {
82
+ const ctx = { cacheDir: config?.cacheDir };
83
+ const entries = [];
84
+ try {
85
+ entries.push(probeDir("cacheDir", getCacheDir(ctx)));
86
+ entries.push(probeDir("runtimeDir", getRuntimeDir(ctx)));
87
+ entries.push(probeDir("browsersDir", getBrowsersDir(ctx)));
88
+ // installed.json is a file, not a dir — report existence + whether the
89
+ // installer could write the record here. writeInstalledRecord() writes via
90
+ // tmp-file + rename, which depends on the *directory* being writable (not
91
+ // the file), so probe the parent dir explicitly rather than the file path.
92
+ const recordPath = getInstalledRecordPath(ctx);
93
+ entries.push({
94
+ label: "installed.json",
95
+ path: recordPath,
96
+ exists: safeExists(recordPath),
97
+ writable: isWritable(path.dirname(recordPath)),
98
+ freeBytes: null,
99
+ });
100
+ // APPIUM_HOME is resolved by mutating process.env (setAppiumHome returns
101
+ // void), then read back. setAppiumHome always assigns a value (its legacy
102
+ // fallback sets one unconditionally), so the unset branch below only fires
103
+ // if the call threw and was swallowed above. Resolution is idempotent and
104
+ // done independently here (the appium collector calls it too) so each
105
+ // collector is correct standalone and in any order — the second call in a
106
+ // full dump is a cheap no-op, not an ordering dependency.
107
+ try {
108
+ setAppiumHome(ctx);
109
+ }
110
+ catch {
111
+ // Best-effort — diagnostics must never crash.
112
+ }
113
+ const appiumHome = process.env.APPIUM_HOME;
114
+ if (typeof appiumHome === "string" && appiumHome.length > 0) {
115
+ entries.push(probeDir("APPIUM_HOME", appiumHome));
116
+ }
117
+ else {
118
+ entries.push({
119
+ label: "APPIUM_HOME",
120
+ path: null,
121
+ exists: false,
122
+ writable: null,
123
+ freeBytes: null,
124
+ });
125
+ }
126
+ }
127
+ catch (err) {
128
+ return { entries, error: err?.message || String(err) };
129
+ }
130
+ return { entries };
131
+ }
132
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/debug/cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/debug/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAQD,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,CAqErD,CAAC"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/debug/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAQD,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,CAuErD,CAAC"}
@@ -53,6 +53,7 @@ export const debugCommand = {
53
53
  configError: err instanceof Error ? err : new Error(String(err)),
54
54
  includeEnv,
55
55
  outDir,
56
+ args,
56
57
  });
57
58
  // Config is broken — exit non-zero so scripts/CI that gate on the
58
59
  // exit code don't treat a CONFIG INVALID dump as success. Mirrors
@@ -66,6 +67,7 @@ export const debugCommand = {
66
67
  configError: null,
67
68
  includeEnv,
68
69
  outDir,
70
+ args,
69
71
  });
70
72
  },
71
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/debug/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/debug/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DebugData } from "./index.js";
2
+ export interface Finding {
3
+ severity: "error" | "warning" | "info";
4
+ title: string;
5
+ detail: string;
6
+ fix?: string;
7
+ }
8
+ export declare function computeFindings(data: DebugData): Finding[];
9
+ //# sourceMappingURL=findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/debug/findings.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA2HD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,CAW1D"}
@@ -0,0 +1,134 @@
1
+ // Interpretation layer for the diagnostic dump.
2
+ //
3
+ // Pure functions over the already-collected DebugData (no I/O, no probing —
4
+ // the data sections did that). Each rule turns a data condition into a
5
+ // human-readable Finding with, where possible, the exact fix command. This
6
+ // is what makes the dump self-service for support: instead of "Chrome NOT
7
+ // AVAILABLE", the user sees "→ run `doc-detective install runtime`".
8
+ //
9
+ // Modeled on the hints philosophy in src/hints/: small, pure, concrete.
10
+ // `import type` keeps this a compile-time-only dependency on index.ts, so
11
+ // there's no runtime import cycle.
12
+ function findDriver(data, pkg) {
13
+ return (data.appium?.drivers || []).find((d) => d.name === pkg);
14
+ }
15
+ function findBrowser(data, name) {
16
+ return (data.browsers?.browsers || []).find((b) => b.name === name);
17
+ }
18
+ // Chrome can't run and its Appium driver is missing or unregistered → the
19
+ // runtime install is incomplete.
20
+ const chromeUnavailable = (data) => {
21
+ const chrome = findBrowser(data, "chrome");
22
+ if (!chrome || !chrome.supported || chrome.available)
23
+ return null;
24
+ const driver = findDriver(data, "appium-chromium-driver");
25
+ // Suppress only when the driver is confirmed resolvable AND registered.
26
+ if (driver && driver.npmResolvable && driver.registered === true)
27
+ return null;
28
+ // Tailor the detail to what we actually know: a missing driver, a confirmed
29
+ // unregistered one, and an unknown-registration one (manifest absent) are
30
+ // distinct — saying "missing or not registered" for the unknown case would
31
+ // be wrong (the package resolved fine; only its registration is unverified).
32
+ const detail = !driver || !driver.npmResolvable
33
+ ? "Chrome shows NOT AVAILABLE and its Appium driver (appium-chromium-driver) is missing, so browser tests can't run."
34
+ : driver.registered === false
35
+ ? "Chrome shows NOT AVAILABLE and appium-chromium-driver is installed but not registered under the active APPIUM_HOME."
36
+ : "Chrome shows NOT AVAILABLE. appium-chromium-driver is installed, but its registration is unknown (Appium manifest missing or unreadable).";
37
+ return {
38
+ severity: "error",
39
+ title: "Chrome is not available",
40
+ detail,
41
+ fix: "doc-detective install runtime",
42
+ };
43
+ };
44
+ // Recorded install is older than the declared constraint, or the
45
+ // doc-detective / doc-detective-common versions disagree → stale install.
46
+ const staleInstall = (data) => {
47
+ const outdated = (data.install?.rows || []).filter((r) => r.outdated);
48
+ const lockstep = Boolean(data.docDetective?.lockstepWarning);
49
+ if (outdated.length === 0 && !lockstep)
50
+ return null;
51
+ const reasons = [];
52
+ if (outdated.length > 0) {
53
+ reasons.push(`outdated: ${outdated.map((r) => r.assetId).join(", ")}`);
54
+ }
55
+ if (lockstep)
56
+ reasons.push("doc-detective / doc-detective-common version mismatch");
57
+ return {
58
+ severity: "warning",
59
+ title: "Install looks stale",
60
+ detail: `${reasons.join("; ")}. A stale or mismatched install is a common source of hard-to-explain failures.`,
61
+ fix: "doc-detective install runtime",
62
+ };
63
+ };
64
+ // cacheDir not writable → lazy installs and recordings have nowhere to go.
65
+ const cacheNotWritable = (data) => {
66
+ const entry = (data.cache?.entries || []).find((e) => e.label === "cacheDir");
67
+ if (!entry || entry.writable !== false)
68
+ return null;
69
+ return {
70
+ severity: "error",
71
+ title: "Cache directory is not writable",
72
+ detail: `cacheDir (${entry.path}) is not writable, so doc-detective can't lazy-install browsers or runtime packages there.`,
73
+ fix: "set DOC_DETECTIVE_CACHE_DIR to a writable path",
74
+ };
75
+ };
76
+ // A proxy is configured and something the installer needs is missing — flag
77
+ // the proxy as a likely lazy-install blocker (we don't probe reachability;
78
+ // that's the opt-in --check-network work).
79
+ const proxyMaybeBlocking = (data) => {
80
+ // Catch both the standard proxy env vars (HTTP(S)_PROXY / ALL_PROXY) and a
81
+ // proxy configured purely through npm (`npm config set proxy=…`), which
82
+ // surfaces in the network section as npm_config_proxy / npm_config_https_proxy.
83
+ const hasProxy = (data.network?.variables || []).some((v) => /^(https?_proxy|all_proxy)$/i.test(v.name) ||
84
+ /^npm_config_(https?_)?proxy$/i.test(v.name));
85
+ if (!hasProxy)
86
+ return null;
87
+ const missingNpm = (data.install?.rows || []).some((r) => r.kind === "npm" && !r.installed);
88
+ if (!missingNpm)
89
+ return null;
90
+ return {
91
+ severity: "info",
92
+ title: "Proxy configured with missing runtime packages",
93
+ detail: "A proxy is set and some runtime npm packages are not installed. If lazy installs fail, the proxy/registry is the likely cause — verify it's reachable and that proxy-agent is installed for @puppeteer/browsers downloads.",
94
+ };
95
+ };
96
+ // Driver resolves from npm but Appium doesn't list it → APPIUM_HOME mismatch.
97
+ // `registered === false` is the only firing case: `null` (manifest unread)
98
+ // means registration is unknown, not a finding — a missing manifest must not
99
+ // false-flag every resolvable driver.
100
+ const driverNotRegistered = (data) => {
101
+ const stranded = (data.appium?.drivers || []).filter((d) => d.npmResolvable && d.registered === false);
102
+ if (stranded.length === 0)
103
+ return null;
104
+ return {
105
+ severity: "warning",
106
+ title: "Appium driver installed but not registered",
107
+ detail: `${stranded
108
+ .map((d) => d.name)
109
+ .join(", ")} resolve from npm but Appium doesn't list them under the active APPIUM_HOME — usually an APPIUM_HOME pointing at the wrong node_modules.`,
110
+ fix: "doc-detective install runtime",
111
+ };
112
+ };
113
+ const RULES = [
114
+ chromeUnavailable,
115
+ staleInstall,
116
+ cacheNotWritable,
117
+ proxyMaybeBlocking,
118
+ driverNotRegistered,
119
+ ];
120
+ export function computeFindings(data) {
121
+ const findings = [];
122
+ for (const rule of RULES) {
123
+ try {
124
+ const finding = rule(data);
125
+ if (finding)
126
+ findings.push(finding);
127
+ }
128
+ catch {
129
+ // A rule must never crash the dump; skip on error.
130
+ }
131
+ }
132
+ return findings;
133
+ }
134
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/debug/findings.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  import { type SystemInfo } from "./system.js";
2
2
  import { type ToolResult } from "./tools.js";
3
3
  import { type ContainerInfo } from "./envvars.js";
4
+ import { type InstallData } from "./install.js";
5
+ import { type CacheStatus } from "./cache.js";
6
+ import { type NetworkConfig } from "./network.js";
7
+ import { type Provenance } from "./provenance.js";
8
+ import { type AppiumDiagnostics } from "./appium.js";
9
+ import { type Finding } from "./findings.js";
4
10
  export interface PrintDebugOptions {
5
11
  config: any;
6
12
  configPath?: string | null;
@@ -24,6 +30,12 @@ export interface PrintDebugOptions {
24
30
  * omit it so calling `printDebug` never writes a file as a side effect.
25
31
  */
26
32
  outDir?: string;
33
+ /**
34
+ * The raw parsed CLI args (yargs argv). Used only by the Config provenance
35
+ * section to report which flags overrode the validated config. Optional so
36
+ * unit tests can call `printDebug` without synthesizing argv.
37
+ */
38
+ args?: any;
27
39
  print?: (line: string) => void;
28
40
  }
29
41
  export declare function defaultDebugDir(): string;
@@ -76,9 +88,15 @@ export interface DebugData {
76
88
  docDetective: DocDetectiveData;
77
89
  tools: ToolResult[];
78
90
  browsers: BrowsersData;
91
+ install: InstallData;
92
+ appium: AppiumDiagnostics;
93
+ cache: CacheStatus;
79
94
  container: ContainerInfo;
95
+ network: NetworkConfig;
80
96
  environment: EnvData;
97
+ provenance: Provenance;
81
98
  config: ConfigData;
99
+ findings: Finding[];
82
100
  }
83
101
  export declare function printDebug(opts: PrintDebugOptions): Promise<void>;
84
102
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/debug/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAStB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAID,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAaD,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,OAAO;IACf,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB;AAqND,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/debug/index.ts"],"names":[],"mappings":"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"}