react-doctor 0.9.12-dev.a2b460d → 0.9.12-dev.ffc2d14

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-Vz879zXD.js → build-section-divider-BuOtLrzK.js} +9 -10
  4. package/dist/{ci-BVYrYekU.js → ci-DVVsf25h.js} +12 -12
  5. package/dist/cli.js +30 -31
  6. package/dist/{design-D-TYN_tr.js → design-Y1pcA2uj.js} +4 -4
  7. package/dist/{devtools-DPRVRu3S.js → devtools-D8NTVj81.js} +4 -4
  8. package/dist/{exit-gracefully-Cjv5kC_l.js → exit-gracefully-DnXGONjj.js} +6 -6
  9. package/dist/index.d.ts +21 -42
  10. package/dist/index.js +54685 -54554
  11. package/dist/{inspect-kkvDHKDE.js → inspect-g3_lzs3l.js} +21 -20
  12. package/dist/{install-ZeYvD9Rw.js → install-02Lq6wKC.js} +8 -8
  13. package/dist/{install-doctor-script-D58Hr1dM.js → install-doctor-script-DmEWQpVJ.js} +4 -4
  14. package/dist/{install-github-workflow-DkMicv8E.js → install-github-workflow-Dx6Pl9Wl.js} +6 -6
  15. package/dist/{install-react-doctor-CjgE52al.js → install-react-doctor-CMCXgenA.js} +47 -45
  16. package/dist/{print-branded-header-D4QYSu-h.js → print-branded-header-kbvWYuGv.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-OFRlvCAL.js → read-object-file-Cwhr9OIi.js} +4 -4
  20. package/dist/{record-metric-CMe2d1Xv.js → record-metric-CFfsgcVs.js} +2602 -5677
  21. package/dist/{report-error-1l7v6_dE.js → report-error-MGKyeIns.js} +5 -5
  22. package/dist/{report-workflow-result-EagkH_v9.js → report-workflow-result-DGg9xopH.js} +5 -5
  23. package/dist/{resolve-scope-CMNrOdDf.js → resolve-scope-CXS-5jLR.js} +6 -6
  24. package/dist/{rules-CzR1qUru.js → rules-CThlosPx.js} +6 -6
  25. package/dist/{run-scan-app-Ciq22jzp.js → run-scan-app-CDDu7P32.js} +137 -121
  26. package/dist/{scan-D4m5r4Rs.js → scan-4I1mvxBO.js} +8 -8
  27. package/dist/semver-DFtnEmN-.js +3219 -0
  28. package/dist/{should-fail-scan-gate-lMTlhEhE.js → should-fail-scan-gate-C0Bo5Gqy.js} +151 -83
  29. package/dist/{should-skip-prompts-mXKZBNCz.js → should-skip-prompts-BqrtVX4G.js} +4 -4
  30. package/dist/{unref-stdin-Cxhw67r6.js → unref-stdin-BxyvqsOy.js} +6 -12
  31. package/dist/{version-CnvVY2VD.js → version-S-8vvWFi.js} +4 -4
  32. package/dist/{why-BktDEhhH.js → why-DXfx0oL9.js} +4 -4
  33. package/package.json +5 -9
  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]="50420dc6-650c-5930-ad21-75a2e964489e")}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-CMe2d1Xv.js";
