react-doctor 0.9.12-dev.3eda608 → 0.9.12-dev.43e90c4

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 (35) hide show
  1. package/dist/{build-section-divider-I2zZDzJ9.js → build-section-divider-DjDT7g8F.js} +7 -7
  2. package/dist/{ci-DAWNYwqh.js → ci-DViG0Mx9.js} +12 -12
  3. package/dist/cli.js +24 -24
  4. package/dist/{design-CT-fWB1q.js → design-qKCJUFRD.js} +4 -4
  5. package/dist/{exit-gracefully-BFTG5jEM.js → exit-gracefully-CSGIdkdg.js} +6 -6
  6. package/dist/{handle-error-wVABvSAi.js → handle-error-DzoPOn2r.js} +5 -5
  7. package/dist/index.js +54 -3
  8. package/dist/{inspect-BimAQ5xM.js → inspect-C_JmQr5G.js} +16 -16
  9. package/dist/{install-Oi0h_G7g.js → install-CSog_WA6.js} +9 -9
  10. package/dist/{install-doctor-script-02_POH23.js → install-doctor-script-Dpa1-Jqf.js} +4 -4
  11. package/dist/{install-github-workflow-CDDxuboB.js → install-github-workflow-KeAcT04B.js} +5 -5
  12. package/dist/{install-react-doctor-CTsuBvs7.js → install-react-doctor-BVAHBKRF.js} +8 -8
  13. package/dist/{jsx-runtime-KCzhtnA2.js → jsx-runtime--dPSibAO.js} +5 -5
  14. package/dist/{print-branded-header-Btnndqn7.js → print-branded-header-wXVcDIak.js} +4 -4
  15. package/dist/project-analysis-worker.js +3 -3
  16. package/dist/{prompt-runtime-scan-url-CkdYtR0M.js → prompt-runtime-scan-url-xT0eCxkC.js} +5 -5
  17. package/dist/{read-object-file-DhRQQnN-.js → read-object-file-DFGwT0K_.js} +4 -4
  18. package/dist/{record-metric-Bca1TzEP.js → record-metric-dpdFuBsl.js} +56 -5
  19. package/dist/{report-error-89sVIL94.js → report-error-BkPLhzIQ.js} +5 -5
  20. package/dist/{report-workflow-result-CA8lTeDk.js → report-workflow-result-klptBF3K.js} +5 -5
  21. package/dist/{resolve-scope-poO8hFkD.js → resolve-scope-cPoDmGnP.js} +6 -6
  22. package/dist/{rules-B16IRDyg.js → rules-D_pFBs00.js} +6 -6
  23. package/dist/{run-scan-app-NI3PasUA.js → run-scan-app-fWnL0ssJ.js} +10 -10
  24. package/dist/{runtime-scan-B9Nytu3v.js → runtime-scan-DGVOKqNv.js} +9 -9
  25. package/dist/{sanitize-runtime-url-pzQIwyc8.js → sanitize-runtime-url-CfNFKO8T.js} +4 -4
  26. package/dist/{scan-DoM4T1ov.js → scan-C4YpW_LT.js} +9 -9
  27. package/dist/{should-fail-scan-gate-CFyk-8U3.js → should-fail-scan-gate-LnCcs3V6.js} +11 -11
  28. package/dist/{should-skip-prompts--6z1nvz1.js → should-skip-prompts-BVyYQUvu.js} +4 -4
  29. package/dist/{should-use-tui-6f8qLHfp.js → should-use-tui-CyarWRcC.js} +4 -4
  30. package/dist/skills/improve-threejs/SKILL.md +12 -12
  31. package/dist/{telemetry-runtime-AGGMneW6.js → telemetry-runtime-CD6YrWNm.js} +4 -4
  32. package/dist/{version-Nk1e-_N3.js → version-lXfIlALV.js} +4 -4
  33. package/dist/{why-BujUNbke.js → why-C5046usx.js} +4 -4
  34. package/dist/{with-run-span-Yaips-em.js → with-run-span-Bgn1gKK6.js} +5 -5
  35. package/package.json +4 -4
@@ -1,7 +1,7 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="483991a6-0c1c-5b98-85ac-f1b14a3b870f")}catch(e){}}();
3
- import { Kt as highlighter, N as SENTRY_FLUSH_TIMEOUT_MS, a as isEnvFlagEnabled, er as CANONICAL_GITHUB_URL, ft as anonymizeInPlace, hn as scrubSensitivePaths, i as isTelemetryEnabled, o as buildSentryScope, or as DOCS_URL, pt as anonymizeText } from "./record-metric-Bca1TzEP.js";
4
- import { r as isExpectedUserError } from "./telemetry-runtime-AGGMneW6.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1e84d3ed-d9be-5e70-b6eb-6c56bbb11150")}catch(e){}}();
3
+ import { Kt as highlighter, N as SENTRY_FLUSH_TIMEOUT_MS, a as isEnvFlagEnabled, er as CANONICAL_GITHUB_URL, ft as anonymizeInPlace, hn as scrubSensitivePaths, i as isTelemetryEnabled, o as buildSentryScope, or as DOCS_URL, pt as anonymizeText } from "./record-metric-dpdFuBsl.js";
4
+ import { r as isExpectedUserError } from "./telemetry-runtime-CD6YrWNm.js";
5
5
  import * as Sentry from "@sentry/node";
6
6
  //#region src/cli/utils/scrub-sentry-event.ts
7
7
  /**
@@ -70,13 +70,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
70
70
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
71
71
  * standard `SENTRY_RELEASE` override.
72
72
  */
73
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.12-dev.3eda608`;
73
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.12-dev.43e90c4`;
74
74
  /**
75
75
  * Deployment environment shown in Sentry's environment filter. Defaults to
76
76
  * `production` for tagged releases and `development` for dev/unbuilt versions,
77
77
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
78
78
  */
79
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.12-dev.3eda608") ? "development" : "production");
79
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.12-dev.43e90c4") ? "development" : "production");
80
80
  //#endregion
81
81
  //#region src/instrument.ts
82
82
  let isInitialized = false;
