react-doctor 0.9.8 → 0.9.9-dev.e69faca

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-D6YhaO90.js → build-section-divider-Dqnkjosd.js} +22 -103
  2. package/dist/{ci-CoQk_MQ1.js → ci-uLJQVsey.js} +11 -11
  3. package/dist/cli.js +33 -30
  4. package/dist/{design-BE99dFpx.js → design-Pe_3Az8X.js} +4 -4
  5. package/dist/{exit-gracefully-D1TCcDw0.js → exit-gracefully-DrpCqAEw.js} +7 -6
  6. package/dist/index.d.ts +9 -1
  7. package/dist/index.js +159 -159
  8. package/dist/{inspect-IJod-62c.js → inspect-DspBK6iV.js} +16 -16
  9. package/dist/{install-dHInOlZL.js → install-Bq82FRWq.js} +8 -8
  10. package/dist/{install-doctor-script-BZFdcUt5.js → install-doctor-script-DE8IUn7u.js} +4 -4
  11. package/dist/{install-github-workflow-DPeWgeyr.js → install-github-workflow-COlI8Ygf.js} +6 -6
  12. package/dist/{install-react-doctor-Uw9TNjgb.js → install-react-doctor-CN-Ysvqg.js} +8 -8
  13. package/dist/lsp.js +2122 -327
  14. package/dist/{print-branded-header-CPsrouR5.js → print-branded-header-CyZuPgPz.js} +4 -4
  15. package/dist/{read-object-file-CAguhcIi.js → read-object-file-NUALLod8.js} +4 -4
  16. package/dist/{record-metric-CpxOk4TS.js → record-metric-BE4W9NsY.js} +1654 -295
  17. package/dist/{report-error-Dv9fVp8g.js → report-error-BcxyEZqQ.js} +18 -12
  18. package/dist/{report-workflow-result-CewNfhNQ.js → report-workflow-result-BIYz6Xh4.js} +5 -5
  19. package/dist/{resolve-scope-DDv5EOL5.js → resolve-scope-O3agwyD8.js} +6 -6
  20. package/dist/{rules-9VwJ8cD1.js → rules-BsGDAd3P.js} +6 -6
  21. package/dist/{run-scan-app-CTdQcsHL.js → run-scan-app-DyCMqHI5.js} +10 -10
  22. package/dist/{scan-oJcyCYJo.js → scan-XCE1aa38.js} +8 -8
  23. package/dist/{should-fail-scan-gate-BzNtUw8N.js → should-fail-scan-gate-ChTwe1SJ.js} +114 -192
  24. package/dist/{should-skip-prompts-BzAkz0il.js → should-skip-prompts-f3iHsUsZ.js} +4 -4
  25. package/dist/{unref-stdin-C9KAUvH3.js → unref-stdin-WJS2VNFJ.js} +112 -5
  26. package/dist/{version-C3ug2bM7.js → version-sAGj465-.js} +4 -4
  27. package/dist/{why-PgYaYMYc.js → why-CukgIunZ.js} +4 -4
  28. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1bb39004-44bb-5b36-a5bf-d415838af263")}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]="7502d11b-5ed7-52f7-a187-ac7c37461881")}catch(e){}}();
3
3
  import { i as __toESM$1, r as __require, t as __commonJSMin$1 } from "./chunk-ChKA3wi6.js";
4
4
  import { createRequire } from "node:module";
5
5
  import { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, FRAMEWORK_TOKENS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, REACT_DOCTOR_RULE_REGISTRY, REACT_DOCTOR_SCAN_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor/core";
@@ -63958,7 +63958,7 @@ const SOCKET_FREE_USER_AGENT = "react-doctor-supply-chain";
63958
63958
  const FILE_LINT_CACHE_FILENAME = "file-lint-cache.json";
63959
63959
  const FILE_LINT_CACHE_MAX_FILE_COUNT = 5e4;
63960
63960
  const SIDECAR_LINT_CACHE_FILENAME = "sidecar-lint-cache.json";
63961
- const CORE_PACKAGE_VERSION = "0.9.8";
63961
+ const CORE_PACKAGE_VERSION = "0.9.9";
63962
63962
  const DEAD_CODE_CACHE_FILENAME = "dead-code-cache.json";
63963
63963
  const DEAD_CODE_SUMMARY_CACHE_FILENAME = "dead-code-summaries.json";
63964
63964
  const SUPPLY_CHAIN_PLUGIN = "socket";
@@ -68197,11 +68197,162 @@ const restoreLegacyThrow = (effect) => effect.pipe(catchReasons("ReactDoctorErro
68197
68197
  ProjectNotFound: (reason) => die(new ProjectNotFoundError(reason.directory)),
68198
68198
  AmbiguousProject: (reason) => die(new AmbiguousProjectError(reason.directory, [...reason.candidates]))
68199
68199
  }, (_reason, error) => die(error)));
