react-doctor 0.9.12-dev.86198f1 → 0.9.12-dev.8c2f03a

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/README.md +1 -1
  2. package/bin/react-doctor.js +1 -9
  3. package/dist/{build-section-divider-DHZDIOiT.js → build-section-divider-DuozMmwU.js} +9 -10
  4. package/dist/{ci-DNs73md0.js → ci-Bwd2LJZC.js} +12 -12
  5. package/dist/cli.js +29 -30
  6. package/dist/{design-DJhMZpV0.js → design-Q4Umr_4T.js} +4 -4
  7. package/dist/{devtools-DPRVRu3S.js → devtools-D8NTVj81.js} +4 -4
  8. package/dist/{exit-gracefully-CYTyitpL.js → exit-gracefully-vUI1H1zC.js} +6 -6
  9. package/dist/index.d.ts +19 -40
  10. package/dist/index.js +54411 -54298
  11. package/dist/{inspect-Di3W9fRk.js → inspect-RxIsB8bi.js} +16 -16
  12. package/dist/{install-BM5_akdY.js → install-CI0nvC_v.js} +8 -8
  13. package/dist/{install-doctor-script-DONC221X.js → install-doctor-script-BAmTZygh.js} +4 -4
  14. package/dist/{install-github-workflow-Cn1g1qCj.js → install-github-workflow-Dg2sosDx.js} +6 -6
  15. package/dist/{install-react-doctor-D-5gMlFh.js → install-react-doctor-CIJcnTik.js} +8 -8
  16. package/dist/{print-branded-header-BqOTK3ep.js → print-branded-header-kwnSGrfR.js} +4 -4
  17. package/dist/project-analysis-worker.d.ts +1 -0
  18. package/dist/project-analysis-worker.js +51900 -0
  19. package/dist/{read-object-file-6XbVf1hj.js → read-object-file-m5uVvcBp.js} +4 -4
  20. package/dist/{record-metric-CsNC4O_Q.js → record-metric-DospZkfP.js} +3018 -6119
  21. package/dist/{report-error-DkUx4ePX.js → report-error-CAp5cil9.js} +5 -5
  22. package/dist/{report-workflow-result-CnxQYm4L.js → report-workflow-result-D0GvvJtT.js} +5 -5
  23. package/dist/{resolve-scope-VYeciHMp.js → resolve-scope-eXawiGEH.js} +6 -6
  24. package/dist/{rules-BHuxNUWe.js → rules-C_xYDSz8.js} +6 -6
  25. package/dist/{run-scan-app-tfWkuR3n.js → run-scan-app-CeNk17wq.js} +132 -121
  26. package/dist/{scan-BB60TMXB.js → scan-DIwsgV6M.js} +8 -8
  27. package/dist/semver-DFtnEmN-.js +3219 -0
  28. package/dist/{should-fail-scan-gate-83kHV2TB.js → should-fail-scan-gate-BWTNIU5h.js} +140 -80
  29. package/dist/{should-skip-prompts-B_13T5y9.js → should-skip-prompts-oK3MwWyB.js} +4 -4
  30. package/dist/{unref-stdin-BS_WPjIC.js → unref-stdin-BGZVK4sJ.js} +6 -12
  31. package/dist/{version-DEV3zEd5.js → version-9-2T2YQf.js} +4 -4
  32. package/dist/{why-D0IleQEO.js → why-BOiuB_qy.js} +4 -4
  33. package/package.json +4 -8
  34. package/dist/chunk-q7NCDQ7-.js +0 -28
  35. package/dist/lsp.js +0 -81145