@@ -212,5 +212,5 @@ const buildSectionDivider = () => highlighter.dim(`${DIVIDER_INDENT}${"─".repe
212
212
  //#endregion
213
213
  export { initializeSentry as i, buildFooterLinkLines as n, flushSentry as r, buildSectionDivider as t };
214
214
 
215
- //# sourceMappingURL=build-section-divider-I2zZDzJ9.js.map
216
- //# debugId=483991a6-0c1c-5b98-85ac-f1b14a3b870f
215
+ //# sourceMappingURL=build-section-divider-DjDT7g8F.js.map
216
+ //# debugId=1e84d3ed-d9be-5e70-b6eb-6c56bbb11150
@@ -1,15 +1,15 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="921f6dc8-1b8c-5e44-b1f5-4bb5a3020751")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="621b5e89-0f64-50a6-a9ee-72ee73bfe608")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { Kt as highlighter, T as METRIC, cr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, tr as CI_URL, zn as runSync } from "./record-metric-Bca1TzEP.js";
5
- import { r as isExpectedUserError } from "./telemetry-runtime-AGGMneW6.js";
6
- import { n as handleUserError, t as handleError } from "./handle-error-wVABvSAi.js";
7
- import { t as reportErrorToSentry } from "./report-error-89sVIL94.js";
8
- import { N as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-02_POH23.js";
9
- import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-CDDxuboB.js";
10
- import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-poO8hFkD.js";
11
- import { t as shouldSkipPrompts } from "./should-skip-prompts--6z1nvz1.js";
12
- import { t as printBrandedHeader } from "./print-branded-header-Btnndqn7.js";
4
+ import { Kt as highlighter, T as METRIC, cr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, tr as CI_URL, zn as runSync } from "./record-metric-dpdFuBsl.js";
5
+ import { r as isExpectedUserError } from "./telemetry-runtime-CD6YrWNm.js";
6
+ import { n as handleUserError, t as handleError } from "./handle-error-DzoPOn2r.js";
7
+ import { t as reportErrorToSentry } from "./report-error-BkPLhzIQ.js";
8
+ import { N as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-Dpa1-Jqf.js";
9
+ import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-KeAcT04B.js";
10
+ import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-cPoDmGnP.js";
11
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-BVyYQUvu.js";
12
+ import { t as printBrandedHeader } from "./print-branded-header-wXVcDIak.js";
13
13
  import * as path$1 from "node:path";
14
14
  import * as fs$1 from "node:fs";
15
15
  //#region src/cli/utils/ci/ci-provider.ts
@@ -7498,5 +7498,5 @@ const ciConfigAction = (options) => runCiCommand("config", runCiConfig, options)
7498
7498
  //#endregion
7499
7499
  export { ciConfigAction, ciInstallAction, ciUpgradeAction };
7500
7500
 
7501
- //# sourceMappingURL=ci-DAWNYwqh.js.map
7502
- //# debugId=921f6dc8-1b8c-5e44-b1f5-4bb5a3020751
7501
+ //# sourceMappingURL=ci-DViG0Mx9.js.map
7502
+ //# debugId=621b5e89-0f64-50a6-a9ee-72ee73bfe608
package/dist/cli.js CHANGED
@@ -1,13 +1,13 @@
1
1
 
2
2
  !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="060d9fda-090f-56c0-a01c-3ce99371376f")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { H as isDebugFlagEnabled, Kt as highlighter, _ as VERSION, d as isJsonModeActive, er as CANONICAL_GITHUB_URL, gn as setColorEnabled, h as writeJsonErrorReport, i as isTelemetryEnabled, tr as CI_URL, z as CliInputError } from "./record-metric-Bca1TzEP.js";
5
- import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-AGGMneW6.js";
6
- import { i as initializeSentry, r as flushSentry } from "./build-section-divider-I2zZDzJ9.js";
7
- import { t as exitGracefully } from "./exit-gracefully-BFTG5jEM.js";
8
- import { n as handleUserError, t as handleError } from "./handle-error-wVABvSAi.js";
4
+ import { H as isDebugFlagEnabled, Kt as highlighter, _ as VERSION, d as isJsonModeActive, er as CANONICAL_GITHUB_URL, gn as setColorEnabled, h as writeJsonErrorReport, i as isTelemetryEnabled, tr as CI_URL, z as CliInputError } from "./record-metric-dpdFuBsl.js";
5
+ import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-CD6YrWNm.js";
6
+ import { i as initializeSentry, r as flushSentry } from "./build-section-divider-DjDT7g8F.js";
7
+ import { t as exitGracefully } from "./exit-gracefully-CSGIdkdg.js";
8
+ import { n as handleUserError, t as handleError } from "./handle-error-DzoPOn2r.js";
9
9
  import { n as getLastRunTraceId } from "./active-run-trace-dlIZeEvb.js";
10
- import { t as reportErrorToSentry } from "./report-error-89sVIL94.js";
10
+ import { t as reportErrorToSentry } from "./report-error-BkPLhzIQ.js";
11
11
  import { t as unrefStdin } from "./unref-stdin-BKT_s38a.js";
12
12
  import { execFileSync } from "node:child_process";
13
13
  //#region ../../node_modules/.pnpm/commander@14.0.3/node_modules/commander/lib/error.js
@@ -3529,7 +3529,7 @@ ${highlighter.dim("Learn more:")}
3529
3529
  const collectCategoryOption = (value, previousValues) => [...previousValues ?? [], value];
3530
3530
  const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[directory]", "project directory to scan", ".").option("--lint", "enable linting").option("--no-lint", "skip linting").addOption(new Option("--dead-code").hideHelp()).addOption(new Option("--no-dead-code").hideHelp()).option("--supply-chain", "enable the dependency supply-chain scan (default)").option("--no-supply-chain", "skip the dependency supply-chain scan (Socket.dev dependency health checks)").option("--verbose", "show every rule and per-file details (default shows top 3 rules)").option("--debug", "force a Sentry trace and print its id at the end (paste it into a bug report)").option("--output-dir <dir>", "directory for the full diagnostics dump (default: a temp folder)").option("--score", "output only the score").option("--json", "output a single structured JSON report (suppresses other output)").option("--json-compact", "with --json, emit compact JSON (no indentation)").option("--json-out <path>", "with --json, write the report to a file instead of stdout").option("--no-cache", "disable all scan caches for this run").option("-y, --yes", "skip prompts, scan all workspace projects").option("--no-parallel", "lint serially with one worker (default: parallel across CPU cores; set the worker count with REACT_DOCTOR_PARALLEL)").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple); overrides the `projects` config field").option("--scope <value>", "how much supported JS/TS and inline HTML script source to scan/report: full (default), files, changed (only new issues vs base), or lines (issues whose source spans touch changed lines)").option("--base <ref>", "base git ref for files/changed/lines scope (auto-detected when omitted)").option("--include-untracked", "with --scope files/changed/lines, also scan ordinary untracked files (respects .gitignore)").addOption(new Option("--diff [base]", "[deprecated] alias for --scope changed (pass `false` to force a full scan)").hideHelp()).addOption(new Option("--changed-files-from <file>", "scan source files listed in a newline-delimited changed-files file").hideHelp()).option("--no-score", "skip the score API, the share URL, and crash reporting").addOption(new Option("--category <category>", "only show diagnostics in a category (repeatable; e.g. Security)").argParser(collectCategoryOption)).option("--no-telemetry", "alias for --no-score (skip the score API, share URL, and crash reporting)").option("--staged", "scan only staged (git index) files for pre-commit hooks (honors --project and config `projects`; exits 0 when nothing is staged)").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").addOption(new Option("--fail-on <level>", "[deprecated] alias for --blocking <level>").hideHelp()).option("--no-respect-inline-disables", "audit mode: neutralize inline lint suppressions before scanning").option("--warnings", "show warning-severity diagnostics (default)").option("--no-warnings", "hide warning-severity diagnostics (errors only)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderRootHelpEpilog);
3531
3531
  program.action(async (directory = ".", flags) => {
3532
- const { runScanCommand } = await import("./scan-DoM4T1ov.js");
3532
+ const { runScanCommand } = await import("./scan-C4YpW_LT.js");
3533
3533
  return runScanCommand({
3534
3534
  directory,
3535
3535
  flags,
@@ -3537,75 +3537,75 @@ program.action(async (directory = ".", flags) => {
3537
3537
  });
3538
3538
  });
3539
3539
  program.command("design [directory]").description("Run only the focused UI design diagnostics").addHelpText("after", renderDesignHelpEpilog).action(async (directory, _options, command) => {
3540
- const { designAction } = await import("./design-CT-fWB1q.js");
3540
+ const { designAction } = await import("./design-qKCJUFRD.js");
3541
3541
  return designAction(directory ?? ".", command.optsWithGlobals());
3542
3542
  });
3543
3543
  program.command("scan").description("Scan a React interaction in Chrome until you press Enter").argument("[url]", "HTTP(S) URL of the running React app; detects local apps when omitted").option("-f, --format <format>", "report format: text, json, or jsonl", "text").option("--cdp <url>", "reuse Chrome at this remote-debugging endpoint").option("--trace-out <path>", "save the compressed .json.gz DevTools trace at this path").addHelpText("after", renderRuntimeScanHelpEpilog).action(async (url, options) => {
3544
- const { runtimeScanAction } = await import("./runtime-scan-B9Nytu3v.js");
3544
+ const { runtimeScanAction } = await import("./runtime-scan-DGVOKqNv.js");
3545
3545
  return runtimeScanAction(url, options);
3546
3546
  });
3547
3547
  program.command("why <location>").description("Explain why a rule fired (or why a suppression didn't apply) at a file:line").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple)").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (location, options) => {
3548
- const { whyAction } = await import("./why-BujUNbke.js");
3548
+ const { whyAction } = await import("./why-C5046usx.js");
3549
3549
  return whyAction(location, options);
3550
3550
  });
3551
3551
  program.command("install").alias("setup").description("Install the react-doctor skill into your coding agents and optional git hook").option("-y, --yes", "skip prompts, install for all detected agents").option("--dry-run", "show what would be installed without writing files").option("--agent-hooks", "install end-of-turn agent hooks for Claude Code and Cursor").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderInstallHelpEpilog).action(async (options, command) => {
3552
- const { installAction } = await import("./install-Oi0h_G7g.js");
3552
+ const { installAction } = await import("./install-CSog_WA6.js");
3553
3553
  return installAction(options, command);
3554
3554
  });
3555
3555
  const providerOption = ["--provider <name>", "ci provider: github-actions or gitlab-ci (auto-detected by default)"];
3556
3556
  const prOption = ["--pr", "open a pull request with the change instead of writing it to the working tree"];
3557
3557
  const ci = program.command("ci").description("Set up, upgrade, and configure React Doctor in your CI");
3558
3558
  ci.command("install").description("Add a CI workflow that scans every pull request").option(...providerOption).option(...prOption).option("--blocking <level>", "gate level: none (advisory, default), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed (default), files, lines, full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; use the defaults").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderCiHelpEpilog).action(async (_options, command) => {
3559
- const { ciInstallAction } = await import("./ci-DAWNYwqh.js");
3559
+ const { ciInstallAction } = await import("./ci-DViG0Mx9.js");
3560
3560
  return ciInstallAction(command.optsWithGlobals());
3561
3561
  });
3562
3562
  ci.command("config").description("Change the gate, scan scope, and pull-request reporting").option(...providerOption).option("--blocking <level>", "gate level: none (advisory), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed, files, lines, or full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; print the current settings").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
3563
- const { ciConfigAction } = await import("./ci-DAWNYwqh.js");
3563
+ const { ciConfigAction } = await import("./ci-DViG0Mx9.js");
3564
3564
  return ciConfigAction(command.optsWithGlobals());
3565
3565
  });
3566
3566
  ci.command("upgrade").description("Upgrade the CI workflow to the action's current major").option(...providerOption).option(...prOption).option("-y, --yes", "skip prompts").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
3567
- const { ciUpgradeAction } = await import("./ci-DAWNYwqh.js");
3567
+ const { ciUpgradeAction } = await import("./ci-DViG0Mx9.js");
3568
3568
  return ciUpgradeAction(command.optsWithGlobals());
3569
3569
  });
3570
3570
  program.command("version").description("show the version with Node and platform info").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async () => {
3571
- const { versionAction } = await import("./version-Nk1e-_N3.js");
3571
+ const { versionAction } = await import("./version-lXfIlALV.js");
3572
3572
  return versionAction();
3573
3573
  });
3574
3574
  const rules = program.command("rules").description("List, explain, and configure which React Doctor rules run");
3575
3575
  rules.command("list").description("List rules and the severity they run at under your config").option("--category <name>", "only show rules in a category (e.g. Performance)").option("--tag <name>", "only show rules with a tag (e.g. design, test-noise)").option("--framework <name>", "only show rules for a framework (e.g. global, nextjs)").option("--configured", "only show rules your config has changed from the default").option("--json", "output a structured JSON array").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (_options, command) => {
3576
- const { rulesListAction } = await import("./rules-B16IRDyg.js");
3576
+ const { rulesListAction } = await import("./rules-D_pFBs00.js");
3577
3577
  return rulesListAction(command.optsWithGlobals());
3578
3578
  });
3579
3579
  rules.command("explain <rule>").description("Explain why a rule matters, its current severity, and how to configure it").option("--json", "output a structured JSON object").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3580
- const { rulesExplainAction } = await import("./rules-B16IRDyg.js");
3580
+ const { rulesExplainAction } = await import("./rules-D_pFBs00.js");
3581
3581
  return rulesExplainAction(rule, command.optsWithGlobals());
3582
3582
  });
3583
3583
  rules.command("set <rule> <severity>").description("Set a rule's severity: off, warn, or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, severity, _options, command) => {
3584
- const { rulesSetAction } = await import("./rules-B16IRDyg.js");
3584
+ const { rulesSetAction } = await import("./rules-D_pFBs00.js");
3585
3585
  return rulesSetAction(rule, severity, command.optsWithGlobals());
3586
3586
  });
3587
3587
  rules.command("enable <rule>").description("Enable a rule at its recommended severity (or pass --severity)").option("--severity <level>", "severity to enable at: warn or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3588
- const { rulesEnableAction } = await import("./rules-B16IRDyg.js");
3588
+ const { rulesEnableAction } = await import("./rules-D_pFBs00.js");
3589
3589
  return rulesEnableAction(rule, command.optsWithGlobals());
3590
3590
  });
3591
3591
  rules.command("disable <rule>").description("Disable a rule so it never runs").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3592
- const { rulesDisableAction } = await import("./rules-B16IRDyg.js");
3592
+ const { rulesDisableAction } = await import("./rules-D_pFBs00.js");
3593
3593
  return rulesDisableAction(rule, command.optsWithGlobals());
3594
3594
  });
3595
3595
  rules.command("category <category> <severity>").description("Set the severity for a whole category (off, warn, error)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (category, severity, _options, command) => {
3596
- const { rulesCategoryAction } = await import("./rules-B16IRDyg.js");
3596
+ const { rulesCategoryAction } = await import("./rules-D_pFBs00.js");
3597
3597
  return rulesCategoryAction(category, severity, command.optsWithGlobals());
3598
3598
  });
3599
3599
  rules.command("ignore-tag <tag>").description("Skip a whole rule family by tag before linting (e.g. design)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
3600
- const { rulesIgnoreTagAction } = await import("./rules-B16IRDyg.js");
3600
+ const { rulesIgnoreTagAction } = await import("./rules-D_pFBs00.js");
3601
3601
  return rulesIgnoreTagAction(tag, command.optsWithGlobals());
3602
3602
  });
3603
3603
  rules.command("unignore-tag <tag>").description("Stop ignoring a tag previously skipped via ignore-tag").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
3604
- const { rulesUnignoreTagAction } = await import("./rules-B16IRDyg.js");
3604
+ const { rulesUnignoreTagAction } = await import("./rules-D_pFBs00.js");
3605
3605
  return rulesUnignoreTagAction(tag, command.optsWithGlobals());
3606
3606
  });
3607
3607
  program.command("experimental-tui [directory]", { hidden: true }).description("[experimental] interactive, scrollable scan report").option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addOption(new Option("--no-dead-code").hideHelp()).option("--no-supply-chain", "skip the dependency supply-chain scan").option("--score", "only print the numeric score (for scripts and CI)").option("--no-score", "skip the score API, the share URL, and crash reporting").option("--no-cache", "disable all scan caches for this run").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).option("-p, --project <names>", "scan specific workspace projects (comma-separated, or *)").option("-y, --yes", "skip the project prompt and scan every discovered project").action(async (directory = ".", _localOptions, command) => {
3608
- const { runScanCommand } = await import("./scan-DoM4T1ov.js");
3608
+ const { runScanCommand } = await import("./scan-C4YpW_LT.js");
3609
3609
  return runScanCommand({
3610
3610
  directory,
3611
3611
  flags: command.optsWithGlobals(),
@@ -1,6 +1,6 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fcb66b74-78d9-509a-9209-370d81cb6936")}catch(e){}}();
3
- import { t as inspectAction } from "./inspect-BimAQ5xM.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d154c2f8-829e-5f3b-b245-dfb4694d89d9")}catch(e){}}();
3
+ import { t as inspectAction } from "./inspect-C_JmQr5G.js";
4
4
  //#region src/cli/commands/design.ts
5
5
  const designAction = async (directory, flags) => inspectAction(directory, {
6
6
  ...flags,
@@ -10,5 +10,5 @@ const designAction = async (directory, flags) => inspectAction(directory, {
10
10
  //#endregion
11
11
  export { designAction };
12
12
 
13
- //# sourceMappingURL=design-CT-fWB1q.js.map
14
- //# debugId=fcb66b74-78d9-509a-9209-370d81cb6936
13
+ //# sourceMappingURL=design-qKCJUFRD.js.map
14
+ //# debugId=d154c2f8-829e-5f3b-b245-dfb4694d89d9
@@ -1,8 +1,8 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a6855154-fee3-52cd-b89f-78283d630d56")}catch(e){}}();
3
- import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-Bca1TzEP.js";
4
- import { n as shutdownTelemetry } from "./telemetry-runtime-AGGMneW6.js";
5
- import { n as buildFooterLinkLines, r as flushSentry, t as buildSectionDivider } from "./build-section-divider-I2zZDzJ9.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="693657d8-fbc5-5060-a2c8-42b271e13fb2")}catch(e){}}();
3
+ import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-dpdFuBsl.js";
4
+ import { n as shutdownTelemetry } from "./telemetry-runtime-CD6YrWNm.js";
5
+ import { n as buildFooterLinkLines, r as flushSentry, t as buildSectionDivider } from "./build-section-divider-DjDT7g8F.js";
6
6
  import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-DwG6tSPy.js";
7
7
  //#region src/cli/utils/active-tui-renderer.ts
8
8
  let activeTuiRenderer = null;
@@ -50,5 +50,5 @@ const exitGracefully = () => {
50
50
  //#endregion
51
51
  export { registerActiveTuiRenderer as n, exitGracefully as t };
52
52
 
53
- //# sourceMappingURL=exit-gracefully-BFTG5jEM.js.map
54
- //# debugId=a6855154-fee3-52cd-b89f-78283d630d56
53
+ //# sourceMappingURL=exit-gracefully-CSGIdkdg.js.map
54
+ //# debugId=693657d8-fbc5-5060-a2c8-42b271e13fb2
@@ -1,7 +1,7 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="deb530e8-5344-52a4-8d23-43b7c6a88623")}catch(e){}}();
3
- import { $n as CANONICAL_DISCORD_URL, An as gen, Cn as error, Ft as formatErrorChain, It as formatReactDoctorError, Kt as highlighter, T as METRIC, Xt as isReactDoctorError, _ as VERSION, br as isErrnoException, er as CANONICAL_GITHUB_URL, t as recordCount, zn as runSync } from "./record-metric-Bca1TzEP.js";
4
- import { a as isEnvironmentError, i as formatEnvironmentError } from "./telemetry-runtime-AGGMneW6.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="34c08bd5-6495-559b-9891-62f836c5b5e2")}catch(e){}}();
3
+ import { $n as CANONICAL_DISCORD_URL, An as gen, Cn as error, Ft as formatErrorChain, It as formatReactDoctorError, Kt as highlighter, T as METRIC, Xt as isReactDoctorError, _ as VERSION, br as isErrnoException, er as CANONICAL_GITHUB_URL, t as recordCount, zn as runSync } from "./record-metric-dpdFuBsl.js";
4
+ import { a as isEnvironmentError, i as formatEnvironmentError } from "./telemetry-runtime-CD6YrWNm.js";
5
5
  //#region src/cli/utils/handle-error.ts
6
6
  const OTLP_ENDPOINT_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_ENDPOINT";
7
7
  const OTLP_AUTH_HEADER_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_AUTH_HEADER";
@@ -105,5 +105,5 @@ const handleUserError = (error$1, options = {}) => {
105
105
  //#endregion
106
106
  export { handleUserError as n, handleError as t };
107
107
 
108
- //# sourceMappingURL=handle-error-wVABvSAi.js.map
109
- //# debugId=deb530e8-5344-52a4-8d23-43b7c6a88623
108
+ //# sourceMappingURL=handle-error-DzoPOn2r.js.map
109
+ //# debugId=34c08bd5-6495-559b-9891-62f836c5b5e2
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="902a1dfa-f8be-5f5c-af29-afd3c82dd860")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="16798435-138f-5144-b75d-97aa7ae2907b")}catch(e){}}();
3
3
  import { i as __toESM$1, r as __require, t as __commonJSMin$1 } from "./chunk-ChKA3wi6.js";
4
4
  import { createRequire } from "node:module";
5
5
  import * as path$1$1 from "node:path";
@@ -74727,6 +74727,46 @@ const buildProfiledNodeArguments = (input) => [
74727
74727
  ...input.heapProfileDirectory ? ["--heap-prof", `--heap-prof-dir=${input.heapProfileDirectory}`] : [],
74728
74728
  ...input.argumentsList
74729
74729
  ];
74730
+ const buildOxlintTimingArguments = (argumentsList) => {
74731
+ const timingArguments = [...argumentsList];
74732
+ const formatFlagIndex = timingArguments.indexOf("--format");
74733
+ if (formatFlagIndex === -1 || formatFlagIndex + 1 >= timingArguments.length) throw new Error("Oxlint timing arguments require a --format value");
74734
+ timingArguments[formatFlagIndex + 1] = "default";
74735
+ timingArguments.push("--debug", "timings", "--quiet");
74736
+ return timingArguments;
74737
+ };
74738
+ const captureOxlintRuleTimings = (input) => new Promise((resolve, reject) => {
74739
+ const timingEnvironment = { ...input.environment };
74740
+ timingEnvironment.REACT_DOCTOR_RULE_TIMINGS_DIR = void 0;
74741
+ const timingChild = spawn(input.nodeBinaryPath, buildOxlintTimingArguments(input.argumentsList), {
74742
+ cwd: input.rootDirectory,
74743
+ env: timingEnvironment,
74744
+ stdio: [
74745
+ "ignore",
74746
+ "pipe",
74747
+ "pipe"
74748
+ ]
74749
+ });
74750
+ const stdoutBuffers = [];
74751
+ const stderrBuffers = [];
74752
+ timingChild.stdout.on("data", (buffer) => stdoutBuffers.push(buffer));
74753
+ timingChild.stderr.on("data", (buffer) => stderrBuffers.push(buffer));
74754
+ timingChild.on("error", reject);
74755
+ timingChild.on("close", (_code, signal) => {
74756
+ if (signal) {
74757
+ reject(/* @__PURE__ */ new Error(`Oxlint timing pass was killed by ${signal}`));
74758
+ return;
74759
+ }
74760
+ const timingOutput = `${Buffer.concat(stdoutBuffers).toString("utf8")}\n${Buffer.concat(stderrBuffers).toString("utf8")}`;
74761
+ if (!timingOutput.includes("Rule timings:")) {
74762
+ resolve();
74763
+ return;
74764
+ }
74765
+ fs$1$3.mkdirSync(input.timingDirectory, { recursive: true });
74766
+ fs$1$3.writeFileSync(path$1$1.join(input.timingDirectory, `oxlint-${timingChild.pid ?? process.pid}.timings.txt`), timingOutput);
74767
+ resolve();
74768
+ });
74769
+ });
74730
74770
  const lowerChildProcessPriority = (processId) => {
74731
74771
  if (processId === void 0) return;
74732
74772
  try {
@@ -74848,7 +74888,18 @@ const spawnOxlint = (args, rootDirectory, nodeBinaryPath, spawnTimeoutMs = OXLIN
74848
74888
  return;
74849
74889
  }
74850
74890
  }
74851
- resolve(output);
74891
+ const timingDirectory = SANITIZED_ENV.REACT_DOCTOR_OXLINT_TIMINGS_DIR;
74892
+ if (timingDirectory === void 0) {
74893
+ resolve(output);
74894
+ return;
74895
+ }
74896
+ captureOxlintRuleTimings({
74897
+ argumentsList: args,
74898
+ environment: SANITIZED_ENV,
74899
+ nodeBinaryPath,
74900
+ rootDirectory,
74901
+ timingDirectory
74902
+ }).then(() => resolve(output), reject);
74852
74903
  });
74853
74904
  });
74854
74905
  const PARALLELISM_EXHAUSTION_ERROR_CODES = new Set([
@@ -77956,4 +78007,4 @@ const toJsonReport = (result, options) => buildJsonReport({
77956
78007
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
77957
78008
 
77958
78009
  //# sourceMappingURL=index.js.map
77959
- //# debugId=902a1dfa-f8be-5f5c-af29-afd3c82dd860
78010
+ //# debugId=16798435-138f-5144-b75d-97aa7ae2907b
@@ -1,18 +1,18 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4c8c947d-a41b-52b9-8281-2b91ee76fe54")}catch(e){}}();
3
- import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-Bca1TzEP.js";
4
- import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-AGGMneW6.js";
5
- import { r as flushSentry } from "./build-section-divider-I2zZDzJ9.js";
6
- import { n as handleUserError, t as handleError } from "./handle-error-wVABvSAi.js";
7
- import { t as reportErrorToSentry } from "./report-error-89sVIL94.js";
8
- import { N as cliLogger, c as spinner, i as hasDoctorScript, j as runGitRaw, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-02_POH23.js";
9
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-CDDxuboB.js";
10
- import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-poO8hFkD.js";
11
- import { t as shouldSkipPrompts } from "./should-skip-prompts--6z1nvz1.js";
12
- import { A as resolveMergeBaseRef, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, I as printDiagnosticsDump, O as createInvocationInspect, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, V as buildEmptyReportMessage, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-CFyk-8U3.js";
13
- import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-CA8lTeDk.js";
14
- import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-CTsuBvs7.js";
15
- import { t as readObjectFile } from "./read-object-file-DhRQQnN-.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e7b04f41-5d2a-5693-a2b1-b77ac163aaae")}catch(e){}}();
3
+ import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-dpdFuBsl.js";
4
+ import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-CD6YrWNm.js";
5
+ import { r as flushSentry } from "./build-section-divider-DjDT7g8F.js";
6
+ import { n as handleUserError, t as handleError } from "./handle-error-DzoPOn2r.js";
7
+ import { t as reportErrorToSentry } from "./report-error-BkPLhzIQ.js";
8
+ import { N as cliLogger, c as spinner, i as hasDoctorScript, j as runGitRaw, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-Dpa1-Jqf.js";
9
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-KeAcT04B.js";
10
+ import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-cPoDmGnP.js";
11
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-BVyYQUvu.js";
12
+ import { A as resolveMergeBaseRef, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, I as printDiagnosticsDump, O as createInvocationInspect, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, V as buildEmptyReportMessage, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-LnCcs3V6.js";
13
+ import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-klptBF3K.js";
14
+ import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-BVAHBKRF.js";
15
+ import { t as readObjectFile } from "./read-object-file-DFGwT0K_.js";
16
16
  import * as path$1 from "node:path";
17
17
  import * as fs$1 from "node:fs";
18
18
  import { tmpdir } from "node:os";
@@ -1441,5 +1441,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
1441
1441
  //#endregion
1442
1442
  export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
1443
1443
 
1444
- //# sourceMappingURL=inspect-BimAQ5xM.js.map
1445
- //# debugId=4c8c947d-a41b-52b9-8281-2b91ee76fe54
1444
+ //# sourceMappingURL=inspect-C_JmQr5G.js.map
1445
+ //# debugId=e7b04f41-5d2a-5693-a2b1-b77ac163aaae
@@ -1,11 +1,11 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="74de7320-74f9-5344-a57d-489b673f1e5b")}catch(e){}}();
3
- import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-Bca1TzEP.js";
4
- import { r as isExpectedUserError } from "./telemetry-runtime-AGGMneW6.js";
5
- import { n as handleUserError, t as handleError } from "./handle-error-wVABvSAi.js";
6
- import { t as reportErrorToSentry } from "./report-error-89sVIL94.js";
7
- import { t as printBrandedHeader } from "./print-branded-header-Btnndqn7.js";
8
- import { n as runInstallReactDoctor } from "./install-react-doctor-CTsuBvs7.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a05096de-f33d-5bb5-8412-5cf06a113bd6")}catch(e){}}();
3
+ import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-dpdFuBsl.js";
4
+ import { r as isExpectedUserError } from "./telemetry-runtime-CD6YrWNm.js";
5
+ import { n as handleUserError, t as handleError } from "./handle-error-DzoPOn2r.js";
6
+ import { t as reportErrorToSentry } from "./report-error-BkPLhzIQ.js";
7
+ import { t as printBrandedHeader } from "./print-branded-header-wXVcDIak.js";
8
+ import { n as runInstallReactDoctor } from "./install-react-doctor-BVAHBKRF.js";
9
9
  //#region src/cli/commands/install.ts
10
10
  const installAction = async (options, command) => {
11
11
  recordCount(METRIC.cliInvoked, 1, { command: "install" });
@@ -29,5 +29,5 @@ const installAction = async (options, command) => {
29
29
  //#endregion
30
30
  export { installAction };
31
31
 
32
- //# sourceMappingURL=install-Oi0h_G7g.js.map
33
- //# debugId=74de7320-74f9-5344-a57d-489b673f1e5b
32
+ //# sourceMappingURL=install-CSog_WA6.js.map
33
+ //# debugId=a05096de-f33d-5bb5-8412-5cf06a113bd6
@@ -1,6 +1,6 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0db83de4-6810-5e48-ae59-db0c1f65d986")}catch(e){}}();
3
- import { B as isNonInteractiveEnvironment, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } from "./record-metric-Bca1TzEP.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="824770d3-cd48-52f5-8c12-849cf0f45997")}catch(e){}}();
3
+ import { B as isNonInteractiveEnvironment, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } from "./record-metric-dpdFuBsl.js";
4
4
  import { a as chalk, i as stripAnsi, t as eastAsianWidth } from "./get-east-asian-width-Cglw13G7.js";
5
5
  import { execFileSync } from "node:child_process";
6
6
  import * as path$1 from "node:path";
@@ -2812,5 +2812,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
2812
2812
  //#endregion
2813
2813
  export { runGit as A, getPackageJsonPath as C, packageHasRecordKey as D, packageHasNestedRecordKey as E, writeJsonFile as M, cliLogger as N, readPackageJson as O, ensureTrailingNewline as S, packageHasDependency as T, PRE_COMMIT_CONFIG_FILE as _, installReactDoctorScriptStep as a, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as b, spinner as c, HOOK_RELATIVE_PATH as d, HUSKY_HOOKS_PATH as f, OVERCOMMIT_CONFIG_FILE as g, NON_BLOCKING_REACT_DOCTOR_COMMAND as h, hasDoctorScript as i, runGitRaw as j, resolveGitPath as k, isUnicodeSupported as l, LEGACY_HOOK_RUNNER_RELATIVE_PATH as m, findNearestPackageDirectory as n, isSpinnerSilent as o, LEFTHOOK_CONFIG_FILES as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, HOOK_FILE_NAME as u, REACT_DOCTOR_COMMAND as v, isRecord as w, VITE_PLUS_HOOKS_PATH as x, SIMPLE_GIT_HOOKS_CONFIG_FILE as y };
2814
2814
 
2815
- //# sourceMappingURL=install-doctor-script-02_POH23.js.map
2816
- //# debugId=0db83de4-6810-5e48-ae59-db0c1f65d986
2815
+ //# sourceMappingURL=install-doctor-script-Dpa1-Jqf.js.map
2816
+ //# debugId=824770d3-cd48-52f5-8c12-849cf0f45997
@@ -1,8 +1,8 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d7d63ba8-2c22-55a6-b729-1f9d991f19d7")}catch(e){}}();
3
- import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-Bca1TzEP.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6e1e0f8d-9ab7-5ee8-ac11-3cea8c5acf01")}catch(e){}}();
3
+ import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-dpdFuBsl.js";
4
4
  import { t as unrefStdin } from "./unref-stdin-BKT_s38a.js";
5
- import { N as cliLogger } from "./install-doctor-script-02_POH23.js";
5
+ import { N as cliLogger } from "./install-doctor-script-Dpa1-Jqf.js";
6
6
  import { createRequire } from "node:module";
7
7
  import { execFile } from "node:child_process";
8
8
  import * as path$1 from "node:path";
@@ -263,5 +263,5 @@ const upgradeReactDoctorWorkflowInPlace = (projectRoot) => {
263
263
  //#endregion
264
264
  export { readReactDoctorWorkflow as a, workflowUsesV1Action as c, detectDefaultBranch as d, runCommand as f, isReactDoctorWorkflowInstalled as i, prompts as l, getReactDoctorWorkflowPath as n, upgradeReactDoctorWorkflowInPlace as o, installReactDoctorWorkflow as r, upgradeWorkflowActionToV2 as s, buildWorkflowContent as t, isCommandAvailable as u };
265
265
 
266
- //# sourceMappingURL=install-github-workflow-CDDxuboB.js.map
267
- //# debugId=d7d63ba8-2c22-55a6-b729-1f9d991f19d7
266
+ //# sourceMappingURL=install-github-workflow-KeAcT04B.js.map
267
+ //# debugId=6e1e0f8d-9ab7-5ee8-ac11-3cea8c5acf01
@@ -1,10 +1,10 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="637b5d51-14e6-543f-bf46-1556d58f9131")}catch(e){}}();
3
- import { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-Bca1TzEP.js";
4
- import { A as runGit, C as getPackageJsonPath, D as packageHasRecordKey, E as packageHasNestedRecordKey, M as writeJsonFile, N as cliLogger, O as readPackageJson, S as ensureTrailingNewline, T as packageHasDependency, _ as PRE_COMMIT_CONFIG_FILE, a as installReactDoctorScriptStep, c as spinner, d as HOOK_RELATIVE_PATH, f as HUSKY_HOOKS_PATH, g as OVERCOMMIT_CONFIG_FILE, h as NON_BLOCKING_REACT_DOCTOR_COMMAND, k as resolveGitPath, m as LEGACY_HOOK_RUNNER_RELATIVE_PATH, n as findNearestPackageDirectory, p as LEFTHOOK_CONFIG_FILES, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_FILE_NAME, v as REACT_DOCTOR_COMMAND, w as isRecord, x as VITE_PLUS_HOOKS_PATH } from "./install-doctor-script-02_POH23.js";
5
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-CDDxuboB.js";
6
- import { t as shouldSkipPrompts } from "./should-skip-prompts--6z1nvz1.js";
7
- import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-CA8lTeDk.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="403995fd-83a9-5326-864a-df56d8f61041")}catch(e){}}();
3
+ import { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-dpdFuBsl.js";
4
+ import { A as runGit, C as getPackageJsonPath, D as packageHasRecordKey, E as packageHasNestedRecordKey, M as writeJsonFile, N as cliLogger, O as readPackageJson, S as ensureTrailingNewline, T as packageHasDependency, _ as PRE_COMMIT_CONFIG_FILE, a as installReactDoctorScriptStep, c as spinner, d as HOOK_RELATIVE_PATH, f as HUSKY_HOOKS_PATH, g as OVERCOMMIT_CONFIG_FILE, h as NON_BLOCKING_REACT_DOCTOR_COMMAND, k as resolveGitPath, m as LEGACY_HOOK_RUNNER_RELATIVE_PATH, n as findNearestPackageDirectory, p as LEFTHOOK_CONFIG_FILES, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_FILE_NAME, v as REACT_DOCTOR_COMMAND, w as isRecord, x as VITE_PLUS_HOOKS_PATH } from "./install-doctor-script-Dpa1-Jqf.js";
5
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-KeAcT04B.js";
6
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-BVyYQUvu.js";
7
+ import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-klptBF3K.js";
8
8
  import { execFile } from "node:child_process";
9
9
  import * as path$1 from "node:path";
10
10
  import * as fs$1 from "node:fs";
@@ -1152,5 +1152,5 @@ const runInstallReactDoctor = async (options = {}) => {
1152
1152
  //#endregion
1153
1153
  export { askUpgradeActionVersion as a, recordCiPromptDecision as c, installReactDoctorAgentHooks as i, hasHandledActionUpgrade as l, runInstallReactDoctor as n, askAddToGitHubActions as o, findAgentsWithOutdatedReactDoctorHooks as r, hasHandledCiPrompt as s, getSkillSourceDirectory as t, recordActionUpgradeDecision as u };
1154
1154
 
1155
- //# sourceMappingURL=install-react-doctor-CTsuBvs7.js.map
1156
- //# debugId=637b5d51-14e6-543f-bf46-1556d58f9131
1155
+ //# sourceMappingURL=install-react-doctor-BVAHBKRF.js.map
1156
+ //# debugId=403995fd-83a9-5326-864a-df56d8f61041
@@ -1,8 +1,8 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1dc72684-32e0-501a-b02e-7dfbb85fe459")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7862ba60-a3eb-5699-986b-7ca35f1afecd")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { T as METRIC, t as recordCount } from "./record-metric-Bca1TzEP.js";
5
- import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-BFTG5jEM.js";
4
+ import { T as METRIC, t as recordCount } from "./record-metric-dpdFuBsl.js";
5
+ import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-CSGIdkdg.js";
6
6
  import { a as chalk, i as stripAnsi, n as isFullWidth$1, r as isWide$1 } from "./get-east-asian-width-Cglw13G7.js";
7
7
  import { EventEmitter } from "node:events";
8
8
  import { execFileSync } from "node:child_process";
@@ -25869,5 +25869,5 @@ var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25869
25869
  //#endregion
25870
25870
  export { useExitOnCtrlC as a, Spinner as c, useInput as d, Transform as f, Box as h, import_react as i, useStdout as l, Text as m, registerMountedTuiRenderer as n, terminalSymbols as o, render as p, useStdoutDimensions as r, isPrintableInput as s, require_jsx_runtime as t, useApp as u };
25871
25871
 
25872
- //# sourceMappingURL=jsx-runtime-KCzhtnA2.js.map
25873
- //# debugId=1dc72684-32e0-501a-b02e-7dfbb85fe459
25872
+ //# sourceMappingURL=jsx-runtime--dPSibAO.js.map
25873
+ //# debugId=7862ba60-a3eb-5699-986b-7ca35f1afecd
@@ -1,6 +1,6 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="39bd5097-8273-53c7-a179-61e3b9523977")}catch(e){}}();
3
- import { An as gen, Kt as highlighter, Tn as log, _ as VERSION } from "./record-metric-Bca1TzEP.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cbbd7dd4-1800-5eb9-9ba2-f2f9dbf4939f")}catch(e){}}();
3
+ import { An as gen, Kt as highlighter, Tn as log, _ as VERSION } from "./record-metric-dpdFuBsl.js";
4
4
  //#region src/cli/utils/print-branded-header.ts
5
5
  /**
6
6
  * Single branded line every command prints first when not in JSON
@@ -18,5 +18,5 @@ const printBrandedHeader = gen(function* () {
18
18
  //#endregion
19
19
  export { printBrandedHeader as t };
20
20
 
21
- //# sourceMappingURL=print-branded-header-Btnndqn7.js.map
22
- //# debugId=39bd5097-8273-53c7-a179-61e3b9523977
21
+ //# sourceMappingURL=print-branded-header-wXVcDIak.js.map
22
+ //# debugId=cbbd7dd4-1800-5eb9-9ba2-f2f9dbf4939f
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ea6b7ff6-0d96-50d7-b114-197a98204476")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b7599247-0b42-5c2d-b358-ea54f0e37c2a")}catch(e){}}();
3
3
  import { i as __toESM, n as __exportAll, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
4
  import { n as require_picomatch$2, t as require_semver } from "./semver-DFtnEmN-.js";
5
5
  import { builtinModules } from "node:module";
@@ -42091,7 +42091,7 @@ const resolveEntries = async (config) => {
42091
42091
  onlyFiles: true
42092
42092
  }));
42093
42093
  }
42094
- if (isEligible && (workspacePackage.isDeclaredWorkspace || !workspaceDiscovery.hasRootLevelWorkspacePatterns)) {
42094
+ if (isEligible) {
42095
42095
  const workspacePackageJsonEntries = await extractPackageJsonEntries(resolve(workspacePackage.directory, "package.json"));
42096
42096
  if (workspacePackageJsonEntries.some((entryPath) => existsSync(entryPath))) {
42097
42097
  workspaceEntries.push(...workspacePackageJsonEntries);
@@ -51897,4 +51897,4 @@ startProjectAnalysisWorker();
51897
51897
  export {};
51898
51898
 
51899
51899
  //# sourceMappingURL=project-analysis-worker.js.map
51900
- //# debugId=ea6b7ff6-0d96-50d7-b114-197a98204476
51900
+ //# debugId=b7599247-0b42-5c2d-b358-ea54f0e37c2a