4
- import { c as isExpectedUserError, i as recordRunTraceId, l as formatEnvironmentError, n as getActiveRunTrace, s as shutdownTelemetry, u as isEnvironmentError } from "./unref-stdin-Cxhw67r6.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]="1b9ff339-857f-5843-b289-d962b4feef13")}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-CFfsgcVs.js";
4
+ import { c as isExpectedUserError, i as recordRunTraceId, l as formatEnvironmentError, n as getActiveRunTrace, s as shutdownTelemetry, u as isEnvironmentError } from "./unref-stdin-BxyvqsOy.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-1l7v6_dE.js.map
164
- //# debugId=50420dc6-650c-5930-ad21-75a2e964489e
163
+ //# sourceMappingURL=report-error-MGKyeIns.js.map
164
+ //# debugId=1b9ff339-857f-5843-b289-d962b4feef13
@@ -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]="58b948e5-fd1e-5347-af35-6bb38cf4316b")}catch(e){}}();
3
- import { D as REACT_DOCTOR_CONFIG_PROJECT_NAME, t as recordCount, w as METRIC } from "./record-metric-CMe2d1Xv.js";
4
- import { u as isCommandAvailable } from "./install-github-workflow-DkMicv8E.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]="93634128-b688-5531-97d6-56fe2d60c08d")}catch(e){}}();
3
+ import { D as REACT_DOCTOR_CONFIG_PROJECT_NAME, t as recordCount, w as METRIC } from "./record-metric-CFfsgcVs.js";
4
+ import { u as isCommandAvailable } from "./install-github-workflow-Dx6Pl9Wl.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-EagkH_v9.js.map
279
- //# debugId=58b948e5-fd1e-5347-af35-6bb38cf4316b
278
+ //# sourceMappingURL=report-workflow-result-DGg9xopH.js.map
279
+ //# debugId=93634128-b688-5531-97d6-56fe2d60c08d
@@ -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]="b23a6187-c78a-54c4-8c35-931d06f1c65d")}catch(e){}}();
3
- import { Jt as filterSourceFiles, Rn as toCanonicalPath, pn as isPathInsideDirectory } from "./record-metric-CMe2d1Xv.js";
4
- import { L as cliLogger } from "./install-doctor-script-D58Hr1dM.js";
5
- import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-DkMicv8E.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]="631d78af-079f-54d3-abf4-6e0edac6802a")}catch(e){}}();
3
+ import { Cr as toCanonicalPath, Mt as filterSourceFiles, qt as isPathInsideDirectory } from "./record-metric-CFfsgcVs.js";
4
+ import { L as cliLogger } from "./install-doctor-script-DmEWQpVJ.js";
5
+ import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-Dx6Pl9Wl.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-CMNrOdDf.js.map
339
- //# debugId=b23a6187-c78a-54c4-8c35-931d06f1c65d
338
+ //# sourceMappingURL=resolve-scope-CXS-5jLR.js.map
339
+ //# debugId=631d78af-079f-54d3-abf4-6e0edac6802a
@@ -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]="dfaccccc-0f72-5a95-877d-7d307db09b22")}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-CMe2d1Xv.js";
4
- import { L as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-D58Hr1dM.js";
5
- import { t as readObjectFile } from "./read-object-file-OFRlvCAL.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]="b9d92052-3eee-5cd4-abb0-38eca9a6655a")}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-CFfsgcVs.js";
4
+ import { L as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-DmEWQpVJ.js";
5
+ import { t as readObjectFile } from "./read-object-file-Cwhr9OIi.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-CzR1qUru.js.map
581
- //# debugId=dfaccccc-0f72-5a95-877d-7d307db09b22
580
+ //# sourceMappingURL=rules-CThlosPx.js.map
581
+ //# debugId=b9d92052-3eee-5cd4-abb0-38eca9a6655a
@@ -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]="a056bffa-2376-545e-9d50-403fe3a33c1a")}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-CMe2d1Xv.js";
5
- import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-Cjv5kC_l.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-D58Hr1dM.js";
7
- import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-DkMicv8E.js";
8
- import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-CMNrOdDf.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-lMTlhEhE.js";
10
- import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-EagkH_v9.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]="b88a5d25-b8e7-56ca-b67f-96a6090df2dc")}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-CFfsgcVs.js";
5
+ import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-DnXGONjj.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-DmEWQpVJ.js";
7
+ import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-Dx6Pl9Wl.js";
8
+ import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-CXS-5jLR.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-C0Bo5Gqy.js";
10
+ import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-DGg9xopH.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,
@@ -25782,10 +25792,14 @@ const ScoreHeader = ({ variant, score, projectedScore, projectName, issueCount,
25782
25792
  const [eyes, mouth] = doctorFace(score.score);
25783
25793
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
25784
25794
  flexDirection: "column",
25795
+ width: availableWidth,
25785
25796
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
25786
25797
  paddingLeft: 2,
25798
+ width: availableWidth,
25787
25799
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
25788
25800
  flexDirection: "column",
25801
+ flexShrink: 0,
25802
+ width: 7,
25789
25803
  marginRight: 2,
25790
25804
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
25791
25805
  color: scoreColor,
@@ -25793,6 +25807,7 @@ const ScoreHeader = ({ variant, score, projectedScore, projectName, issueCount,
25793
25807
  })
25794
25808
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
25795
25809
  flexDirection: "column",
25810
+ width: availableWidth - 11,
25796
25811
  children: [
25797
25812
  scoreSummaryLine,
25798
25813
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
@@ -25975,87 +25990,88 @@ const Report = ({ report, onExit, onQuit = onExit, launchableAgents = EMPTY_LAUN
25975
25990
  selectedIndex: reportReveal.streamSelectedIndex,
25976
25991
  width: reportLayout.width
25977
25992
  }) : 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}`
25993
+ const screenContent = {
25994
+ ci: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CiSetup, {
25995
+ feedback: ciSetupFeedback,
25996
+ onConfirm: () => {
25997
+ onAddToCi?.();
25998
+ onExit();
25999
+ },
26000
+ onLearnMore: () => {
26001
+ recordReportAction("ci-learn-more");
26002
+ openUrl(GITHUB_ACTIONS_SETUP_URL).then((didOpen) => {
26003
+ setCiSetupFeedback({
26004
+ didSucceed: didOpen,
26005
+ message: didOpen ? "✓ Opened the GitHub Actions guide in your browser" : `Couldn't open a browser. Visit ${GITHUB_ACTIONS_SETUP_URL}`
26006
+ });
25991
26007
  });
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
26008
+ },
26009
+ onBack: () => {
26010
+ setCiSetupFeedback(void 0);
26011
+ setActiveReportScreen("landing");
26012
+ },
26013
+ onQuit
26020
26014
  }),
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] });
26015
+ handoff: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentHandoff, {
26016
+ agents: launchableAgents,
26017
+ onSelect: completeHandoff,
26018
+ onCopyPrompt: () => completeHandoff("clipboard"),
26019
+ onBack: () => setActiveReportScreen("landing"),
26020
+ onQuit
26021
+ }),
26022
+ "handoff-ci": /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HandoffCiRecommendation, {
26023
+ onAddToCi: () => {
26024
+ onAddToCi?.();
26025
+ setIsCiSetupQueued(true);
26026
+ setActiveReportScreen("handoff");
26027
+ },
26028
+ onContinue: () => setActiveReportScreen("handoff"),
26029
+ onQuit
26030
+ }),
26031
+ landing: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReportLanding, {
26032
+ header: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26033
+ variant: "landing",
26034
+ ...scoreHeaderProps
26035
+ }),
26036
+ phase: reportReveal.phase,
26037
+ issueCount: report.diagnostics.length,
26038
+ emptyStateMessage: report.emptyStateMessage,
26039
+ lintFailureReason: report.lintFailureReason,
26040
+ skippedChecks: report.skippedChecks,
26041
+ incompleteMessage: report.incompleteMessage,
26042
+ actions: landingActions,
26043
+ selectedIndex: resolvedLandingSelectedIndex,
26044
+ onSelectionChange: setLandingSelectedIndex,
26045
+ onQuit
26046
+ }),
26047
+ issues: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DiagnosticList, {
26048
+ header: reportLayout.showsViewerScoreHeader ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScoreHeader, {
26049
+ variant: "viewer",
26050
+ ...scoreHeaderProps
26051
+ }) : null,
26052
+ rows: diagnosticRows,
26053
+ entries: diagnosticListEntries,
26054
+ width: reportLayout.width,
26055
+ listColumnWidth: reportLayout.listColumnWidth,
26056
+ detailColumnWidth: reportLayout.detailColumnWidth,
26057
+ listHeight: reportLayout.listHeight,
26058
+ detailHeight: reportLayout.detailHeight,
26059
+ layout: reportLayout.layout,
26060
+ rootDirectory: report.rootDirectory,
26061
+ projectName: report.projectName,
26062
+ projectCount,
26063
+ initialSelectedRowIndex: resolvedViewerSelectedRowIndex,
26064
+ readRuleKeys: viewerReadRuleKeys,
26065
+ onSelectedRowIndexChange: handleViewerSelectionChange,
26066
+ onQuit,
26067
+ onBack: () => {
26068
+ setLandingSelectedIndex(Math.max(0, postReviewLandingActionIndex));
26069
+ setActiveReportScreen("landing");
26070
+ },
26071
+ exitHint: `esc back · ${exitHint}`
26072
+ })
26073
+ };
26074
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [activeReportScreen === "landing" && shouldShowIssueStream ? issueStream : null, screenContent[activeReportScreen]] });
26059
26075
  };