@@ -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]="31d69c78-c1b0-59e1-a7f4-c0833d444d73")}catch(e){}}();
3
- import { J as CANONICAL_DISCORD_URL, M as SENTRY_FLUSH_TIMEOUT_MS, Un as error, Xn as gen, Xt as formatErrorChain, Y as CANONICAL_GITHUB_URL, Zt as formatReactDoctorError, ar as runSync, cn as highlighter, g as VERSION, gn as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount, un as isErrnoException, w as METRIC } from "./record-metric-CsNC4O_Q.js";
4
- import { c as isExpectedUserError, i as recordRunTraceId, l as formatEnvironmentError, n as getActiveRunTrace, s as shutdownTelemetry, u as isEnvironmentError } from "./unref-stdin-BS_WPjIC.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]="bb274751-db2b-5c4e-8c87-e0dd2aba2a33")}catch(e){}}();
3
+ import { $n as CANONICAL_GITHUB_URL, Ft as formatReactDoctorError, Gt as highlighter, M as SENTRY_FLUSH_TIMEOUT_MS, Pt as formatErrorChain, Qn as CANONICAL_DISCORD_URL, Rn as runSync, Sn as error, Yt as isReactDoctorError, g as VERSION, kn as gen, l as getRunId, o as buildSentryScope, t as recordCount, w as METRIC, yr as isErrnoException } from "./record-metric-DospZkfP.js";
4
+ import { c as isExpectedUserError, i as recordRunTraceId, l as formatEnvironmentError, n as getActiveRunTrace, s as shutdownTelemetry, u as isEnvironmentError } from "./unref-stdin-BGZVK4sJ.js";
5
5
  import * as Sentry from "@sentry/node";
6
6
  //#region src/cli/utils/handle-error.ts
7
7
  const OTLP_ENDPOINT_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_ENDPOINT";
@@ -160,5 +160,5 @@ const reportErrorToSentry = async (error) => {
160
160
  //#endregion
161
161
  export { handleError as n, handleUserError as r, reportErrorToSentry as t };
162
162
 
163
- //# sourceMappingURL=report-error-DkUx4ePX.js.map
164
- //# debugId=31d69c78-c1b0-59e1-a7f4-c0833d444d73
163
+ //# sourceMappingURL=report-error-CAp5cil9.js.map
164
+ //# debugId=bb274751-db2b-5c4e-8c87-e0dd2aba2a33
@@ -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]="b96f487f-1e95-5995-90ac-b329b6cadbbb")}catch(e){}}();
3
- import { D as REACT_DOCTOR_CONFIG_PROJECT_NAME, t as recordCount, w as METRIC } from "./record-metric-CsNC4O_Q.js";
4
- import { u as isCommandAvailable } from "./install-github-workflow-Cn1g1qCj.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]="bcde98e7-6cfc-5ebf-b731-f75373402609")}catch(e){}}();
3
+ import { D as REACT_DOCTOR_CONFIG_PROJECT_NAME, t as recordCount, w as METRIC } from "./record-metric-DospZkfP.js";
4
+ import { u as isCommandAvailable } from "./install-github-workflow-Dg2sosDx.js";
5
5
  import { spawn } from "node:child_process";
6
6
  import * as path$1 from "node:path";
7
7
  import process$1 from "node:process";
@@ -275,5 +275,5 @@ const reportWorkflowResult = (workflowSpinner, result, projectRoot) => {
275
275
  //#endregion
276
276
  export { recordGate as a, ACTION_UPGRADE_EVENT as c, INSTALL_AGENTS_PREFERENCE_ID as d, ONBOARDING_EVENT as f, detectAvailableAgents as h, readPreference as i, CI_PITCH_EVENT as l, computeDefaultSelectedAgents as m, openUrl as n, runMigrations as o, SETUP_HINT_EVENT as p, isGatePending as r, writePreference as s, reportWorkflowResult as t, HANDOFF_TARGET_PREFERENCE_ID as u };
277
277
 
278
- //# sourceMappingURL=report-workflow-result-CnxQYm4L.js.map
279
- //# debugId=b96f487f-1e95-5995-90ac-b329b6cadbbb
278
+ //# sourceMappingURL=report-workflow-result-D0GvvJtT.js.map
279
+ //# debugId=bcde98e7-6cfc-5ebf-b731-f75373402609
@@ -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]="417987a6-3f6c-548f-8e23-6ed450cb6b21")}catch(e){}}();
3
- import { Jt as filterSourceFiles, Rn as toCanonicalPath, pn as isPathInsideDirectory } from "./record-metric-CsNC4O_Q.js";
4
- import { L as cliLogger } from "./install-doctor-script-DONC221X.js";
5
- import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-Cn1g1qCj.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]="037a8a3c-8afa-5a84-86e4-8b751b0095d7")}catch(e){}}();
3
+ import { Cr as toCanonicalPath, Mt as filterSourceFiles, qt as isPathInsideDirectory } from "./record-metric-DospZkfP.js";
4
+ import { L as cliLogger } from "./install-doctor-script-BAmTZygh.js";
5
+ import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-Dg2sosDx.js";
6
6
  import * as path$1 from "node:path";
