react-doctor 0.9.11 → 0.9.12-dev.a2b460d

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 (28) hide show
  1. package/dist/{build-section-divider-sLcWe1hO.js → build-section-divider-Vz879zXD.js} +7 -7
  2. package/dist/{ci-DsrrD52i.js → ci-BVYrYekU.js} +11 -11
  3. package/dist/cli.js +22 -22
  4. package/dist/{design-CP25gyyg.js → design-D-TYN_tr.js} +4 -4
  5. package/dist/{exit-gracefully-CVVkBxDS.js → exit-gracefully-Cjv5kC_l.js} +6 -6
  6. package/dist/index.d.ts +17 -19
  7. package/dist/index.js +150 -34
  8. package/dist/{inspect-D6y8oLtg.js → inspect-kkvDHKDE.js} +19 -19
  9. package/dist/{install-afMFGeTB.js → install-ZeYvD9Rw.js} +8 -8
  10. package/dist/{install-doctor-script-Be7Mv3-l.js → install-doctor-script-D58Hr1dM.js} +4 -4
  11. package/dist/{install-github-workflow-Dev2F6Ea.js → install-github-workflow-DkMicv8E.js} +6 -6
  12. package/dist/{install-react-doctor-DIPVunY4.js → install-react-doctor-CjgE52al.js} +8 -8
  13. package/dist/lsp.js +55 -24
  14. package/dist/{print-branded-header-D5jLdo4p.js → print-branded-header-D4QYSu-h.js} +4 -4
  15. package/dist/{read-object-file-CEh1CqnD.js → read-object-file-OFRlvCAL.js} +4 -4
  16. package/dist/{record-metric-CJxSHfJD.js → record-metric-CMe2d1Xv.js} +86 -41
  17. package/dist/{report-error-CAEixMg1.js → report-error-1l7v6_dE.js} +5 -5
  18. package/dist/{report-workflow-result-C0jbKH8p.js → report-workflow-result-EagkH_v9.js} +5 -5
  19. package/dist/{resolve-scope-DS7rcRRz.js → resolve-scope-CMNrOdDf.js} +6 -6
  20. package/dist/{rules-BJynymuU.js → rules-CzR1qUru.js} +6 -6
  21. package/dist/{run-scan-app-BGzlyiIB.js → run-scan-app-Ciq22jzp.js} +69 -36
  22. package/dist/{scan-CgPRG6_z.js → scan-D4m5r4Rs.js} +8 -8
  23. package/dist/{should-fail-scan-gate-4jf7ZRdL.js → should-fail-scan-gate-lMTlhEhE.js} +56 -21
  24. package/dist/{should-skip-prompts-C78r7Ww7.js → should-skip-prompts-mXKZBNCz.js} +4 -4
  25. package/dist/{unref-stdin-Dc8ipkaw.js → unref-stdin-Cxhw67r6.js} +4 -4
  26. package/dist/{version-DDrwsTas.js → version-CnvVY2VD.js} +4 -4
  27. package/dist/{why-BRNrKY1b.js → why-BktDEhhH.js} +4 -4
  28. package/package.json +7 -9
@@ -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]="aa19a270-209f-56aa-98d7-5ca80eb40801")}catch(e){}}();
3
- import { Jt as filterSourceFiles, Rn as toCanonicalPath, pn as isPathInsideDirectory } from "./record-metric-CJxSHfJD.js";
4
- import { L as cliLogger } from "./install-doctor-script-Be7Mv3-l.js";
5
- import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-Dev2F6Ea.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]="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";
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-DS7rcRRz.js.map
339
- //# debugId=aa19a270-209f-56aa-98d7-5ca80eb40801
338
+ //# sourceMappingURL=resolve-scope-CMNrOdDf.js.map
339
+ //# debugId=b23a6187-c78a-54c4-8c35-931d06f1c65d
@@ -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]="fd91af9d-0d70-5737-8fb9-01d955fa5c90")}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-CJxSHfJD.js";
4
- import { L as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-Be7Mv3-l.js";
5
- import { t as readObjectFile } from "./read-object-file-CEh1CqnD.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]="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";
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-BJynymuU.js.map
581
- //# debugId=fd91af9d-0d70-5737-8fb9-01d955fa5c90
580
+ //# sourceMappingURL=rules-CzR1qUru.js.map
581
+ //# debugId=dfaccccc-0f72-5a95-877d-7d307db09b22
@@ -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]="79ca2870-c5c5-5bc1-92cd-ec761fd7f27f")}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]="a056bffa-2376-545e-9d50-403fe3a33c1a")}catch(e){}}();
3
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-CJxSHfJD.js";
5
- import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-CVVkBxDS.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-Be7Mv3-l.js";
7
- import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-Dev2F6Ea.js";
8
- import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-DS7rcRRz.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-4jf7ZRdL.js";
10
- import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-C0jbKH8p.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";
11
11
  import { EventEmitter } from "node:events";