68200
+ const REDACTED_PLACEHOLDER = "<redacted>";
68201
+ const KEEP_PREFIX = `$1${REDACTED_PLACEHOLDER}`;
68202
+ const KNOWN_SECRET_RULES = [
68203
+ {
68204
+ pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
68205
+ replacement: REDACTED_PLACEHOLDER
68206
+ },
68207
+ {
68208
+ pattern: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,
68209
+ replacement: REDACTED_PLACEHOLDER
68210
+ },
68211
+ {
68212
+ pattern: /(?<=:\/\/)[^\s/:@]+:[^\s/@]+(?=@)/g,
68213
+ replacement: REDACTED_PLACEHOLDER
68214
+ },
68215
+ {
68216
+ pattern: /\b(AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA|A3T[A-Z0-9])[0-9A-Z]{16,}/g,
68217
+ replacement: KEEP_PREFIX
68218
+ },
68219
+ {
68220
+ pattern: /\b(gh[pousr]_)[A-Za-z0-9]{36,}/g,
68221
+ replacement: KEEP_PREFIX
68222
+ },
68223
+ {
68224
+ pattern: /\b(github_pat_)[A-Za-z0-9_]{22,}/g,
68225
+ replacement: KEEP_PREFIX
68226
+ },
68227
+ {
68228
+ pattern: /\b(glpat-)[A-Za-z0-9_-]{20,}/g,
68229
+ replacement: KEEP_PREFIX
68230
+ },
68231
+ {
68232
+ pattern: /\b(xox[baprs]-)[A-Za-z0-9-]{10,}/g,
68233
+ replacement: KEEP_PREFIX
68234
+ },
68235
+ {
68236
+ pattern: /(?<=hooks\.slack\.com\/services\/)[A-Za-z0-9/+_-]{20,}/g,
68237
+ replacement: REDACTED_PLACEHOLDER
68238
+ },
68239
+ {
68240
+ pattern: /\b((?:sk|rk)_(?:live|test)_)[0-9A-Za-z]{10,}/g,
68241
+ replacement: KEEP_PREFIX
68242
+ },
68243
+ {
68244
+ pattern: /\b(sk-(?:proj-|ant-)?)[A-Za-z0-9_-]{20,}/g,
68245
+ replacement: KEEP_PREFIX
68246
+ },
68247
+ {
68248
+ pattern: /\b(AIza)[0-9A-Za-z_-]{35,}/g,
68249
+ replacement: KEEP_PREFIX
68250
+ },
68251
+ {
68252
+ pattern: /\b(ya29\.)[0-9A-Za-z_-]{20,}/g,
68253
+ replacement: KEEP_PREFIX
68254
+ },
68255
+ {
68256
+ pattern: /\b(npm_)[A-Za-z0-9]{36,}/g,
68257
+ replacement: KEEP_PREFIX
68258
+ },
68259
+ {
68260
+ pattern: /\b(SG\.)[A-Za-z0-9_-]{22,}\.[A-Za-z0-9_-]{43,}/g,
68261
+ replacement: KEEP_PREFIX
68262
+ },
68263
+ {
68264
+ pattern: /\b(SK)[0-9a-fA-F]{32,}/g,
68265
+ replacement: KEEP_PREFIX
68266
+ },
68267
+ {
68268
+ pattern: /\b(dop_v1_)[a-f0-9]{64,}/g,
68269
+ replacement: KEEP_PREFIX
68270
+ },
68271
+ {
68272
+ pattern: /\b(shp(?:at|ca|pa|ss)_)[a-fA-F0-9]{32,}/g,
68273
+ replacement: KEEP_PREFIX
68274
+ },
68275
+ {
68276
+ pattern: /\b(sq0[a-z]{3}-)[0-9A-Za-z_-]{22,}/g,
68277
+ replacement: KEEP_PREFIX
68278
+ },
68279
+ {
68280
+ pattern: /\b([0-9]{8,10}:AA)[0-9A-Za-z_-]{32,}/g,
68281
+ replacement: KEEP_PREFIX
68282
+ },
68283
+ {
68284
+ pattern: /(?<=\bBearer\s)[A-Za-z0-9._~+/=-]{16,}/g,
68285
+ replacement: REDACTED_PLACEHOLDER
68286
+ },
68287
+ {
68288
+ pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
68289
+ replacement: REDACTED_PLACEHOLDER
68290
+ }
68291
+ ];
68292
+ const CANDIDATE_TOKEN_PATTERN = /[A-Za-z0-9_][A-Za-z0-9_-]*/g;
68293
+ const HEX_DIGEST_PATTERN = /^(?:[0-9a-f]{32}|[0-9a-f]{40}|[0-9a-f]{64})$/;
68294
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
68295
+ const HAS_LETTER_PATTERN = /[A-Za-z]/;
68296
+ const HAS_DIGIT_PATTERN = /[0-9]/;
68297
+ const shannonEntropyBits = (value) => {
68298
+ const counts = /* @__PURE__ */ new Map();
68299
+ for (const char of value) counts.set(char, (counts.get(char) ?? 0) + 1);
68300
+ let bits = 0;
68301
+ for (const count of counts.values()) {
68302
+ const probability = count / value.length;
68303
+ bits -= probability * Math.log2(probability);
68304
+ }
68305
+ return bits;
68306
+ };
68307
+ const looksLikeHighEntropySecret = (token) => {
68308
+ if (token.length < 32) return false;
68309
+ if (!HAS_LETTER_PATTERN.test(token) || !HAS_DIGIT_PATTERN.test(token)) return false;
68310
+ if (HEX_DIGEST_PATTERN.test(token) || UUID_PATTERN.test(token)) return false;
68311
+ return shannonEntropyBits(token) >= 3;
68312
+ };
68313
+ const redactHighEntropyTokens = (text) => text.replace(CANDIDATE_TOKEN_PATTERN, (token) => looksLikeHighEntropySecret(token) ? REDACTED_PLACEHOLDER : token);
68314
+ /**
68315
+ * Masks API keys, tokens, private keys, credentialed URLs, and emails
68316
+ * found anywhere inside a free-text string, returning the scrubbed text.
68317
+ * Applied to every diagnostic's `message` / `help` at construction time
68318
+ * so secrets never reach the terminal, the JSON report, or the score
68319
+ * API — react-doctor must never echo or transmit a user's secrets.
68320
+ *
68321
+ * Provider tokens keep their non-secret, type-identifying prefix (e.g.
68322
+ * `sk_live_<redacted>`, `ghp_<redacted>`, `AKIA<redacted>`) so the leaked
68323
+ * credential's type stays visible; structural or unknown-format secrets
68324
+ * with no meaningful prefix are masked whole.
68325
+ *
68326
+ * Runs the high-precision known-shape detectors first, then a generic
68327
+ * entropy-gated sweep for unknown-format secrets. Idempotent: the inert
68328
+ * `<redacted>` placeholder matches none of the detectors and is too
68329
+ * short for the generic sweep, so re-running leaves the text unchanged.
68330
+ *
68331
+ * Accepts `unknown` on purpose: callers feed it diagnostic `message` /
68332
+ * `help` that originate from oxlint JSON, which is only shape-checked at
68333
+ * the top level (the per-field `string` types are assumed, not validated).
68334
+ * A malformed non-string value returns `""` instead of throwing on
68335
+ * `.replace`, so one bad diagnostic can't abort parsing the whole batch.
68336
+ */
68337
+ const redactSensitiveText = (text) => {
68338
+ if (typeof text !== "string" || text === "") return "";
68339
+ let redacted = text;
68340
+ for (const rule of KNOWN_SECRET_RULES) redacted = redacted.replace(rule.pattern, rule.replacement);
68341
+ return redactHighEntropyTokens(redacted);
68342
+ };
68343
+ const HOME_DIRECTORY = os.homedir();
68344
+ const USER_HOME_PATTERNS = [/[A-Za-z]:[\\/]Users[\\/][^\\/]+/gi, /(?:\/Users\/|\/home\/)[^/\\]+/gi];
68345
+ const scrubSensitivePaths = (text) => {
68346
+ let scrubbed = text;
68347
+ if (HOME_DIRECTORY.length > 1) scrubbed = scrubbed.split(HOME_DIRECTORY).join("~");
68348
+ for (const pattern of USER_HOME_PATTERNS) scrubbed = scrubbed.replace(pattern, "~");
68349
+ return scrubbed;
68350
+ };
68200
68351
  const TRACER_PROJECT_NAME = "react-doctor";