7
7
  //#region src/cli/utils/path-format.ts
8
8
  const toForwardSlashes = (filePath) => filePath.replaceAll("\\", "/");
@@ -335,5 +335,5 @@ const finalizeScope = async ({ requested, diffInfo, skipPrompts, isQuiet }) => {
335
335
  //#endregion
336
336
  export { isValidBlockingLevel as a, openWorkflowPullRequest as c, warnDeprecatedDiff as i, stageWorkflowFile as l, isScopeValue as n, pickBlockingLevel as o, resolveScope as r, resolveBlockingLevel as s, finalizeScope as t, toForwardSlashes as u };
337
337
 
338
- //# sourceMappingURL=resolve-scope-VYeciHMp.js.map
339
- //# debugId=417987a6-3f6c-548f-8e23-6ed450cb6b21
338
+ //# sourceMappingURL=resolve-scope-eXawiGEH.js.map
339
+ //# debugId=037a8a3c-8afa-5a84-86e4-8b751b0095d7
@@ -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]="9a036fa4-c26e-5403-bdb3-a6a6b97696ba")}catch(e){}}();
3
- import { Bn as validateConfigTypes, Pt as buildRuleDocsUrl, Q as COMPILER_CLEANUP_RULE_KEYS, Rt as clearConfigCache, Sn as loadConfigWithSource, Z as COMPILER_CLEANUP_BUCKET, _n as isSameRuleKey, cn as highlighter, mn as isPlainObject, rn as getEquivalentRuleKeys, t as recordCount, w as METRIC } from "./record-metric-CsNC4O_Q.js";
4
- import { L as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-DONC221X.js";
5
- import { t as readObjectFile } from "./read-object-file-6XbVf1hj.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]="0c7a6e34-f5d9-5b95-906c-ddadbccdbf4b")}catch(e){}}();
3
+ import { Bt as getEquivalentRuleKeys, Gt as highlighter, Xt as isSameRuleKey, ht as buildRuleDocsUrl, nn as loadConfigWithSource, nr as COMPILER_CLEANUP_RULE_KEYS, t as recordCount, tr as COMPILER_CLEANUP_BUCKET, w as METRIC, xr as isPlainObject, xt as clearConfigCache, yn as validateConfigTypes } from "./record-metric-DospZkfP.js";
4
+ import { L as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-BAmTZygh.js";
5
+ import { t as readObjectFile } from "./read-object-file-m5uVvcBp.js";
6
6
  import * as path$1 from "node:path";
7
7
  import * as fs$1 from "node:fs";
8
8
  import { REACT_DOCTOR_RULES } from "oxlint-plugin-react-doctor/core";
@@ -577,5 +577,5 @@ const rulesUnignoreTagAction = async (tag, options) => {
577
577
  //#endregion
578
578
  export { rulesCategoryAction, rulesDisableAction, rulesEnableAction, rulesExplainAction, rulesIgnoreTagAction, rulesListAction, rulesSetAction, rulesUnignoreTagAction };
579
579
 
580
- //# sourceMappingURL=rules-BHuxNUWe.js.map
581
- //# debugId=9a036fa4-c26e-5403-bdb3-a6a6b97696ba
580
+ //# sourceMappingURL=rules-C_xYDSz8.js.map
581
+ //# debugId=0c7a6e34-f5d9-5b95-906c-ddadbccdbf4b
@@ -1,13 +1,13 @@
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]="aa606180-36d7-53c3-91e7-3039202e76a4")}catch(e){}}();
3
- import { n as __require, r as __toESM, t as __commonJSMin } from "./chunk-q7NCDQ7-.js";
4
- import { $t as getCategoryImpact, B as isGitHookEnvironment, Cn as mapWithConcurrency, Dn as remainingDeadlineBudgetMs, I as TUI_REPORT_COMPACT_MAX_ROWS, It as calculateScore, L as TUI_REPORT_DETAIL_WIDTH_FRACTION, Mn as resolveScanTarget, Pt as buildRuleDocsUrl, Qt as getBaselineDiffPlan, S as CI_TRUST_COMPANIES, St as Reporter, Vn as yieldToEventLoop, W as isCiEnvironment, an as hasPublishedFixRecipe, bt as Progress, cn as highlighter, cr as void_, en as getChangedLineRanges, fr as succeed, ir as runPromise, n as recordDistribution, nn as getDiffInfo, or as sync, ot as GITHUB_ACTIONS_SETUP_URL, pn as isPathInsideDirectory, t as recordCount, tt as DIAGNOSTIC_CATEGORY_BUCKETS, w as METRIC } from "./record-metric-CsNC4O_Q.js";
5
- import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-CYTyitpL.js";
6
- import { L as cliLogger, d as stripAnsi, f as isUnicodeSupported, l as isFullWidth$1, n as findNearestPackageDirectory, p as chalk, u as isWide$1 } from "./install-doctor-script-DONC221X.js";
7
- import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-Cn1g1qCj.js";
8
- import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-VYeciHMp.js";
9
- import { A as resolveMergeBaseRef, B as buildEmptyReportMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printDiagnosticsDump, G as formatLearnMoreLine, H as buildRulePriorityMap, I as formatDiagnosticSite, L as hasIncompleteScoreAnalysis, M as pluralize, N as formatElapsedTime, O as createInvocationInspect, P as printFooter, R as filterDiagnosticsByCategories, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, U as buildSortedRuleGroups, V as hasLintHardFailure, W as formatFixRecipeLine, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, l as buildCodeFrame, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, s as discoverWorkspacePackages, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as buildNoScoreMessage } from "./should-fail-scan-gate-83kHV2TB.js";
10
- import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-CnxQYm4L.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]="50145362-1993-5a7c-9cd2-3402c0d2bb68")}catch(e){}}();
3
+ import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
+ import { B as isGitHookEnvironment, Gn as succeed, Gt as highlighter, Ht as hasPublishedFixRecipe, I as TUI_REPORT_COMPACT_MAX_ROWS, It as getBaselineDiffPlan, L as TUI_REPORT_DETAIL_WIDTH_FRACTION, Ln as runPromise, Lt as getChangedLineRanges, S as CI_TRUST_COMPANIES, Vn as void_, W as isCiEnvironment, _r as getCategoryImpact, bn as yieldToEventLoop, dn as resolveScanTarget, ht as buildRuleDocsUrl, ir as DIAGNOSTIC_CATEGORY_BUCKETS, it as Progress, n as recordDistribution, on as remainingDeadlineBudgetMs, ot as Reporter, qt as isPathInsideDirectory, rn as mapWithConcurrency, sr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, vt as calculateScore, w as METRIC, zn as sync, zt as getDiffInfo } from "./record-metric-DospZkfP.js";
5
+ import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-vUI1H1zC.js";
6
+ import { L as cliLogger, d as stripAnsi, f as isUnicodeSupported, l as isFullWidth$1, n as findNearestPackageDirectory, p as chalk, u as isWide$1 } from "./install-doctor-script-BAmTZygh.js";
7
+ import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-Dg2sosDx.js";
8
+ import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-eXawiGEH.js";
9
+ import { A as resolveMergeBaseRef, B as buildNoScoreMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printFooter, G as formatFixRecipeLine, H as hasLintHardFailure, I as printDiagnosticsDump, K as formatLearnMoreLine, L as formatDiagnosticSite, M as pluralize, N as formatSkippedCheckLabel, O as createInvocationInspect, P as formatElapsedTime, R as hasIncompleteScoreAnalysis, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, U as buildRulePriorityMap, V as buildEmptyReportMessage, W as buildSortedRuleGroups, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, l as buildCodeFrame, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, s as discoverWorkspacePackages, 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-BWTNIU5h.js";
10
+ import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-D0GvvJtT.js";
11
11
  import { EventEmitter } from "node:events";
12
12
  import { execFileSync } from "node:child_process";
13
13
  import path from "node:path";
@@ -20447,7 +20447,7 @@ if (process$1.env["DEV"] === "true") {
20447
20447
  import.meta.resolve("react-devtools-core");
20448
20448
  isDevtoolsInstalled = true;
20449
20449
  } catch {}
20450
- if (isDevtoolsInstalled) await import("./devtools-DPRVRu3S.js");
20450
+ if (isDevtoolsInstalled) await import("./devtools-D8NTVj81.js");
20451
20451
  }