12
12
  import { execFileSync } from "node:child_process";
13
13
  import path from "node:path";
@@ -20,7 +20,6 @@ import { performance as performance$1 } from "node:perf_hooks";
20
20
  import tty from "node:tty";
21
21
  import { getSkillAgentConfig } from "agent-install";
22
22
  import Yoga from "yoga-layout";
23
- import figures from "figures";
24
23
  //#region ../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react.production.js
25
24
  /**
26
25
  * @license React
@@ -24066,6 +24065,15 @@ const resolveVisibleStart = ({ itemCount, offset, selectedIndex, viewportHeight
24066
24065
  return boundedOffset;
24067
24066
  };
24068
24067
  //#endregion
24068
+ //#region src/cli/utils/terminal-symbols.ts
24069
+ const supportsUnicodeSymbols = process.platform !== "win32" ? process.env.TERM !== "linux" : Boolean(process.env.WT_SESSION) || Boolean(process.env.TERMINUS_SUBLIME) || process.env.ConEmuTask === "{cmd::Cmder}" || process.env.TERM_PROGRAM === "Terminus-Sublime" || process.env.TERM_PROGRAM === "vscode" || process.env.TERM === "xterm-256color" || process.env.TERM === "alacritty" || process.env.TERM === "rxvt-unicode" || process.env.TERM === "rxvt-unicode-256color" || process.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
24070
+ const terminalSymbols = {
24071
+ pointer: supportsUnicodeSymbols ? "❯" : ">",
24072
+ pointerSmall: "›",
24073
+ radioOn: supportsUnicodeSymbols ? "◉" : "(*)",
24074
+ radioOff: supportsUnicodeSymbols ? "◯" : "( )"
24075
+ };
24076
+ //#endregion
24069
24077
  //#region src/cli/ink/hooks/use-exit-on-ctrl-c.ts
24070
24078
  const SHOW_CURSOR = "\x1B[?25h";
24071
24079
  const useExitOnCtrlC = (onCancel) => {
@@ -24558,11 +24566,11 @@ const ProjectSelect = ({ packages, rootDirectory, onSubmit }) => {
24558
24566
  children: [
24559
24567
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
24560
24568
  color: isSelected ? "cyan" : void 0,
24561
- children: isSelected ? `${figures.pointer} ` : " "
24569
+ children: isSelected ? `${terminalSymbols.pointer} ` : " "
24562
24570
  }),
24563
24571
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
24564
24572
  color: isChecked ? "green" : void 0,
24565
- children: isChecked ? `${figures.radioOn} ` : `${figures.radioOff} `
24573
+ children: isChecked ? `${terminalSymbols.radioOn} ` : `${terminalSymbols.radioOff} `
24566
24574
  }),
24567
24575
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MatchedName, {
24568
24576
  name: matchedPackage.workspacePackage.name,
@@ -24774,7 +24782,7 @@ const ActionMenu = ({ actions, selectedIndex: controlledSelectedIndex, onSelecti
24774
24782
  color: isSelected ? "cyan" : void 0,
24775
24783
  bold: isSelected,
24776
24784
  children: [
24777
- isSelected ? figures.pointer : figures.pointerSmall,
24785
+ isSelected ? terminalSymbols.pointer : terminalSymbols.pointerSmall,
24778
24786
  " ",
24779
24787
  action.label
24780
24788
  ]
@@ -24785,12 +24793,20 @@ const ActionMenu = ({ actions, selectedIndex: controlledSelectedIndex, onSelecti
24785
24793
  };
24786
24794
  //#endregion
24787
24795
  //#region src/cli/ink/components/agent-handoff.tsx
24788
- const AgentHandoff = ({ agents, onSelect, onBack, onQuit }) => {
24789
- const actions = agents.map((agentId) => ({
24796
+ const AgentHandoff = ({ agents, onSelect, onCopyPrompt, onBack, onQuit }) => {
24797
+ const actions = [...agents.map((agentId) => ({
24790
24798
  id: agentId,
24791
24799
  label: getSkillAgentConfig(agentId).displayName,
24792
24800
  onSelect: () => onSelect(agentId)
24793
- }));
24801
+ })), {
24802
+ id: "copy-prompt",
24803
+ label: "Copy prompt",
24804
+ description: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
24805
+ dimColor: true,
24806
+ children: "Paste into any agent or edit it first"
24807
+ }),
24808
+ onSelect: onCopyPrompt
24809
+ }];
24794
24810
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
24795
24811
  flexDirection: "column",
24796
24812
  children: [
@@ -24798,7 +24814,7 @@ const AgentHandoff = ({ agents, onSelect, onBack, onQuit }) => {
24798
24814
  paddingLeft: 2,
24799
24815
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
24800
24816
  bold: true,
24801
- children: "Choose an agent"
24817
+ children: "Choose how to continue"
24802
24818
  })
24803
24819
  }),
24804
24820
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ActionMenu, {
@@ -25894,7 +25910,18 @@ const Report = ({ report, onExit, onQuit = onExit, launchableAgents = EMPTY_LAUN
25894
25910
  width: isWide ? reportLayout.listColumnWidth : reportLayout.width
25895
25911
  };
25896
25912
  const isCiSetupAvailable = Boolean(canAddToCi && onAddToCi && !isCiSetupQueued);
25897
- const isHandoffAvailable = diagnosticRows.length > 0 && launchableAgents.length > 0 && Boolean(onHandoff);
25913
+ const isHandoffAvailable = diagnosticRows.length > 0 && Boolean(onHandoff);
25914
+ const completeHandoff = (destination) => {
25915
+ if (!onHandoff) return;
25916
+ onHandoff({
25917
+ destination,
25918
+ prompt: buildHandoffPayload({
25919
+ diagnostics: report.diagnostics,
25920
+ projectName: report.projectName
25921
+ })
25922
+ });
25923
+ onExit();
25924
+ };
25898
25925
  const firstDiagnosticEntry = diagnosticListEntries.find((entry) => entry.kind === "item");
25899
25926
  const resolvedViewerSelectedRowIndex = viewerSelectedRowIndex ?? (firstDiagnosticEntry?.kind === "item" ? firstDiagnosticEntry.rowIndex : null);
25900
25927
  const markViewerRuleRead = (index) => {
@@ -25972,17 +25999,8 @@ const Report = ({ report, onExit, onQuit = onExit, launchableAgents = EMPTY_LAUN
25972
25999
  });
25973
26000
  else if (activeReportScreen === "handoff") activeScreenContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentHandoff, {
25974
26001
  agents: launchableAgents,
25975
- onSelect: (agentId) => {
25976
- if (!onHandoff) return;
25977
- onHandoff({
25978
- agentId,
25979
- prompt: buildHandoffPayload({
25980
- diagnostics: report.diagnostics,
25981
- projectName: report.projectName
25982
- })
25983
- });
25984
- onExit();
25985
- },
26002
+ onSelect: completeHandoff,
26003
+ onCopyPrompt: () => completeHandoff("clipboard"),
25986
26004
  onBack: () => setActiveReportScreen("landing"),
25987
26005
  onQuit
25988
26006
  });
@@ -27958,14 +27976,29 @@ const printExitFooter = async (input) => {
27958
27976
  }));
27959
27977
  };
27960
27978
  const performTuiHandoff = async (request, rootDirectory) => {
27961
- try {
27962
- await launchCliAgent(request.agentId, request.prompt, rootDirectory);
27979
+ let failureMessage = null;
27980
+ if (request.destination === "clipboard") {
27981
+ const didCopy = await copyToClipboard(request.prompt);
27982
+ recordCount(METRIC.agentHandoff, 1, {
27983
+ outcome: "clipboard",
27984
+ source: "tui",
27985
+ copied: didCopy
27986
+ });
27987
+ if (didCopy) {
27988
+ process.stdout.write(`${highlighter.success("✔")} Copied the prompt to your clipboard.\n`);
27989
+ return;
27990
+ }
27991
+ failureMessage = "Couldn't access the clipboard. Here's the prompt instead:";
27992
+ } else try {
27993
+ await launchCliAgent(request.destination, request.prompt, rootDirectory);
27994
+ return;
27963
27995
  } catch {
27964
- process.stdout.write(`${highlighter.warn("⚠")} Couldn't launch ${CLI_AGENT_BINARIES[request.agentId]}. Here's the prompt instead:\n`);
27965
- process.stdout.write(`${highlighter.dim("──── Agent prompt ────")}\n`);
27966
- process.stdout.write(`${request.prompt}\n`);
27967
- process.stdout.write(`${highlighter.dim("──────────────────────")}\n`);
27996
+ failureMessage = `Couldn't launch ${CLI_AGENT_BINARIES[request.destination]}. Here's the prompt instead:`;
27968
27997
  }
27998
+ process.stdout.write(`${highlighter.warn("⚠")} ${failureMessage}\n`);
27999
+ process.stdout.write(`${highlighter.dim("──── Agent prompt ────")}\n`);
28000
+ process.stdout.write(`${request.prompt}\n`);
28001
+ process.stdout.write(`${highlighter.dim("──────────────────────")}\n`);
27969
28002
  };
27970
28003
  const isCiUnconfigured = (directory) => !isReactDoctorWorkflowInstalled(findNearestPackageDirectory(directory) ?? directory);
27971
28004
  const performCiSetup = async (rootDirectory) => {
@@ -28314,5 +28347,5 @@ const runScanApp = async (input) => {
28314
28347
  //#endregion
28315
28348
  export { runScanApp };
28316
28349
 
28317
- //# sourceMappingURL=run-scan-app-BGzlyiIB.js.map
28318
- //# debugId=79ca2870-c5c5-5bc1-92cd-ec761fd7f27f
28350
+ //# sourceMappingURL=run-scan-app-Ciq22jzp.js.map
28351
+ //# debugId=a056bffa-2376-545e-9d50-403fe3a33c1a
@@ -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]="91c92b15-d829-5c31-8905-faca9b53ea89")}catch(e){}}();
3
- import { Mn as resolveScanTarget, t as recordCount, w as METRIC, z as isNonInteractiveEnvironment } from "./record-metric-CJxSHfJD.js";
4
- import { i as warnDeprecatedDiff } from "./resolve-scope-DS7rcRRz.js";
5
- import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-4jf7ZRdL.js";
6
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-D6y8oLtg.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]="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";
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-BGzlyiIB.js");
37
+ const { runScanApp } = await import("./run-scan-app-Ciq22jzp.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-CgPRG6_z.js.map
53
- //# debugId=91c92b15-d829-5c31-8905-faca9b53ea89
52
+ //# sourceMappingURL=scan-D4m5r4Rs.js.map
53
+ //# debugId=d9eaae83-31e2-50cd-9596-e38e29a1a858
@@ -1,12 +1,12 @@
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]="1be0ae40-8cad-55a2-b447-69faa6b7cb0b")}catch(e){}}();
3
- import { $n as orElseSucceed, An as resolveReactDoctorCacheDir, Bt as computeConfigFingerprint, Cn as mapWithConcurrency, Ct as SHARE_BASE_URL, Dt as SidecarLintCacheEnabled, E as NANOSECONDS_PER_MILLISECOND, Et as Score, Ft as buildSkippedChecks, G as isCiOrCodingAgentEnvironment, Gn as log, Gt as discoverReactSubprojects, H as ACTION_INPUT_ENVIRONMENT_VARIABLES, Hn as Console, Ht as createNodeReadFileLinesSync, It as calculateScore, Jn as decodeUnknownSync, Jt as filterSourceFiles, Kn as warn, Kt as filterDiagnosticsForSurface, Ln as summarizeDiagnostics, Lt as canonicalizeUserRuleKey, Mn as resolveScanTarget, Mt as atomicWriteJson, Nn as restoreLegacyThrow, On as resolveGithubActionsScoreMetadata, Pn as runInspect, Pt as buildRuleDocsUrl, Qn as map, R as CliInputError, St as Reporter, Tn as mergeReactDoctorConfigs, U as detectRunnerOs, Un as error, Ut as createOxlintSpawnSlots, Vn as yieldToEventLoop, Vt as computeDiagnosticDelta, W as isCiEnvironment, X as CI_URL, Xn as gen, Zn as makeSpan, _ as makeNoopConsole, _r as ParentSpan, _t as OxlintConcurrency, an as hasPublishedFixRecipe, ar as runSync, at as Files, bn as listSourceFiles, bt as Progress, c as setSentryProjectInfo, cn as highlighter, ct as Git, d as isJsonModeActive, dn as isFile, er as promise, et as Config, fn as isMonorepoRoot, fr as succeed, ft as LintPartialFailures, g as VERSION, gn as isReactDoctorError, gr as void_, gt as OXLINT_NODE_REQUIREMENT, hr as fail, ht as NodeResolver, in as groupBy, ir as runPromise, it as ENTERPRISE_CONTACT_URL, jn as resolveScanConcurrency, k as SCAN_RESULT_CACHE_FILENAME, kn as resolveLintBatchOrdering, kt as SupplyChain, l as getRunId, ln as isDirectory, lt as HTML_FILE_PATTERN, mt as MILLISECONDS_PER_SECOND, n as recordDistribution, nr as provideContext, o as buildSentryScope, or as sync, pt as Linter, qn as Diagnostic, qt as filterPathsOutsideDirectories, r as toSpanAttributes, rr as provideService, rt as DeadCode, s as buildSentryProjectContext, sn as hashFileContents, sr as try_, st as GIT_SHOW_MAX_BUFFER_BYTES, t as recordCount, tn as getDiagnosticRuleIdentity, tr as provide, tt as DIAGNOSTIC_CATEGORY_BUCKETS, ur as mergeAll, ut as JSX_FILE_PATTERN, vn as isScanComplete, vt as OxlintSpawnSlots, w as METRIC, wn as materializeSourceTree, x as BASELINE_FILES_TEMP_DIR_PREFIX, xn as listWorkspacePackages, xt as Project, yt as PerFileLintCacheEnabled, z as isNonInteractiveEnvironment, zt as collectSourceFileCountsByDirectory } from "./record-metric-CJxSHfJD.js";
4
- import { a as setActiveRunTrace, i as recordRunTraceId, o as getTelemetryContext } from "./unref-stdin-Dc8ipkaw.js";
5
- import { n as buildFooterLinkLines, r as activeScanAbortRegistry, t as buildSectionDivider } from "./build-section-divider-sLcWe1hO.js";
6
- import { D as getPackageJsonPath, L as cliLogger, O as isRecord, P as runGit, a as installReactDoctorScriptStep, c as spinner, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-Be7Mv3-l.js";
7
- import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-Dev2F6Ea.js";
8
- import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel, u as toForwardSlashes } from "./resolve-scope-DS7rcRRz.js";
9
- import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-C0jbKH8p.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]="d5dfd8c1-ba2c-54bc-b3a6-f6986ed8de06")}catch(e){}}();
3
+ import { $n as orElseSucceed, An as resolveReactDoctorCacheDir, Bt as computeConfigFingerprint, Cn as mapWithConcurrency, Ct as SHARE_BASE_URL, Dt as SidecarLintCacheEnabled, E as NANOSECONDS_PER_MILLISECOND, Et as Score, Ft as buildSkippedChecks, G as isCiOrCodingAgentEnvironment, Gn as log, Gt as discoverReactSubprojects, H as ACTION_INPUT_ENVIRONMENT_VARIABLES, Hn as Console, Ht as createNodeReadFileLinesSync, It as calculateScore, Jn as decodeUnknownSync, Jt as filterSourceFiles, Kn as warn, Kt as filterDiagnosticsForSurface, Ln as summarizeDiagnostics, Lt as canonicalizeUserRuleKey, Mn as resolveScanTarget, Mt as atomicWriteJson, Nn as restoreLegacyThrow, On as resolveGithubActionsScoreMetadata, Pn as runInspect, Pt as buildRuleDocsUrl, Qn as map, R as CliInputError, St as Reporter, Tn as mergeReactDoctorConfigs, U as detectRunnerOs, Un as error, Ut as createOxlintSpawnSlots, Vn as yieldToEventLoop, Vt as computeDiagnosticDelta, W as isCiEnvironment, X as CI_URL, Xn as gen, Zn as makeSpan, _ as makeNoopConsole, _r as ParentSpan, _t as OxlintConcurrency, an as hasPublishedFixRecipe, ar as runSync, at as Files, bn as listSourceFiles, bt as Progress, c as setSentryProjectInfo, cn as highlighter, ct as Git, d as isJsonModeActive, dn as isFile, er as promise, et as Config, fn as isMonorepoRoot, fr as succeed, ft as LintPartialFailures, g as VERSION, gn as isReactDoctorError, gr as void_, gt as OXLINT_NODE_REQUIREMENT, hr as fail, ht as NodeResolver, in as groupBy, ir as runPromise, it as ENTERPRISE_CONTACT_URL, jn as resolveScanConcurrency, k as SCAN_RESULT_CACHE_FILENAME, kn as resolveLintBatchOrdering, kt as SupplyChain, l as getRunId, ln as isDirectory, lt as HTML_FILE_PATTERN, mt as MILLISECONDS_PER_SECOND, n as recordDistribution, nr as provideContext, o as buildSentryScope, or as sync, pt as Linter, qn as Diagnostic, qt as filterPathsOutsideDirectories, r as toSpanAttributes, rr as provideService, rt as DeadCode, s as buildSentryProjectContext, sn as hashFileContents, sr as try_, st as GIT_SHOW_MAX_BUFFER_BYTES, t as recordCount, tn as getDiagnosticRuleIdentity, tr as provide, tt as DIAGNOSTIC_CATEGORY_BUCKETS, ur as mergeAll, ut as JSX_FILE_PATTERN, vn as isScanComplete, vt as OxlintSpawnSlots, w as METRIC, wn as materializeSourceTree, x as BASELINE_FILES_TEMP_DIR_PREFIX, xn as listWorkspacePackages, xt as Project, yt as PerFileLintCacheEnabled, z as isNonInteractiveEnvironment, zt as collectSourceFileCountsByDirectory } from "./record-metric-CMe2d1Xv.js";
4
+ import { a as setActiveRunTrace, i as recordRunTraceId, o as getTelemetryContext } from "./unref-stdin-Cxhw67r6.js";
5
+ import { n as buildFooterLinkLines, r as activeScanAbortRegistry, t as buildSectionDivider } from "./build-section-divider-Vz879zXD.js";
6
+ import { D as getPackageJsonPath, L as cliLogger, O as isRecord, P as runGit, a as installReactDoctorScriptStep, c as spinner, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-D58Hr1dM.js";
7
+ import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-DkMicv8E.js";
8
+ import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel, u as toForwardSlashes } from "./resolve-scope-CMNrOdDf.js";
9
+ import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-EagkH_v9.js";
10
10
  import { createRequire } from "node:module";
11
11
  import { spawn } from "node:child_process";
12
12
  import * as path$1 from "node:path";
@@ -17,7 +17,6 @@ import crypto, { randomUUID } from "node:crypto";
17
17
  import ts from "typescript";
18
18
  import { tmpdir } from "node:os";
19
19
  import { performance } from "node:perf_hooks";
20
- import { codeFrameColumns } from "@babel/code-frame";
21
20
  //#region src/cli/utils/apply-observability.ts
22
21
  /**
23
22
  * Installs the tracing backend for the inspect program.
@@ -2829,6 +2828,45 @@ const resolveProjectScan = async (rootScanTarget, projectDirectory) => {
2829
2828
  };
2830
2829
  };
2831
2830
  //#endregion
2831
+ //#region src/cli/utils/highlight-code-line.ts
2832
+ const CODE_TOKEN_PATTERN = /\/\/.*|\/\*.*?\*\/|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`|\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|type|typeof|undefined|var|void|while|with|yield)\b|\b(?:0[xob][\da-f]+|\d+(?:\.\d+)?)\b/giu;
2833
+ const highlightCodeLine = (codeLine) => codeLine.replace(CODE_TOKEN_PATTERN, (token) => {
2834
+ if (token.startsWith("/")) return highlighter.gray(token);
2835
+ if (token.startsWith("\"") || token.startsWith("'") || token.startsWith("`")) return highlighter.success(token);
2836
+ if (/^\d|^0[xob]/i.test(token)) return highlighter.warn(token);
2837
+ return highlighter.info(token);
2838
+ });
2839
+ //#endregion
2840
+ //#region src/cli/utils/render-code-frame.ts
2841
+ const SOURCE_LINE_BREAK_PATTERN = /\r\n|[\n\r\u2028\u2029]/;
2842
+ const renderCodeFrame = ({ source, line, column, endLine, message, linesAbove, linesBelow, maximumLineLength }) => {
2843
+ const sourceLines = source.split(SOURCE_LINE_BREAK_PATTERN);
2844
+ if (line < 1 || line > sourceLines.length) return null;
2845
+ const offendingLine = sourceLines[line - 1];
2846
+ if (offendingLine === void 0 || offendingLine.length > maximumLineLength) return null;
2847
+ const lastMarkedLine = Math.min(Math.max(endLine ?? line, line), sourceLines.length);
2848
+ const firstDisplayedLine = Math.max(line - linesAbove, 1);
2849
+ const lastDisplayedLine = Math.min(lastMarkedLine + linesBelow, sourceLines.length);
2850
+ const lineNumberWidth = String(lastDisplayedLine).length;
2851
+ const hasCaret = lastMarkedLine === line && column !== void 0;
2852
+ const outputLines = [];
2853
+ if (message && !hasCaret) outputLines.push(`${" ".repeat(lineNumberWidth + 2)}${highlighter.error(message)}`);
2854
+ for (let displayedLineNumber = firstDisplayedLine; displayedLineNumber <= lastDisplayedLine; displayedLineNumber += 1) {
2855
+ const sourceLine = sourceLines[displayedLineNumber - 1] ?? "";
2856
+ const isMarked = displayedLineNumber >= line && displayedLineNumber <= lastMarkedLine;
2857
+ const gutter = ` ${String(displayedLineNumber).padStart(lineNumberWidth)} |`;
2858
+ const marker = isMarked ? highlighter.error(">") : " ";
2859
+ outputLines.push(`${marker}${highlighter.dim(gutter)}${sourceLine.length > 0 ? ` ${highlightCodeLine(sourceLine)}` : ""}`);
2860
+ if (isMarked && hasCaret) {
2861
+ const markerSpacing = sourceLine.slice(0, Math.max(column - 1, 0)).replace(/[^\t]/g, " ");
2862
+ const emptyGutter = gutter.replace(/\d/g, " ");
2863
+ const markerMessage = message ? ` ${highlighter.error(message)}` : "";
2864
+ outputLines.push(` ${highlighter.dim(emptyGutter)} ${markerSpacing}${highlighter.error("^")}${markerMessage}`);
2865
+ }
2866
+ }
2867
+ return outputLines.join("\n");
2868
+ };
2869
+ //#endregion
2832
2870
  //#region src/cli/utils/resolve-absolute-path.ts
2833
2871
  /**
2834
2872
  * Resolves a diagnostic's `filePath` (relative to its project root, or
@@ -2855,19 +2893,16 @@ const buildCodeFrame = (input) => {
2855
2893
  } catch {
2856
2894
  return null;
2857
2895
  }
2858
- if ((source.split("\n", input.line)[input.line - 1] ?? "").length > 200) return null;
2859
- const location = input.endLine != null && input.endLine > input.line ? {
2860
- start: { line: input.line },
2861
- end: { line: input.endLine }
2862
- } : { start: {
2896
+ const endLine = input.endLine != null && input.endLine > input.line ? input.endLine : void 0;
2897
+ return renderCodeFrame({
2898
+ source,
2863
2899
  line: input.line,
2864
- column: input.column > 0 ? input.column : void 0
2865
- } };
2866
- return codeFrameColumns(source, location, {
2867
- highlightCode: true,
2900
+ column: endLine === void 0 && input.column > 0 ? input.column : void 0,
2901
+ endLine,
2902
+ message: input.message,
2868
2903
  linesAbove: 1,
2869
2904
  linesBelow: 1,
2870
- ...input.message ? { message: input.message } : {}
2905
+ maximumLineLength: 200
2871
2906
  });
2872
2907
  };
2873
2908
  //#endregion
@@ -2993,5 +3028,5 @@ const shouldFailScanGate = (input) => {
2993
3028
  //#endregion
2994
3029
  export { resolveMergeBaseRef as A, buildEmptyReportMessage as B, copyToClipboard as C, deduplicateProjectScans as D, collectProjectSourceFileCounts as E, printDiagnosticsDump as F, formatLearnMoreLine as G, buildRulePriorityMap as H, formatDiagnosticSite as I, hasIncompleteScoreAnalysis as L, pluralize as M, formatElapsedTime as N, createInvocationInspect as O, printFooter as P, filterDiagnosticsByCategories as R, CLI_AGENT_BINARIES as S, buildHandoffPayload as T, buildSortedRuleGroups as U, hasLintHardFailure as V, formatFixRecipeLine as W, resolveCliInspectOptions as _, projectManifestChanged as a, setUpGitHubActions as b, selectProjects as c, resolveProjectChangedLineRanges as d, resolveProjectDiffIncludePaths as f, resolveWorkspaceDeadCodeOwner as g, retryMissingProjectScores as h, validateModeFlags as i, printHeadlessReport as j, inspect as k, buildCodeFrame as l, resolveProjectRelativeDirectory as m, formatSkippedProjectsMessage as n, partitionProjectScanOutcomes as o, resolveProjectSourceFilePaths as p, validateIncludeUntrackedScope as r, discoverWorkspacePackages as s, shouldFailScanGate as t, resolveProjectScan as u, filterScansForSurface as v, launchCliAgent as w, detectLaunchableAgents as x, countUniqueScannedFiles as y, buildNoScoreMessage as z };
2995
3030
 
2996
- //# sourceMappingURL=should-fail-scan-gate-4jf7ZRdL.js.map
2997
- //# debugId=1be0ae40-8cad-55a2-b447-69faa6b7cb0b
3031
+ //# sourceMappingURL=should-fail-scan-gate-lMTlhEhE.js.map
3032
+ //# debugId=d5dfd8c1-ba2c-54bc-b3a6-f6986ed8de06
@@ -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]="a532e2d3-42f9-5e38-9c59-ee0e8063b1fd")}catch(e){}}();
3
- import { z as isNonInteractiveEnvironment } from "./record-metric-CJxSHfJD.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]="05cde194-2b40-558a-bef8-516987e69a93")}catch(e){}}();
3
+ import { z as isNonInteractiveEnvironment } from "./record-metric-CMe2d1Xv.js";
4
4
  //#region src/cli/utils/should-skip-prompts.ts
5
5
  const shouldSkipPrompts = (input = {}) => Boolean(input.yes) || Boolean(input.json) || isNonInteractiveEnvironment() || !process.stdin.isTTY;
6
6
  //#endregion
7
7
  export { shouldSkipPrompts as t };
8
8
 
9
- //# sourceMappingURL=should-skip-prompts-C78r7Ww7.js.map
10
- //# debugId=a532e2d3-42f9-5e38-9c59-ee0e8063b1fd
9
+ //# sourceMappingURL=should-skip-prompts-mXKZBNCz.js.map
10
+ //# debugId=05cde194-2b40-558a-bef8-516987e69a93
@@ -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]="d3b41c98-acec-5a9b-8e68-1470e0dbda37")}catch(e){}}();
3
- import { En as messageFromUnknown, R as CliInputError, Yn as make, ar as runSync, g as VERSION, gn as isReactDoctorError, gr as void_, hn as isProjectDiscoveryError, i as isTelemetryEnabled, ir as runPromise, lr as buildWithScope, mr as makeUnsafe, pr as close, un as isErrnoException, yn as layerObservability } from "./record-metric-CJxSHfJD.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]="f3b95338-df70-58f8-b5df-3a1090942531")}catch(e){}}();
3
+ import { En as messageFromUnknown, R as CliInputError, Yn as make, ar as runSync, g as VERSION, gn as isReactDoctorError, gr as void_, hn as isProjectDiscoveryError, i as isTelemetryEnabled, ir as runPromise, lr as buildWithScope, mr as makeUnsafe, pr as close, un as isErrnoException, yn as layerObservability } from "./record-metric-CMe2d1Xv.js";
4
4
  //#region src/cli/utils/is-environment-error.ts
5
5
  const ENVIRONMENT_ERROR_CODES = new Set([
6
6
  "EACCES",
@@ -223,5 +223,5 @@ const unrefStdin = () => {
223
223
  //#endregion
224
224
  export { setActiveRunTrace as a, isExpectedUserError as c, recordRunTraceId as i, formatEnvironmentError as l, getActiveRunTrace as n, getTelemetryContext as o, getLastRunTraceId as r, shutdownTelemetry as s, unrefStdin as t, isEnvironmentError as u };
225
225
 
226
- //# sourceMappingURL=unref-stdin-Dc8ipkaw.js.map
227
- //# debugId=d3b41c98-acec-5a9b-8e68-1470e0dbda37
226
+ //# sourceMappingURL=unref-stdin-Cxhw67r6.js.map
227
+ //# debugId=f3b95338-df70-58f8-b5df-3a1090942531
@@ -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]="8fb476f1-451c-54c4-b7a0-9629e37b0c1b")}catch(e){}}();
3
- import { g as VERSION, t as recordCount, w as METRIC } from "./record-metric-CJxSHfJD.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]="5516ea52-a2ad-5c86-9ba7-80fb01a79cd1")}catch(e){}}();
3
+ import { g as VERSION, t as recordCount, w as METRIC } from "./record-metric-CMe2d1Xv.js";
4
4
  //#region src/cli/commands/version.ts
5
5
  /**
6
6
  * oclif-style version line. 12-factor CLI Apps (#3, "What version am I
@@ -17,5 +17,5 @@ const versionAction = () => {
17
17
  //#endregion
18
18
  export { versionAction };
19
19
 
20
- //# sourceMappingURL=version-DDrwsTas.js.map
21
- //# debugId=8fb476f1-451c-54c4-b7a0-9629e37b0c1b
20
+ //# sourceMappingURL=version-CnvVY2VD.js.map
21
+ //# debugId=5516ea52-a2ad-5c86-9ba7-80fb01a79cd1
@@ -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]="1cc46de1-33bb-5979-bcc5-f2de4721050c")}catch(e){}}();
3
- import { t as inspectAction } from "./inspect-D6y8oLtg.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]="94e8d580-22e7-5305-b9ab-885f6ebaa525")}catch(e){}}();
3
+ import { t as inspectAction } from "./inspect-kkvDHKDE.js";
4
4
  //#region src/cli/commands/why.ts
5
5
  /**
6
6
  * `why <file:line>` — explains why a rule fired (or why a suppression didn't
@@ -17,5 +17,5 @@ const whyAction = async (location, options) => {
17
17
  //#endregion
18
18
  export { whyAction };
19
19
 
20
- //# sourceMappingURL=why-BRNrKY1b.js.map
21
- //# debugId=1cc46de1-33bb-5979-bcc5-f2de4721050c
20
+ //# sourceMappingURL=why-BktDEhhH.js.map
21
+ //# debugId=94e8d580-22e7-5305-b9ab-885f6ebaa525
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-doctor",
3
- "version": "0.9.11",
3
+ "version": "0.9.12-dev.a2b460d",
4
4
  "description": "Your agent writes bad React. This catches it",
5
5
  "keywords": [
6
6
  "accessibility",
@@ -51,17 +51,15 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@astrojs/compiler": "^4.0.0",
54
- "@babel/code-frame": "^7.29.0",
55
54
  "@sentry/node": "^10.54.0",
56
55
  "agent-install": "0.0.5",
57
56
  "conf": "^15.1.0",
58
57
  "confbox": "^0.2.4",
59
58
  "eslint-plugin-react-hooks": "^7.1.1",
60
- "figures": "^6.1.0",
61
59
  "jiti": "^2.7.0",
62
60
  "magicast": "^0.5.3",
63
61
  "oxc-resolver": "^11.24.2",
64
- "oxlint": ">=1.76.0 <1.77.0",
62
+ "oxlint": ">=1.77.0 <1.78.0",
65
63
  "prompts": "^2.4.2",
66
64
  "typescript": ">=5.0.4 <6",
67
65
  "vscode-languageserver": "^9.0.1",
@@ -69,8 +67,8 @@
69
67
  "vscode-uri": "^3.1.0",
70
68
  "yaml": "^2.9.0",
71
69
  "yoga-layout": "~3.2.1",
72
- "oxlint-plugin-react-doctor": "0.9.11",
73
- "deslop-js": "0.9.11"
70
+ "deslop-js": "0.9.12",
71
+ "oxlint-plugin-react-doctor": "0.9.12-dev.a2b460d"
74
72
  },
75
73
  "devDependencies": {
76
74
  "@types/babel__code-frame": "^7.27.0",
@@ -83,9 +81,9 @@
83
81
  "ora": "^9.4.0",
84
82
  "react": "19.2.5",
85
83
  "react-devtools-core": "^7.0.1",
86
- "@react-doctor/api": "0.9.11",
87
- "@react-doctor/core": "0.9.11",
88
- "@react-doctor/language-server": "0.9.11"
84
+ "@react-doctor/api": "0.9.12",
85
+ "@react-doctor/core": "0.9.12",
86
+ "@react-doctor/language-server": "0.9.12"
89
87
  },
90
88
  "engines": {
91
89
  "node": "^20.19.0 || >=22.13.0"