68201
68352
  const OTEL_ENDPOINT = string("REACT_DOCTOR_OTLP_ENDPOINT").pipe(option);
68202
68353
  const OTEL_AUTH_HEADER = redacted("REACT_DOCTOR_OTLP_AUTH_HEADER").pipe(option);
68203
68354
  /**
68204
- * Opt-in OpenTelemetry layer. The default `Effect.fn(...)` spans
68355
+ * Bring-your-own OpenTelemetry layer. The default `Effect.fn(...)` spans
68205
68356
  * already populate the in-process tracer; this layer plugs an OTLP
68206
68357
  * HTTP exporter into the runtime when the user opts in via:
68207
68358
  *
@@ -68217,7 +68368,7 @@ const OTEL_AUTH_HEADER = redacted("REACT_DOCTOR_OTLP_AUTH_HEADER").pipe(option);
68217
68368
  * inspect / diagnose orchestrators always run, this layer just
68218
68369
  * dictates whether the spans they emit get shipped to a backend.
68219
68370
  */
68220
- const layerOtlp = unwrap$3(gen(function* () {
68371
+ const layerUserOtlp = unwrap$3(gen(function* () {
68221
68372
  const endpoint = yield* OTEL_ENDPOINT;
68222
68373
  const authHeader = yield* OTEL_AUTH_HEADER;
68223
68374
  if (endpoint._tag === "None" || authHeader._tag === "None") return empty$7;
@@ -73627,149 +73778,6 @@ const mapPreparedSourceLabels = (labels, preparedSourceMap) => {
73627
73778
  }
73628
73779
  return mappedLabels;
73629
73780
  };
73630
- const REDACTED_PLACEHOLDER = "<redacted>";
73631
- const KEEP_PREFIX = `$1${REDACTED_PLACEHOLDER}`;
73632
- const KNOWN_SECRET_RULES = [
73633
- {
73634
- pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
73635
- replacement: REDACTED_PLACEHOLDER
73636
- },
73637
- {
73638
- pattern: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,
73639
- replacement: REDACTED_PLACEHOLDER
73640
- },
73641
- {
73642
- pattern: /(?<=:\/\/)[^\s/:@]+:[^\s/@]+(?=@)/g,
73643
- replacement: REDACTED_PLACEHOLDER
73644
- },
73645
- {
73646
- pattern: /\b(AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA|A3T[A-Z0-9])[0-9A-Z]{16,}/g,
73647
- replacement: KEEP_PREFIX
73648
- },
73649
- {
73650
- pattern: /\b(gh[pousr]_)[A-Za-z0-9]{36,}/g,
73651
- replacement: KEEP_PREFIX
73652
- },
73653
- {
73654
- pattern: /\b(github_pat_)[A-Za-z0-9_]{22,}/g,
73655
- replacement: KEEP_PREFIX
73656
- },
73657
- {
73658
- pattern: /\b(glpat-)[A-Za-z0-9_-]{20,}/g,
73659
- replacement: KEEP_PREFIX
73660
- },
73661
- {
73662
- pattern: /\b(xox[baprs]-)[A-Za-z0-9-]{10,}/g,
73663
- replacement: KEEP_PREFIX
73664
- },
73665
- {
73666
- pattern: /(?<=hooks\.slack\.com\/services\/)[A-Za-z0-9/+_-]{20,}/g,
73667
- replacement: REDACTED_PLACEHOLDER
73668
- },
73669
- {
73670
- pattern: /\b((?:sk|rk)_(?:live|test)_)[0-9A-Za-z]{10,}/g,
73671
- replacement: KEEP_PREFIX
73672
- },
73673
- {
73674
- pattern: /\b(sk-(?:proj-|ant-)?)[A-Za-z0-9_-]{20,}/g,
73675
- replacement: KEEP_PREFIX
73676
- },
73677
- {
73678
- pattern: /\b(AIza)[0-9A-Za-z_-]{35,}/g,
73679
- replacement: KEEP_PREFIX
73680
- },
73681
- {
73682
- pattern: /\b(ya29\.)[0-9A-Za-z_-]{20,}/g,
73683
- replacement: KEEP_PREFIX
73684
- },
73685
- {
73686
- pattern: /\b(npm_)[A-Za-z0-9]{36,}/g,
73687
- replacement: KEEP_PREFIX
73688
- },
73689
- {
73690
- pattern: /\b(SG\.)[A-Za-z0-9_-]{22,}\.[A-Za-z0-9_-]{43,}/g,
73691
- replacement: KEEP_PREFIX
73692
- },
73693
- {
73694
- pattern: /\b(SK)[0-9a-fA-F]{32,}/g,
73695
- replacement: KEEP_PREFIX
73696
- },
73697
- {
73698
- pattern: /\b(dop_v1_)[a-f0-9]{64,}/g,
73699
- replacement: KEEP_PREFIX
73700
- },
73701
- {
73702
- pattern: /\b(shp(?:at|ca|pa|ss)_)[a-fA-F0-9]{32,}/g,
73703
- replacement: KEEP_PREFIX
73704
- },
73705
- {
73706
- pattern: /\b(sq0[a-z]{3}-)[0-9A-Za-z_-]{22,}/g,
73707
- replacement: KEEP_PREFIX
73708
- },
73709
- {
73710
- pattern: /\b([0-9]{8,10}:AA)[0-9A-Za-z_-]{32,}/g,
73711
- replacement: KEEP_PREFIX
73712
- },
73713
- {
73714
- pattern: /(?<=\bBearer\s)[A-Za-z0-9._~+/=-]{16,}/g,
73715
- replacement: REDACTED_PLACEHOLDER
73716
- },
73717
- {
73718
- pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
73719
- replacement: REDACTED_PLACEHOLDER
73720
- }
73721
- ];
73722
- const CANDIDATE_TOKEN_PATTERN = /[A-Za-z0-9_][A-Za-z0-9_-]*/g;
73723
- const HEX_DIGEST_PATTERN = /^(?:[0-9a-f]{32}|[0-9a-f]{40}|[0-9a-f]{64})$/;
73724
- const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
73725
- const HAS_LETTER_PATTERN = /[A-Za-z]/;
73726
- const HAS_DIGIT_PATTERN = /[0-9]/;
73727
- const shannonEntropyBits = (value) => {
73728
- const counts = /* @__PURE__ */ new Map();
73729
- for (const char of value) counts.set(char, (counts.get(char) ?? 0) + 1);
73730
- let bits = 0;
73731
- for (const count of counts.values()) {
73732
- const probability = count / value.length;
73733
- bits -= probability * Math.log2(probability);
73734
- }
73735
- return bits;
73736
- };
73737
- const looksLikeHighEntropySecret = (token) => {
73738
- if (token.length < 32) return false;
73739
- if (!HAS_LETTER_PATTERN.test(token) || !HAS_DIGIT_PATTERN.test(token)) return false;
73740
- if (HEX_DIGEST_PATTERN.test(token) || UUID_PATTERN.test(token)) return false;
73741
- return shannonEntropyBits(token) >= 3;
73742
- };
73743
- const redactHighEntropyTokens = (text) => text.replace(CANDIDATE_TOKEN_PATTERN, (token) => looksLikeHighEntropySecret(token) ? REDACTED_PLACEHOLDER : token);
73744
- /**
73745
- * Masks API keys, tokens, private keys, credentialed URLs, and emails
73746
- * found anywhere inside a free-text string, returning the scrubbed text.
73747
- * Applied to every diagnostic's `message` / `help` at construction time
73748
- * so secrets never reach the terminal, the JSON report, or the score
73749
- * API — react-doctor must never echo or transmit a user's secrets.
73750
- *
73751
- * Provider tokens keep their non-secret, type-identifying prefix (e.g.
73752
- * `sk_live_<redacted>`, `ghp_<redacted>`, `AKIA<redacted>`) so the leaked
73753
- * credential's type stays visible; structural or unknown-format secrets
73754
- * with no meaningful prefix are masked whole.
73755
- *
73756
- * Runs the high-precision known-shape detectors first, then a generic
73757
- * entropy-gated sweep for unknown-format secrets. Idempotent: the inert
73758
- * `<redacted>` placeholder matches none of the detectors and is too
73759
- * short for the generic sweep, so re-running leaves the text unchanged.
73760
- *
73761
- * Accepts `unknown` on purpose: callers feed it diagnostic `message` /
73762
- * `help` that originate from oxlint JSON, which is only shape-checked at
73763
- * the top level (the per-field `string` types are assumed, not validated).
73764
- * A malformed non-string value returns `""` instead of throwing on
73765
- * `.replace`, so one bad diagnostic can't abort parsing the whole batch.
73766
- */
73767
- const redactSensitiveText = (text) => {
73768
- if (typeof text !== "string" || text === "") return "";
73769
- let redacted = text;
73770
- for (const rule of KNOWN_SECRET_RULES) redacted = redacted.replace(rule.pattern, rule.replacement);
73771
- return redactHighEntropyTokens(redacted);
73772
- };
73773
73781
  const REACT_MODULE_SOURCE = "react";
73774
73782
  const REQUIRE_IDENTIFIER = "require";
73775
73783
  const USE_IDENTIFIER = "use";
@@ -75963,14 +75971,6 @@ var Reporter = class Reporter extends Service()("react-doctor/Reporter") {
75963
75971
  });
75964
75972
  }));
75965
75973
  };