20452
20452
  const diff = (before, after) => {
20453
20453
  if (before === after) return;
@@ -25529,10 +25529,40 @@ const HandoffCiRecommendation = ({ onAddToCi, onContinue, onQuit }) => {
25529
25529
  };
25530
25530
  //#endregion
25531
25531
  //#region src/cli/ink/components/report-landing.tsx
25532
+ const ReportStatus = ({ issueCount, emptyStateMessage, lintFailureReason, skippedChecks, incompleteMessage }) => {
25533
+ const skippedCheckLabel = skippedChecks?.flatMap((skippedCheck) => skippedCheck === "lint" && lintFailureReason ? [] : [formatSkippedCheckLabel(skippedCheck)]).join(" and ");
25534
+ const hasIncompleteResult = Boolean(incompleteMessage || lintFailureReason || skippedCheckLabel);
25535
+ if (!hasIncompleteResult && issueCount > 0) return null;
25536
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
25537
+ flexDirection: "column",
25538
+ marginTop: 1,
25539
+ children: [
25540
+ incompleteMessage ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25541
+ color: "yellow",
25542
+ children: ["⚠ ", incompleteMessage]
25543
+ }) : null,
25544
+ lintFailureReason ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25545
+ color: "yellow",
25546
+ children: ["⚠ Lint did not run: ", lintFailureReason]
25547
+ }) : null,
25548
+ skippedCheckLabel ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25549
+ color: "yellow",
25550
+ children: [
25551
+ "⚠ ",
25552
+ issueCount === 0 ? "No issues detected, but " : "",
25553
+ skippedCheckLabel,
25554
+ " checks failed — results are incomplete."
25555
+ ]
25556
+ }) : null,
25557
+ issueCount === 0 && !hasIncompleteResult ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25558
+ color: "green",
25559
+ children: ["✔ ", emptyStateMessage ?? "No issues found. Nice work."]
25560
+ }) : null
25561
+ ]
25562
+ });
25563
+ };
25532
25564
  const ReportLanding = ({ header, phase, issueCount, emptyStateMessage, lintFailureReason, skippedChecks, incompleteMessage, actions, selectedIndex, onSelectionChange, onQuit }) => {
25533
25565
  const showScore = phase === "actions" || phase === "score";
25534
- const skippedCheckLabel = skippedChecks?.filter((skippedCheck) => skippedCheck !== "lint" || !lintFailureReason).join(" and ");
25535
- const hasIncompleteResult = Boolean(incompleteMessage || lintFailureReason || skippedCheckLabel);
25536
25566
  useInput((input) => {
25537
25567
  if (input === "q") onQuit();
25538
25568
  }, { isActive: phase !== "actions" });
@@ -25540,33 +25570,13 @@ const ReportLanding = ({ header, phase, issueCount, emptyStateMessage, lintFailu
25540
25570
  flexDirection: "column",
25541
25571
  children: [
25542
25572
  showScore ? header : null,
25543
- hasIncompleteResult || issueCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
25544
- flexDirection: "column",
25545
- marginTop: 1,
25546
- children: [
25547
- incompleteMessage ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25548
- color: "yellow",
25549
- children: ["⚠ ", incompleteMessage]
25550
- }) : null,
25551
- lintFailureReason ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25552
- color: "yellow",
25553
- children: ["⚠ Lint did not run: ", lintFailureReason]
25554
- }) : null,
25555
- skippedCheckLabel ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25556
- color: "yellow",
25557
- children: [
25558
- "⚠ ",
25559
- issueCount === 0 ? "No issues detected, but " : "",
25560
- skippedCheckLabel,
25561
- " checks failed — results are incomplete."
25562
- ]
25563
- }) : null,
25564
- issueCount === 0 && !hasIncompleteResult ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
25565
- color: "green",
25566
- children: ["✔ ", emptyStateMessage ?? "No issues found. Nice work."]
25567
- }) : null
25568
- ]
25569
- }) : null,
25573
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReportStatus, {
25574
+ issueCount,
25575
+ emptyStateMessage,
25576
+ lintFailureReason,
25577
+ skippedChecks,
25578
+ incompleteMessage
25579
+ }),
25570
25580
  phase === "actions" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ActionMenu, {
25571
25581
  actions,
25572
25582
  selectedIndex,
@@ -25975,87 +25985,88 @@ const Report = ({ report, onExit, onQuit = onExit, launchableAgents = EMPTY_LAUN
25975
25985
  selectedIndex: reportReveal.streamSelectedIndex,
25976
25986
  width: reportLayout.width
25977
25987
  }) : null;
25978
- let activeScreenContent;
25979
- if (activeReportScreen === "ci") activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CiSetup, {
25980
- feedback: ciSetupFeedback,
25981
- onConfirm: () => {
25982
- onAddToCi?.();
25983
- onExit();
25984
- },
25985
- onLearnMore: () => {
25986
- recordReportAction("ci-learn-more");
25987
- openUrl(GITHUB_ACTIONS_SETUP_URL).then((didOpen) => {
25988
- setCiSetupFeedback({
25989
- didSucceed: didOpen,
25990
- message: didOpen ? "✓ Opened the GitHub Actions guide in your browser" : `Couldn't open a browser. Visit ${GITHUB_ACTIONS_SETUP_URL}`
25988
+ const screenContent = {
25989
+ ci: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CiSetup, {
25990
+ feedback: ciSetupFeedback,
25991
+ onConfirm: () => {
25992
+ onAddToCi?.();
25993
+ onExit();
25994
+ },
25995
+ onLearnMore: () => {
25996
+ recordReportAction("ci-learn-more");
25997
+ openUrl(GITHUB_ACTIONS_SETUP_URL).then((didOpen) => {
25998
+ setCiSetupFeedback({
25999
+ didSucceed: didOpen,
26000
+ message: didOpen ? "✓ Opened the GitHub Actions guide in your browser" : `Couldn't open a browser. Visit ${GITHUB_ACTIONS_SETUP_URL}`
26001
+ });
25991
26002
  });
25992
- });
25993
- },
25994
- onBack: () => {
25995
- setCiSetupFeedback(void 0);
25996
- setActiveReportScreen("landing");
25997
- },
25998
- onQuit
25999
- });
26000
- else if (activeReportScreen === "handoff") activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentHandoff, {
26001
- agents: launchableAgents,
26002
- onSelect: completeHandoff,
26003
- onCopyPrompt: () => completeHandoff("clipboard"),
26004
- onBack: () => setActiveReportScreen("landing"),
26005
- onQuit
26006
- });
26007
- else if (activeReportScreen === "handoff-ci") activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HandoffCiRecommendation, {
26008
- onAddToCi: () => {
26009
- onAddToCi?.();
26010
- setIsCiSetupQueued(true);
26011
- setActiveReportScreen("handoff");
26012
- },
26013
- onContinue: () => setActiveReportScreen("handoff"),
26014
- onQuit
26015
- });
26016
- else if (activeReportScreen === "landing") activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReportLanding, {
26017
- header: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26018
- variant: "landing",
26019
- ...scoreHeaderProps
26003
+ },
26004
+ onBack: () => {
26005
+ setCiSetupFeedback(void 0);
26006
+ setActiveReportScreen("landing");
26007
+ },
26008
+ onQuit
26020
26009
  }),
26021
- phase: reportReveal.phase,
26022
- issueCount: report.diagnostics.length,
26023
- emptyStateMessage: report.emptyStateMessage,
26024
- lintFailureReason: report.lintFailureReason,
26025
- skippedChecks: report.skippedChecks,
26026
- incompleteMessage: report.incompleteMessage,
26027
- actions: landingActions,
26028
- selectedIndex: resolvedLandingSelectedIndex,
26029
- onSelectionChange: setLandingSelectedIndex,
26030
- onQuit
26031
- });
26032
- else activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DiagnosticList, {
26033
- header: reportLayout.showsViewerScoreHeader ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26034
- variant: "viewer",
26035
- ...scoreHeaderProps
26036
- }) : null,
26037
- rows: diagnosticRows,
26038
- entries: diagnosticListEntries,
26039
- width: reportLayout.width,
26040
- listColumnWidth: reportLayout.listColumnWidth,
26041
- detailColumnWidth: reportLayout.detailColumnWidth,
26042
- listHeight: reportLayout.listHeight,
26043
- detailHeight: reportLayout.detailHeight,
26044
- layout: reportLayout.layout,
26045
- rootDirectory: report.rootDirectory,
26046
- projectName: report.projectName,
26047
- projectCount,
26048
- initialSelectedRowIndex: resolvedViewerSelectedRowIndex,
26049
- readRuleKeys: viewerReadRuleKeys,
26050
- onSelectedRowIndexChange: handleViewerSelectionChange,
26051
- onQuit,
26052
- onBack: () => {
26053
- setLandingSelectedIndex(Math.max(0, postReviewLandingActionIndex));
26054
- setActiveReportScreen("landing");
26055
- },
26056
- exitHint: `esc back · ${exitHint}`
26057
- });
26058
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [activeReportScreen === "landing" && shouldShowIssueStream ? issueStream : null, activeScreenContent] });
26010
+ handoff: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentHandoff, {
26011
+ agents: launchableAgents,
26012
+ onSelect: completeHandoff,
26013
+ onCopyPrompt: () => completeHandoff("clipboard"),
26014
+ onBack: () => setActiveReportScreen("landing"),
26015
+ onQuit
26016
+ }),
26017
+ "handoff-ci": /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HandoffCiRecommendation, {
26018
+ onAddToCi: () => {
26019
+ onAddToCi?.();
26020
+ setIsCiSetupQueued(true);
26021
+ setActiveReportScreen("handoff");
26022
+ },
26023
+ onContinue: () => setActiveReportScreen("handoff"),
26024
+ onQuit
26025
+ }),
26026
+ landing: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReportLanding, {
26027
+ header: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26028
+ variant: "landing",
26029
+ ...scoreHeaderProps
26030
+ }),
26031
+ phase: reportReveal.phase,
26032
+ issueCount: report.diagnostics.length,
26033
+ emptyStateMessage: report.emptyStateMessage,
26034
+ lintFailureReason: report.lintFailureReason,
26035
+ skippedChecks: report.skippedChecks,
26036
+ incompleteMessage: report.incompleteMessage,
26037
+ actions: landingActions,
26038
+ selectedIndex: resolvedLandingSelectedIndex,
26039
+ onSelectionChange: setLandingSelectedIndex,
26040
+ onQuit
26041
+ }),
26042
+ issues: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DiagnosticList, {
26043
+ header: reportLayout.showsViewerScoreHeader ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26044
+ variant: "viewer",
26045
+ ...scoreHeaderProps
26046
+ }) : null,
26047
+ rows: diagnosticRows,
26048
+ entries: diagnosticListEntries,
26049
+ width: reportLayout.width,
26050
+ listColumnWidth: reportLayout.listColumnWidth,
26051
+ detailColumnWidth: reportLayout.detailColumnWidth,
26052
+ listHeight: reportLayout.listHeight,
26053
+ detailHeight: reportLayout.detailHeight,
26054
+ layout: reportLayout.layout,
26055
+ rootDirectory: report.rootDirectory,
26056
+ projectName: report.projectName,
26057
+ projectCount,
26058
+ initialSelectedRowIndex: resolvedViewerSelectedRowIndex,
26059
+ readRuleKeys: viewerReadRuleKeys,
26060
+ onSelectedRowIndexChange: handleViewerSelectionChange,
26061
+ onQuit,
26062
+ onBack: () => {
26063
+ setLandingSelectedIndex(Math.max(0, postReviewLandingActionIndex));
26064
+ setActiveReportScreen("landing");
26065
+ },
26066
+ exitHint: `esc back · ${exitHint}`
26067
+ })
26068
+ };
26069
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [activeReportScreen === "landing" && shouldShowIssueStream ? issueStream : null, screenContent[activeReportScreen]] });
26059
26070
  };