26060
26076
  //#endregion
26061
26077
  //#region ../../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json
@@ -28183,7 +28199,7 @@ const runMultiProjectScan = async (rootScanTarget, directories, input, scopePlan
28183
28199
  projectDirectories: discoveredProjectScans.map((projectScan) => projectScan.directory),
28184
28200
  isRootDeadCodeEnabled: input.options?.deadCode ?? rootProjectScan?.config?.deadCode ?? true
28185
28201
  });
28186
- if (workspaceDeadCodeOwner !== null) recordCount(METRIC.scanWorkspaceDeadCodeShared, 1, { projectCount: discoveredProjectScans.length });
28202
+ if (workspaceDeadCodeOwner !== null) recordCount(METRIC.scanWorkspaceMaintainabilityShared, 1, { projectCount: discoveredProjectScans.length });
28187
28203
  return runMountedScan(rootDirectory, resolveScanPresentation(input, projectScans.map(({ projectScan }) => projectScan)), blockingLevel, async (context) => {
28188
28204
  const startTime = performance$1.now();
28189
28205
  let finishedCount = 0;
@@ -28347,5 +28363,5 @@ const runScanApp = async (input) => {
28347
28363
  //#endregion
28348
28364
  export { runScanApp };
28349
28365
 
28350
- //# sourceMappingURL=run-scan-app-Ciq22jzp.js.map
28351
- //# debugId=a056bffa-2376-545e-9d50-403fe3a33c1a
28366
+ //# sourceMappingURL=run-scan-app-CDDu7P32.js.map
28367
+ //# debugId=b88a5d25-b8e7-56ca-b67f-96a6090df2dc
@@ -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]="d9eaae83-31e2-50cd-9596-e38e29a1a858")}catch(e){}}();
3
- import { Mn as resolveScanTarget, t as recordCount, w as METRIC, z as isNonInteractiveEnvironment } from "./record-metric-CMe2d1Xv.js";
4
- import { i as warnDeprecatedDiff } from "./resolve-scope-CMNrOdDf.js";
5
- import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-lMTlhEhE.js";
6
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-kkvDHKDE.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]="51399d27-1dd4-55db-9fa5-7f925bd3ec8f")}catch(e){}}();
3
+ import { dn as resolveScanTarget, t as recordCount, w as METRIC, z as isNonInteractiveEnvironment } from "./record-metric-CFfsgcVs.js";
4
+ import { i as warnDeprecatedDiff } from "./resolve-scope-CXS-5jLR.js";
5
+ import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-C0Bo5Gqy.js";
6
+ import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-g3_lzs3l.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-Ciq22jzp.js");
37
+ const { runScanApp } = await import("./run-scan-app-CDDu7P32.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-D4m5r4Rs.js.map
53
- //# debugId=d9eaae83-31e2-50cd-9596-e38e29a1a858
52
+ //# sourceMappingURL=scan-4I1mvxBO.js.map
53
+ //# debugId=51399d27-1dd4-55db-9fa5-7f925bd3ec8f