75966
- const HOME_DIRECTORY = os.homedir();
75967
- const USER_HOME_PATTERNS = [/[A-Za-z]:[\\/]Users[\\/][^\\/]+/gi, /(?:\/Users\/|\/home\/)[^/\\]+/gi];
75968
- const scrubSensitivePaths = (text) => {
75969
- let scrubbed = text;
75970
- if (HOME_DIRECTORY.length > 1) scrubbed = scrubbed.split(HOME_DIRECTORY).join("~");
75971
- for (const pattern of USER_HOME_PATTERNS) scrubbed = scrubbed.replace(pattern, "~");
75972
- return scrubbed;
75973
- };
75974
75974
  const ScoreApiResponseSchema = Struct({
75975
75975
  score: Number$1,
75976
75976
  label: String$1,
@@ -76932,7 +76932,7 @@ const runInspect = (input, hooks = {}) => gen(function* () {
76932
76932
  suppressedRuleCounts: transform.summarizeSuppressions()
76933
76933
  };
76934
76934
  }).pipe(withSpan("runInspect", { attributes: {
76935
- "inspect.directory": input.directory,
76935
+ "inspect.directory": scrubSensitivePaths(input.directory),
76936
76936
  "inspect.includePathCount": input.includePaths.length,
76937
76937
  "inspect.runDeadCode": input.runDeadCode,
76938
76938
  "inspect.isCi": input.isCi,
@@ -77525,7 +77525,7 @@ const diagnoseDirectory = async (directory, options) => {
77525
77525
  shouldRunDeadCode,
77526
77526
  oxlintConcurrency,
77527
77527
  oxlintSpawnSlots
77528
- })), provide(layerOtlp)))), globalThis.performance.now() - startTime);
77528
+ })), provide(layerUserOtlp)))), globalThis.performance.now() - startTime);
77529
77529
  };