26060
26071
  //#endregion
26061
26072
  //#region ../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json
@@ -28183,7 +28194,7 @@ const runMultiProjectScan = async (rootScanTarget, directories, input, scopePlan
28183
28194
  projectDirectories: discoveredProjectScans.map((projectScan) => projectScan.directory),
28184
28195
  isRootDeadCodeEnabled: input.options?.deadCode ?? rootProjectScan?.config?.deadCode ?? true
28185
28196
  });
28186
- if (workspaceDeadCodeOwner !== null) recordCount(METRIC.scanWorkspaceDeadCodeShared, 1, { projectCount: discoveredProjectScans.length });
28197
+ if (workspaceDeadCodeOwner !== null) recordCount(METRIC.scanWorkspaceMaintainabilityShared, 1, { projectCount: discoveredProjectScans.length });
28187
28198
  return runMountedScan(rootDirectory, resolveScanPresentation(input, projectScans.map(({ projectScan }) => projectScan)), blockingLevel, async (context) => {
28188
28199
  const startTime = performance$1.now();
28189
28200
  let finishedCount = 0;
@@ -28347,5 +28358,5 @@ const runScanApp = async (input) => {
28347
28358
  //#endregion
28348
28359
  export { runScanApp };
28349
28360
 
28350
- //# sourceMappingURL=run-scan-app-tfWkuR3n.js.map
28351
- //# debugId=aa606180-36d7-53c3-91e7-3039202e76a4
28361
+ //# sourceMappingURL=run-scan-app-CeNk17wq.js.map
28362
+ //# debugId=50145362-1993-5a7c-9cd2-3402c0d2bb68
@@ -1,9 +1,9 @@
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]="fdd4c73f-d9c1-55d9-9ab2-755cebbc4e3a")}catch(e){}}();
3
- import { Mn as resolveScanTarget, t as recordCount, w as METRIC, z as isNonInteractiveEnvironment } from "./record-metric-CsNC4O_Q.js";
4
- import { i as warnDeprecatedDiff } from "./resolve-scope-VYeciHMp.js";
5
- import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-83kHV2TB.js";
6
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-Di3W9fRk.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]="7fe192ab-c44e-59a0-9534-f1f0933d6d80")}catch(e){}}();
3
+ import { dn as resolveScanTarget, t as recordCount, w as METRIC, z as isNonInteractiveEnvironment } from "./record-metric-DospZkfP.js";
4
+ import { i as warnDeprecatedDiff } from "./resolve-scope-eXawiGEH.js";
5
+ import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-BWTNIU5h.js";
6
+ import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-RxIsB8bi.js";
7
7
  import path from "node:path";
8
8
  //#region src/cli/utils/should-use-tui.ts
9
9
  const shouldUseTui = (input) => {
@@ -34,7 +34,7 @@ const runScanCommand = async (input) => {
34
34
  warnDeprecatedFailOn(input.flags, scanTarget.userConfig);
35
35
  warnDeprecatedDiff(input.flags, scanTarget.userConfig);
36
36
  recordCount(METRIC.cliInvoked, 1, { command: input.invocationCommand });
37
- const { runScanApp } = await import("./run-scan-app-tfWkuR3n.js");
37
+ const { runScanApp } = await import("./run-scan-app-CeNk17wq.js");
38
38
  const { shouldFail } = await runScanApp({
39
39
  directory: input.directory,
40
40
  scanTarget,
@@ -49,5 +49,5 @@ const runScanCommand = async (input) => {
49
49
  //#endregion
50
50
  export { runScanCommand };
51
51
 
52
- //# sourceMappingURL=scan-BB60TMXB.js.map
53
- //# debugId=fdd4c73f-d9c1-55d9-9ab2-755cebbc4e3a
52
+ //# sourceMappingURL=scan-DIwsgV6M.js.map
53
+ //# debugId=7fe192ab-c44e-59a0-9534-f1f0933d6d80