77530
77530
  const findWorstScore = (projectResults) => {
77531
77531
  let worstResult = null;
@@ -77573,7 +77573,7 @@ const diagnoseProject = async (projectDefinition, baseOptions, batchConfig, oxli
77573
77573
  });
77574
77574
  return {
77575
77575
  ok: true,
77576
- ...outputToDiagnoseResult(await runPromise(restoreLegacyThrow(program.pipe(provide(layer), provide(layerOtlp)))), globalThis.performance.now() - startTime),
77576
+ ...outputToDiagnoseResult(await runPromise(restoreLegacyThrow(program.pipe(provide(layer), provide(layerUserOtlp)))), globalThis.performance.now() - startTime),
77577
77577
  directory: scanTarget.resolvedDirectory
77578
77578
  };
77579
77579
  } catch (error) {
@@ -77635,4 +77635,4 @@ const toJsonReport = (result, options) => buildJsonReport({
77635
77635
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
77636
77636
 
77637
77637
  //# sourceMappingURL=index.js.map
77638
- //# debugId=1bb39004-44bb-5b36-a5bf-d415838af263
77638
+ //# debugId=7502d11b-5ed7-52f7-a187-ac7c37461881
@@ -1,17 +1,17 @@
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]="0e146497-22c0-5511-926f-9483676fa27f")}catch(e){}}();
3
- import { A as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, B as isCiOrCodingAgentEnvironment, Hn as gen, I as isDebugFlagEnabled, It as detectAiTrainingEnvironment, Jn as runPromise, Jt as getDiffInfo, Kn as provide$1, Kt as getChangedLineRanges, Lt as discoverReactSubprojects, Mn as toRelativePath, N as CliInputError, Qt as hasReactRuntime, St as StagedFiles, Tn as resolveScanTarget, Tt as buildJsonReport, U as CANONICAL_GITHUB_URL, V as isCodingAgentEnvironment, Vt as findLegacyConfig, Wt as getBaselineDiffPlan, an as isPathInsideDirectory, bn as remainingDeadlineBudgetMs, c as enableJsonMode, d as setJsonReportMode, en as highlighter, f as writeJsonErrorReport, hn as mapWithConcurrency, k as STAGED_FILES_TEMP_DIR_PREFIX, m as VERSION, n as recordDistribution, nn as isErrnoException, nt as Git, on as isPlainObject, p as writeJsonReport, pn as listWorkspacePackages, t as recordCount, tr as provide, u as setJsonReportDirectory, vn as messageFromUnknown, y as METRIC, yt as STAGED_FILES_PROJECT_CONFIG_FILENAMES } from "./record-metric-CpxOk4TS.js";
4
- import { i as flushSentry } from "./build-section-divider-D6YhaO90.js";
5
- import { o as isExpectedUserError } from "./unref-stdin-C9KAUvH3.js";
6
- import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-Dv9fVp8g.js";
7
- import { F as runGitRaw, L as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-BZFdcUt5.js";
8
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-DPeWgeyr.js";
9
- import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-DDv5EOL5.js";
10
- import { t as shouldSkipPrompts } from "./should-skip-prompts-BzAkz0il.js";
11
- import { A as resolveMergeBaseRef, B as buildEmptyReportMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printDiagnosticsDump, O as createInvocationInspect, R as filterDiagnosticsByCategories, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles } from "./should-fail-scan-gate-BzNtUw8N.js";
12
- import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-CewNfhNQ.js";
13
- import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithLegacyShellHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-Uw9TNjgb.js";
14
- import { t as readObjectFile } from "./read-object-file-CAguhcIi.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]="bfa08a2a-c71c-57d5-ae3e-74e31a6ca015")}catch(e){}}();
3
+ import { Cn as mapWithConcurrency, Dn as remainingDeadlineBudgetMs, En as messageFromUnknown, F as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, G as isCiOrCodingAgentEnvironment, Gt as discoverReactSubprojects, K as isCodingAgentEnvironment, Mn as resolveScanTarget, Nt as buildJsonReport, Ot as StagedFiles, P as STAGED_FILES_TEMP_DIR_PREFIX, Qt as getBaselineDiffPlan, R as CliInputError, Tt as STAGED_FILES_PROJECT_CONFIG_FILENAMES, V as isDebugFlagEnabled, Wt as detectAiTrainingEnvironment, Xn as gen, Y as CANONICAL_GITHUB_URL, Yt as findLegacyConfig, cn as highlighter, ct as Git, dr as provide, en as getChangedLineRanges, f as setJsonReportDirectory, g as VERSION, h as writeJsonReport, ir as runPromise, m as writeJsonErrorReport, mn as isPlainObject, n as recordDistribution, nn as getDiffInfo, on as hasReactRuntime, p as setJsonReportMode, pn as isPathInsideDirectory, t as recordCount, tr as provide$1, u as enableJsonMode, un as isErrnoException, w as METRIC, xn as listWorkspacePackages, zn as toRelativePath } from "./record-metric-BE4W9NsY.js";
4
+ import { c as isExpectedUserError, s as shutdownTelemetry } from "./unref-stdin-WJS2VNFJ.js";
5
+ import { i as flushSentry } from "./build-section-divider-Dqnkjosd.js";
6
+ import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-BcxyEZqQ.js";
7
+ import { F as runGitRaw, L as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-DE8IUn7u.js";
8
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-COlI8Ygf.js";
9
+ import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-O3agwyD8.js";
10
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-f3iHsUsZ.js";
11
+ import { A as resolveMergeBaseRef, B as buildEmptyReportMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printDiagnosticsDump, O as createInvocationInspect, R as filterDiagnosticsByCategories, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles } from "./should-fail-scan-gate-ChTwe1SJ.js";
12
+ import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-BIYz6Xh4.js";
13
+ import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithLegacyShellHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-CN-Ysvqg.js";
14
+ import { t as readObjectFile } from "./read-object-file-NUALLod8.js";
15
15
  import * as path$1 from "node:path";
16
16
  import * as fs$1 from "node:fs";
17
17
  import { tmpdir } from "node:os";
@@ -1423,7 +1423,7 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
1423
1423
  scanStartupSpinner?.stop();
1424
1424
  const isUserError = isExpectedUserError(error);
1425
1425
  const sentryEventId = isUserError ? void 0 : await reportErrorToSentry(error);
1426
- if (isDebugFlagEnabled()) await flushSentry();
1426
+ if (isDebugFlagEnabled()) await Promise.all([flushSentry(), shutdownTelemetry()]);
1427
1427
  if (isJsonMode) {
1428
1428
  writeJsonErrorReport(error, sentryEventId);
1429
1429
  process.exitCode = 1;
@@ -1439,5 +1439,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
1439
1439
  //#endregion
1440
1440
  export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
1441
1441
 
1442
- //# sourceMappingURL=inspect-IJod-62c.js.map
1443
- //# debugId=0e146497-22c0-5511-926f-9483676fa27f
1442
+ //# sourceMappingURL=inspect-DspBK6iV.js.map
1443
+ //# debugId=bfa08a2a-c71c-57d5-ae3e-74e31a6ca015
@@ -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]="cdd41433-df08-5264-b5cd-7220094d6656")}catch(e){}}();
3
- import { Yn as runSync, t as recordCount, y as METRIC } from "./record-metric-CpxOk4TS.js";
4
- import { o as isExpectedUserError } from "./unref-stdin-C9KAUvH3.js";
5
- import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-Dv9fVp8g.js";
6
- import { t as printBrandedHeader } from "./print-branded-header-CPsrouR5.js";
7
- import { n as runInstallReactDoctor } from "./install-react-doctor-Uw9TNjgb.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]="b70c252a-baf1-5462-8d22-ae29fd21acaf")}catch(e){}}();
3
+ import { ar as runSync, t as recordCount, w as METRIC } from "./record-metric-BE4W9NsY.js";
4
+ import { c as isExpectedUserError } from "./unref-stdin-WJS2VNFJ.js";
5
+ import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-BcxyEZqQ.js";
6
+ import { t as printBrandedHeader } from "./print-branded-header-CyZuPgPz.js";
7
+ import { n as runInstallReactDoctor } from "./install-react-doctor-CN-Ysvqg.js";
8
8
  //#region src/cli/commands/install.ts
9
9
  const installAction = async (options, command) => {
10
10
  recordCount(METRIC.cliInvoked, 1, { command: "install" });
@@ -28,5 +28,5 @@ const installAction = async (options, command) => {
28
28
  //#endregion
29
29
  export { installAction };
30
30
 
31
- //# sourceMappingURL=install-dHInOlZL.js.map
32
- //# debugId=cdd41433-df08-5264-b5cd-7220094d6656
31
+ //# sourceMappingURL=install-Bq82FRWq.js.map
32
+ //# debugId=b70c252a-baf1-5462-8d22-ae29fd21acaf
@@ -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]="5d4af233-6da5-551b-922b-8b289db5ce5c")}catch(e){}}();
3
- import { C as RUN_GIT_MAX_BUFFER_BYTES, In as error$1, Ln as info$1, P as isNonInteractiveEnvironment, Rn as log, Yn as runSync, en as highlighter, zn as warn } from "./record-metric-CpxOk4TS.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]="8c116b03-6b7f-5f3b-b4dd-7edc225683b5")}catch(e){}}();
3
+ import { Gn as log, Kn as warn, O as RUN_GIT_MAX_BUFFER_BYTES, Un as error$1, Wn as info$1, ar as runSync, cn as highlighter, z as isNonInteractiveEnvironment } from "./record-metric-BE4W9NsY.js";
4
4
  import { execFileSync } from "node:child_process";
5
5
  import * as path$1 from "node:path";
6
6
  import * as fs$1 from "node:fs";
@@ -3247,5 +3247,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
3247
3247
  //#endregion
3248
3248
  export { packageHasNestedRecordKey as A, SIMPLE_GIT_HOOKS_CONFIG_FILE as C, getPackageJsonPath as D, ensureTrailingNewline as E, runGitRaw as F, writeJsonFile as I, cliLogger as L, readPackageJson as M, resolveGitPath as N, isRecord as O, runGit as P, REACT_DOCTOR_COMMAND as S, VITE_PLUS_HOOKS_PATH as T, LEFTHOOK_CONFIG_FILES as _, installReactDoctorScriptStep as a, OVERCOMMIT_CONFIG_FILE as b, spinner as c, stripAnsi as d, isUnicodeSupported as f, HUSKY_HOOKS_PATH as g, HOOK_RELATIVE_PATH as h, hasDoctorScript as i, packageHasRecordKey as j, packageHasDependency as k, isFullWidth as l, HOOK_FILE_NAME as m, findNearestPackageDirectory as n, isSpinnerSilent as o, chalk as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, isWide as u, LEGACY_HOOK_RUNNER_RELATIVE_PATH as v, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as w, PRE_COMMIT_CONFIG_FILE as x, NON_BLOCKING_REACT_DOCTOR_COMMAND as y };
3249
3249
 
3250
- //# sourceMappingURL=install-doctor-script-BZFdcUt5.js.map
3251
- //# debugId=5d4af233-6da5-551b-922b-8b289db5ce5c
3250
+ //# sourceMappingURL=install-doctor-script-DE8IUn7u.js.map
3251
+ //# debugId=8c116b03-6b7f-5f3b-b4dd-7edc225683b5
@@ -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]="a2ca1d72-d55d-5e71-a3a3-29a6531ac473")}catch(e){}}();
3
- import { v as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-CpxOk4TS.js";
4
- import { t as unrefStdin } from "./unref-stdin-C9KAUvH3.js";
5
- import { L as cliLogger } from "./install-doctor-script-BZFdcUt5.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]="0f49ff91-8f31-5869-a51b-8c10924e849c")}catch(e){}}();
3
+ import { C as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-BE4W9NsY.js";
4
+ import { t as unrefStdin } from "./unref-stdin-WJS2VNFJ.js";
5
+ import { L as cliLogger } from "./install-doctor-script-DE8IUn7u.js";
6
6
  import { createRequire } from "node:module";
7
7
  import { execFile } from "node:child_process";
8
8
  import * as path$1 from "node:path";
@@ -263,5 +263,5 @@ const upgradeReactDoctorWorkflowInPlace = (projectRoot) => {
263
263
  //#endregion
264
264
  export { readReactDoctorWorkflow as a, workflowUsesV1Action as c, detectDefaultBranch as d, runCommand as f, isReactDoctorWorkflowInstalled as i, prompts as l, getReactDoctorWorkflowPath as n, upgradeReactDoctorWorkflowInPlace as o, installReactDoctorWorkflow as r, upgradeWorkflowActionToV2 as s, buildWorkflowContent as t, isCommandAvailable as u };
265
265
 
266
- //# sourceMappingURL=install-github-workflow-DPeWgeyr.js.map
267
- //# debugId=a2ca1d72-d55d-5e71-a3a3-29a6531ac473
266
+ //# sourceMappingURL=install-github-workflow-COlI8Ygf.js.map
267
+ //# debugId=0f49ff91-8f31-5869-a51b-8c10924e849c
@@ -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]="2ba1c609-10fb-55a0-9177-6a8f30833714")}catch(e){}}();
3
- import { N as CliInputError, _ as CI_TRUST_COMPANIES, en as highlighter, et as GITHUB_ACTIONS_SETUP_URL, nn as isErrnoException, t as recordCount, vt as SKILL_NAME, y as METRIC } from "./record-metric-CpxOk4TS.js";
4
- import { A as packageHasNestedRecordKey, D as getPackageJsonPath, E as ensureTrailingNewline, I as writeJsonFile, L as cliLogger, M as readPackageJson, N as resolveGitPath, O as isRecord, P as runGit, S as REACT_DOCTOR_COMMAND, T as VITE_PLUS_HOOKS_PATH, _ as LEFTHOOK_CONFIG_FILES, a as installReactDoctorScriptStep, b as OVERCOMMIT_CONFIG_FILE, c as spinner, g as HUSKY_HOOKS_PATH, h as HOOK_RELATIVE_PATH, j as packageHasRecordKey, k as packageHasDependency, m as HOOK_FILE_NAME, n as findNearestPackageDirectory, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, v as LEGACY_HOOK_RUNNER_RELATIVE_PATH, x as PRE_COMMIT_CONFIG_FILE, y as NON_BLOCKING_REACT_DOCTOR_COMMAND } from "./install-doctor-script-BZFdcUt5.js";
5
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-DPeWgeyr.js";
6
- import { t as shouldSkipPrompts } from "./should-skip-prompts-BzAkz0il.js";
7
- import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-CewNfhNQ.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]="839dca30-afd7-5a9e-9149-1b4012c231e7")}catch(e){}}();
3
+ import { R as CliInputError, S as CI_TRUST_COMPANIES, cn as highlighter, ot as GITHUB_ACTIONS_SETUP_URL, t as recordCount, un as isErrnoException, w as METRIC, wt as SKILL_NAME } from "./record-metric-BE4W9NsY.js";
4
+ import { A as packageHasNestedRecordKey, D as getPackageJsonPath, E as ensureTrailingNewline, I as writeJsonFile, L as cliLogger, M as readPackageJson, N as resolveGitPath, O as isRecord, P as runGit, S as REACT_DOCTOR_COMMAND, T as VITE_PLUS_HOOKS_PATH, _ as LEFTHOOK_CONFIG_FILES, a as installReactDoctorScriptStep, b as OVERCOMMIT_CONFIG_FILE, c as spinner, g as HUSKY_HOOKS_PATH, h as HOOK_RELATIVE_PATH, j as packageHasRecordKey, k as packageHasDependency, m as HOOK_FILE_NAME, n as findNearestPackageDirectory, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, v as LEGACY_HOOK_RUNNER_RELATIVE_PATH, x as PRE_COMMIT_CONFIG_FILE, y as NON_BLOCKING_REACT_DOCTOR_COMMAND } from "./install-doctor-script-DE8IUn7u.js";
5
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-COlI8Ygf.js";
6
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-f3iHsUsZ.js";
7
+ import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-BIYz6Xh4.js";
8
8
  import { execFile } from "node:child_process";
9
9
  import * as path$1 from "node:path";
10
10
  import * as fs$1 from "node:fs";
@@ -1150,5 +1150,5 @@ const runInstallReactDoctor = async (options = {}) => {
1150
1150
  //#endregion
1151
1151
  export { askUpgradeActionVersion as a, recordCiPromptDecision as c, installReactDoctorAgentHooks as i, hasHandledActionUpgrade as l, runInstallReactDoctor as n, askAddToGitHubActions as o, findAgentsWithLegacyShellHooks as r, hasHandledCiPrompt as s, getSkillSourceDirectory as t, recordActionUpgradeDecision as u };
1152
1152
 
1153
- //# sourceMappingURL=install-react-doctor-Uw9TNjgb.js.map
1154
- //# debugId=2ba1c609-10fb-55a0-9177-6a8f30833714
1153
+ //# sourceMappingURL=install-react-doctor-CN-Ysvqg.js.map
1154
+ //# debugId=839dca30-afd7-5a9e-9149-1b4012c231e7