pi-lens 4.4.0 → 4.4.2

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 (150) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.md +1 -0
  3. package/config/dependency-cruiser-eager-allowlist.json +3 -1
  4. package/dist/{chunk-IXEBJSUE.js → chunk-23WOO7TX.js} +11 -10
  5. package/dist/{chunk-E2WFBRHM.js → chunk-2B73ZPOK.js} +3 -3
  6. package/dist/{chunk-DQ2NZ7C4.js → chunk-2BBLFX75.js} +139 -11
  7. package/dist/{chunk-ZMOL6RQC.js → chunk-2CD5RS6M.js} +2 -2
  8. package/dist/{chunk-VD4JQCQC.js → chunk-2ZGIZPDG.js} +38 -37
  9. package/dist/{chunk-DIULIWKU.js → chunk-34WSVGEM.js} +29 -3
  10. package/dist/chunk-3JNKMP3B.js +17 -0
  11. package/dist/{chunk-HVUZXSWK.js → chunk-3UUPUE3O.js} +45 -41
  12. package/dist/{chunk-5RXBNSW2.js → chunk-3VPVG5SU.js} +16 -8
  13. package/dist/chunk-3WA4HP4I.js +55 -0
  14. package/dist/chunk-466Z26MG.js +30 -0
  15. package/dist/{chunk-34U7PLGE.js → chunk-4UNXBNE2.js} +12 -11
  16. package/dist/{chunk-E4MAEDPM.js → chunk-4W4VLAPJ.js} +12 -11
  17. package/dist/{chunk-GUOGVTCQ.js → chunk-52FUZI6K.js} +4 -2
  18. package/dist/chunk-5JM2524W.js +84 -0
  19. package/dist/{chunk-VHQLPIRJ.js → chunk-5NGR67U5.js} +2 -2
  20. package/dist/{chunk-DFVMIKMQ.js → chunk-66SXUJCA.js} +45 -9
  21. package/dist/{chunk-OQGFCZJ4.js → chunk-66VMUL7Q.js} +16 -16
  22. package/dist/{chunk-HWBZIGMJ.js → chunk-67WMNWEE.js} +9 -8
  23. package/dist/{chunk-6QIUX4EP.js → chunk-6C7JWPCP.js} +7 -7
  24. package/dist/{chunk-47D2BO4S.js → chunk-6GFRNVYR.js} +11 -10
  25. package/dist/{chunk-ZAWW3AF6.js → chunk-6SDEP3AJ.js} +9 -8
  26. package/dist/{chunk-TGPXLY2J.js → chunk-724UL2TJ.js} +38 -2
  27. package/dist/{chunk-YLF3PPT5.js → chunk-76MWC2K6.js} +3 -3
  28. package/dist/{chunk-F3P7VQ7H.js → chunk-7DYBLXYA.js} +3 -3
  29. package/dist/{chunk-AJ3QXTRQ.js → chunk-7ULNCDCO.js} +37 -35
  30. package/dist/{chunk-UK3CMEAL.js → chunk-AOHZU2BM.js} +1 -1
  31. package/dist/{chunk-F3AU2TMM.js → chunk-ARJ6PLFH.js} +44 -28
  32. package/dist/{chunk-U3VGR4VU.js → chunk-AW7R2GWG.js} +65 -8
  33. package/dist/{chunk-FJNKANOS.js → chunk-BKE7E7TC.js} +10 -9
  34. package/dist/{chunk-4W2PLC4J.js → chunk-BRGDSBJE.js} +13 -12
  35. package/dist/{chunk-VN2AXLEX.js → chunk-C34ZXZ7O.js} +102 -16
  36. package/dist/{chunk-T4ERT73Y.js → chunk-CF24OIYI.js} +21 -20
  37. package/dist/{chunk-NMABWBZN.js → chunk-CHOW74WE.js} +1 -1
  38. package/dist/{chunk-ARFCXG7S.js → chunk-CO2G5PHH.js} +2 -2
  39. package/dist/{chunk-AS44CFQ4.js → chunk-EETY4LF7.js} +24 -10
  40. package/dist/{chunk-I3R7GKDR.js → chunk-EJIUXPBX.js} +1 -1
  41. package/dist/{chunk-B3I2UUT4.js → chunk-ESBQHFMJ.js} +653 -251
  42. package/dist/{chunk-O5WILGMI.js → chunk-FLKWCIZH.js} +8 -5
  43. package/dist/{chunk-LNAKEO63.js → chunk-GAEGEPOC.js} +4 -4
  44. package/dist/{chunk-V7R425XG.js → chunk-GBPP5P7X.js} +4 -4
  45. package/dist/{chunk-XK4CIILI.js → chunk-GHB6AYCP.js} +27 -26
  46. package/dist/{chunk-7FBF7NPR.js → chunk-GOYRYZ2R.js} +29 -26
  47. package/dist/{chunk-JOLITGCC.js → chunk-GXW6K4YJ.js} +1 -1
  48. package/dist/{chunk-NXPS2L6U.js → chunk-GZYBXISR.js} +9 -9
  49. package/dist/{chunk-OAXNDZJ7.js → chunk-IBGIOBEE.js} +8 -4
  50. package/dist/{chunk-IIXOAGHR.js → chunk-IBRALRBR.js} +19 -15
  51. package/dist/{chunk-7F72PXY2.js → chunk-IXXDFY73.js} +3 -3
  52. package/dist/chunk-IZSHAIJ7.js +26 -0
  53. package/dist/{chunk-N3YQJI6O.js → chunk-JAU72XNY.js} +20 -15
  54. package/dist/chunk-JMYYOTQG.js +77 -0
  55. package/dist/{chunk-NL5GLMFI.js → chunk-JSQFTSC6.js} +12 -11
  56. package/dist/{chunk-IVP5KAB7.js → chunk-JWA5I3SR.js} +35 -21
  57. package/dist/{chunk-Y4T27COV.js → chunk-KBG47GHP.js} +4 -4
  58. package/dist/{chunk-PWFHBTSF.js → chunk-L3BLXZG7.js} +2 -2
  59. package/dist/chunk-LOP6GRPH.js +31 -0
  60. package/dist/chunk-MQLUAEOC.js +162 -0
  61. package/dist/{chunk-RPD5K5NC.js → chunk-MRXKYPCS.js} +2 -2
  62. package/dist/{chunk-Q5U6FMDI.js → chunk-N2H3ZPZY.js} +59 -7
  63. package/dist/{chunk-27BBHSZC.js → chunk-N3X6Q4YT.js} +3 -3
  64. package/dist/{chunk-UY752QSN.js → chunk-NW7BOILN.js} +19 -17
  65. package/dist/{chunk-TLGFBM3F.js → chunk-ODBNXWT4.js} +302 -113
  66. package/dist/{chunk-TT22N74J.js → chunk-OG5UUPN7.js} +13 -13
  67. package/dist/{chunk-C2AUYXQH.js → chunk-OXXKQCSV.js} +6 -6
  68. package/dist/{chunk-PAK6IDME.js → chunk-P7266HLM.js} +2 -2
  69. package/dist/{chunk-52H5B5TC.js → chunk-PFNSLWU5.js} +31 -30
  70. package/dist/{chunk-5ZEJHV35.js → chunk-PHDMFAKM.js} +12 -2
  71. package/dist/{chunk-3I5QFT3N.js → chunk-PNQDPDRC.js} +6 -3
  72. package/dist/{chunk-TVN5N6GY.js → chunk-PV6LR5P5.js} +6057 -1311
  73. package/dist/{chunk-AHDW3GPE.js → chunk-Q6ZWTCLY.js} +24 -22
  74. package/dist/{chunk-RUOG5D2C.js → chunk-Q7DUK4LX.js} +5 -5
  75. package/dist/{chunk-YSNFMJKN.js → chunk-QGQ5CCCG.js} +2 -2
  76. package/dist/{chunk-LW6XKDZQ.js → chunk-QHJ6DQ2R.js} +287 -38
  77. package/dist/{chunk-GVXA6CCE.js → chunk-QILIYSJF.js} +1 -1
  78. package/dist/{chunk-22AVIGXS.js → chunk-QOBUHWHX.js} +12 -7
  79. package/dist/{chunk-5THXD6X5.js → chunk-QQNQ7SJW.js} +2 -75
  80. package/dist/{chunk-4RERDEXR.js → chunk-QZVW3AAK.js} +50 -41
  81. package/dist/{chunk-AWE5TMPO.js → chunk-R3PCY3YS.js} +14 -13
  82. package/dist/{chunk-HHYAELLJ.js → chunk-RPLINGVB.js} +7 -7
  83. package/dist/{chunk-EOKRQ3SA.js → chunk-RWWYJ623.js} +10 -1
  84. package/dist/{chunk-YGVYKNSN.js → chunk-SAEFPSB6.js} +59 -12
  85. package/dist/{chunk-K6VYLB2U.js → chunk-TYM6OUIT.js} +13 -12
  86. package/dist/{chunk-AJXODZY6.js → chunk-UXGETRP4.js} +13 -12
  87. package/dist/{chunk-I7SPGOWI.js → chunk-UZ3TUTRV.js} +1 -1
  88. package/dist/{chunk-TO6WL3GM.js → chunk-VCHXCQFG.js} +12 -2
  89. package/dist/{chunk-BRJKOBZP.js → chunk-VITUCP5A.js} +17 -6
  90. package/dist/{chunk-WONERJTP.js → chunk-VRZP76YM.js} +1 -1
  91. package/dist/{chunk-OS32RNR2.js → chunk-VSSBEUFT.js} +16 -15
  92. package/dist/{chunk-VDBPVIKD.js → chunk-VWCXW2E7.js} +1 -1
  93. package/dist/{chunk-NKOUFPQF.js → chunk-WOA4LN2R.js} +2 -2
  94. package/dist/{chunk-RIISMHKN.js → chunk-WOKKRCJ5.js} +15 -13
  95. package/dist/{chunk-XECLWQZN.js → chunk-WU567RSC.js} +13 -10
  96. package/dist/{chunk-V5PXFSZK.js → chunk-XCJN5IJU.js} +4 -4
  97. package/dist/{chunk-ORTMY4Q4.js → chunk-XKIZ2HNN.js} +22 -14
  98. package/dist/{chunk-6VCD4VKZ.js → chunk-XMSXXAHW.js} +2 -2
  99. package/dist/chunk-XPZPXCBV.js +28 -0
  100. package/dist/{chunk-O6TQT6RI.js → chunk-XTMJ7XDT.js} +1 -1
  101. package/dist/{chunk-VNMT7C64.js → chunk-XVF2VVXP.js} +5 -3
  102. package/dist/chunk-Z527N6YQ.js +28 -0
  103. package/dist/{chunk-NTUJEGDZ.js → chunk-ZANLILYD.js} +22 -2
  104. package/dist/{chunk-6P62QVEA.js → chunk-ZGDGW2V3.js} +2 -2
  105. package/dist/{chunk-ODEEOXPH.js → chunk-ZHFZWTZV.js} +12 -11
  106. package/dist/{chunk-AJVLWNFN.js → chunk-ZXYDQ3TZ.js} +5 -5
  107. package/dist/index.js +102097 -97778
  108. package/dist/mcp/analyze-cli.js +18 -8
  109. package/dist/mcp/cli.js +48 -37
  110. package/dist/mcp/server.js +695 -426
  111. package/dist/mcp/worker.js +66 -55
  112. package/dist/probes/installer.js +20 -19
  113. package/docs/ast-grep_rules_catalog.md +2 -2
  114. package/docs/astplayground.md +1 -1
  115. package/docs/configuration.md +38 -2
  116. package/docs/custom-rules.md +25 -2
  117. package/docs/dependencies.md +3 -0
  118. package/docs/environment-variables.md +34 -6
  119. package/docs/features.md +39 -3
  120. package/docs/globalconfig.md +3 -1
  121. package/docs/language-coverage.md +2 -1
  122. package/docs/lsp-capability-matrix.md +29 -6
  123. package/docs/lsp-idle-eviction.md +38 -47
  124. package/docs/pi-lens-fixer.md +13 -5
  125. package/docs/pi-lens-merge-policy.md +48 -1
  126. package/docs/pi-lens-monitor.md +3 -1
  127. package/docs/pi-lens-retro.md +2 -1
  128. package/docs/pi-lens-reviewer.md +19 -3
  129. package/docs/pi-lens-subagent.md +2 -0
  130. package/docs/real-harness.md +17 -0
  131. package/docs/schema/pi-lens-config-v1.json +565 -0
  132. package/docs/servercapabilities.md +18 -4
  133. package/docs/settings.md +2 -1
  134. package/docs/word-index.md +6 -0
  135. package/package.json +1 -1
  136. package/rules/ast-grep-rules/rule-tests/no-identity-operator-on-literals-test.yml +12 -2
  137. package/rules/ast-grep-rules/rule-tests/throw-new-error-js-test.yml +2 -0
  138. package/rules/ast-grep-rules/rule-tests/throw-new-error-test.yml +2 -0
  139. package/rules/ast-grep-rules/rules/no-identity-operator-on-literals.yml +20 -12
  140. package/rules/ast-grep-rules/rules/throw-new-error-js.yml +2 -2
  141. package/rules/ast-grep-rules/rules/throw-new-error.yml +2 -2
  142. package/dist/chunk-54B42YRX.js +0 -27
  143. package/dist/chunk-CGGAIP7J.js +0 -29
  144. package/dist/chunk-D6QS3U6M.js +0 -30
  145. package/dist/chunk-HMFXILPV.js +0 -83
  146. package/dist/chunk-LSMJ6KBE.js +0 -4139
  147. package/dist/chunk-NTHH2J74.js +0 -27
  148. package/dist/chunk-RPD4ZSB7.js +0 -25
  149. package/dist/chunk-T6D4Q4AQ.js +0 -54
  150. package/dist/chunk-VCSRSYLF.js +0 -81
@@ -4,46 +4,46 @@ import {
4
4
  } from "./chunk-7U2IDNXN.js";
5
5
  import {
6
6
  getScratchTreeFnmatchPatterns
7
- } from "./chunk-TO6WL3GM.js";
7
+ } from "./chunk-VCHXCQFG.js";
8
8
  import {
9
9
  formatToolFailure
10
- } from "./chunk-ZMOL6RQC.js";
10
+ } from "./chunk-2CD5RS6M.js";
11
11
  import {
12
12
  firstOutputLine,
13
13
  spawnFailedWithNoOutput
14
- } from "./chunk-I7SPGOWI.js";
14
+ } from "./chunk-UZ3TUTRV.js";
15
15
  import {
16
16
  listNestedLinkedWorktreeRoots
17
- } from "./chunk-3I5QFT3N.js";
17
+ } from "./chunk-PNQDPDRC.js";
18
18
  import {
19
19
  extractTomlTableSection,
20
20
  parseTomlStringArray
21
- } from "./chunk-PAK6IDME.js";
21
+ } from "./chunk-P7266HLM.js";
22
22
  import {
23
23
  VENV_BIN_DIRS,
24
24
  findLocalBinsAt
25
- } from "./chunk-U3VGR4VU.js";
25
+ } from "./chunk-AW7R2GWG.js";
26
26
  import {
27
27
  probeToolAsync
28
- } from "./chunk-EOKRQ3SA.js";
28
+ } from "./chunk-RWWYJ623.js";
29
29
  import {
30
30
  classifyProbeFailure,
31
31
  createAvailabilityLatch,
32
32
  logAvailabilityDecision,
33
33
  startHostStallSampler
34
- } from "./chunk-WONERJTP.js";
34
+ } from "./chunk-VRZP76YM.js";
35
35
  import {
36
36
  safeSpawnAsync
37
- } from "./chunk-VN2AXLEX.js";
37
+ } from "./chunk-C34ZXZ7O.js";
38
38
  import {
39
39
  incrementDegradationCount
40
- } from "./chunk-N3YQJI6O.js";
40
+ } from "./chunk-JAU72XNY.js";
41
41
  import {
42
42
  createSubsystemLogger
43
- } from "./chunk-O6TQT6RI.js";
43
+ } from "./chunk-XTMJ7XDT.js";
44
44
  import {
45
45
  findNearestMarkerRoot
46
- } from "./chunk-Q5U6FMDI.js";
46
+ } from "./chunk-N2H3ZPZY.js";
47
47
 
48
48
  // dist/clients/dead-code-client.js
49
49
  import * as fs from "node:fs";
@@ -203,7 +203,7 @@ var PythonDeadCodeClient = class {
203
203
  return findLocalBinsAt(["vulture"], root, {
204
204
  windowsExt: ".exe",
205
205
  binDirs: VENV_BIN_DIRS
206
- }).map((full) => ({ cmd: full, prefix: [] }));
206
+ }).flatMap((full) => typeof full === "string" ? [{ cmd: full, prefix: [] }] : []);
207
207
  }
208
208
  async doEnsureAvailable(root) {
209
209
  const candidates = [
@@ -1,17 +1,17 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
- import {
3
- assertInstallAllowed
4
- } from "./chunk-NTUJEGDZ.js";
5
2
  import {
6
3
  classifyProbeFailure,
7
4
  installRetryDelayMs
8
- } from "./chunk-WONERJTP.js";
5
+ } from "./chunk-VRZP76YM.js";
9
6
  import {
10
7
  safeSpawnAsync
11
- } from "./chunk-VN2AXLEX.js";
8
+ } from "./chunk-C34ZXZ7O.js";
9
+ import {
10
+ assertInstallAllowed
11
+ } from "./chunk-ZANLILYD.js";
12
12
  import {
13
13
  logExtension
14
- } from "./chunk-O6TQT6RI.js";
14
+ } from "./chunk-XTMJ7XDT.js";
15
15
 
16
16
  // dist/clients/dispatch/runners/utils/lazy-installer.js
17
17
  var LAZY_INSTALL_SPECS = {
@@ -1,11 +1,11 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  logExtension
4
- } from "./chunk-O6TQT6RI.js";
4
+ } from "./chunk-XTMJ7XDT.js";
5
5
  import {
6
6
  findNearestMarkerRoot,
7
7
  isAtOrAboveHomeDir
8
- } from "./chunk-Q5U6FMDI.js";
8
+ } from "./chunk-N2H3ZPZY.js";
9
9
 
10
10
  // dist/clients/cargo-manifest.js
11
11
  import { readFile } from "node:fs/promises";
@@ -2,56 +2,57 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  createAvailabilityChecker,
4
4
  resolveAvailableOrInstall
5
- } from "./chunk-7FBF7NPR.js";
5
+ } from "./chunk-GOYRYZ2R.js";
6
6
  import {
7
7
  ruffConfigArgs
8
- } from "./chunk-HHYAELLJ.js";
9
- import "./chunk-B3I2UUT4.js";
10
- import "./chunk-DIULIWKU.js";
11
- import "./chunk-VDBPVIKD.js";
12
- import "./chunk-TGPXLY2J.js";
8
+ } from "./chunk-RPLINGVB.js";
9
+ import "./chunk-ESBQHFMJ.js";
10
+ import "./chunk-34WSVGEM.js";
11
+ import "./chunk-VWCXW2E7.js";
12
+ import "./chunk-ZXYDQ3TZ.js";
13
+ import "./chunk-724UL2TJ.js";
13
14
  import "./chunk-QOZXJ4NA.js";
14
- import "./chunk-PAK6IDME.js";
15
- import "./chunk-GUOGVTCQ.js";
16
- import "./chunk-AJVLWNFN.js";
17
- import "./chunk-YGVYKNSN.js";
18
- import "./chunk-LNAKEO63.js";
15
+ import "./chunk-P7266HLM.js";
16
+ import "./chunk-52FUZI6K.js";
17
+ import "./chunk-SAEFPSB6.js";
18
+ import "./chunk-GAEGEPOC.js";
19
19
  import "./chunk-Z3CCVDUB.js";
20
20
  import "./chunk-2BEMIWEW.js";
21
- import "./chunk-OQGFCZJ4.js";
21
+ import "./chunk-66VMUL7Q.js";
22
22
  import {
23
23
  resolveToolCwd
24
- } from "./chunk-RUOG5D2C.js";
25
- import "./chunk-U3VGR4VU.js";
26
- import "./chunk-NTUJEGDZ.js";
27
- import "./chunk-EOKRQ3SA.js";
28
- import "./chunk-WONERJTP.js";
29
- import "./chunk-22AVIGXS.js";
30
- import "./chunk-GVXA6CCE.js";
31
- import "./chunk-6QIUX4EP.js";
32
- import "./chunk-VHQLPIRJ.js";
24
+ } from "./chunk-Q7DUK4LX.js";
25
+ import "./chunk-AW7R2GWG.js";
26
+ import "./chunk-RWWYJ623.js";
27
+ import "./chunk-VRZP76YM.js";
28
+ import "./chunk-QOBUHWHX.js";
29
+ import "./chunk-QILIYSJF.js";
30
+ import "./chunk-6C7JWPCP.js";
31
+ import "./chunk-5NGR67U5.js";
33
32
  import {
34
33
  safeSpawnAsync
35
- } from "./chunk-VN2AXLEX.js";
34
+ } from "./chunk-C34ZXZ7O.js";
36
35
  import "./chunk-BW5KFIQC.js";
37
36
  import "./chunk-QYF5S6P6.js";
38
37
  import {
39
38
  isFileKind
40
- } from "./chunk-5ZEJHV35.js";
41
- import "./chunk-DQ2NZ7C4.js";
42
- import "./chunk-VNMT7C64.js";
39
+ } from "./chunk-PHDMFAKM.js";
40
+ import "./chunk-2BBLFX75.js";
41
+ import "./chunk-XVF2VVXP.js";
42
+ import "./chunk-ZANLILYD.js";
43
43
  import "./chunk-2EECBNC5.js";
44
- import "./chunk-N3YQJI6O.js";
44
+ import "./chunk-JAU72XNY.js";
45
45
  import {
46
46
  createSubsystemLogger
47
- } from "./chunk-O6TQT6RI.js";
48
- import "./chunk-5THXD6X5.js";
49
- import "./chunk-UK3CMEAL.js";
47
+ } from "./chunk-XTMJ7XDT.js";
48
+ import "./chunk-JMYYOTQG.js";
49
+ import "./chunk-QQNQ7SJW.js";
50
+ import "./chunk-AOHZU2BM.js";
50
51
  import "./chunk-LJDODBBZ.js";
51
52
  import "./chunk-ABBOA7UD.js";
52
53
  import {
53
54
  pathsEqual
54
- } from "./chunk-Q5U6FMDI.js";
55
+ } from "./chunk-N2H3ZPZY.js";
55
56
  import "./chunk-NXL4FFQQ.js";
56
57
 
57
58
  // dist/clients/ruff-client.js
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  findNearestDirWithMarker
4
- } from "./chunk-VNMT7C64.js";
4
+ } from "./chunk-XVF2VVXP.js";
5
5
  import {
6
6
  isWindowsPath
7
- } from "./chunk-Q5U6FMDI.js";
7
+ } from "./chunk-N2H3ZPZY.js";
8
8
 
9
9
  // dist/clients/file-kinds.js
10
10
  import { basename, extname, win32 } from "node:path";
@@ -78,6 +78,7 @@ var KIND_EXTENSIONS = {
78
78
  ".vue"
79
79
  ],
80
80
  kotlin: [".kt", ".kts"],
81
+ lean: [".lean"],
81
82
  lua: [".lua"],
82
83
  markdown: [".md", ".mdx"],
83
84
  nix: [".nix"],
@@ -117,6 +118,11 @@ function isReadableSourceFile(filePath) {
117
118
  const extension = extname(filePath).toLowerCase();
118
119
  return Object.keys(KIND_EXTENSIONS).some((kind) => hasKindExtension(filePath, kind)) || NON_KIND_READABLE_EXTENSIONS.has(extension);
119
120
  }
121
+ var LEAN_ROOT_MARKERS = [
122
+ "lakefile.lean",
123
+ "lakefile.toml",
124
+ "lean-toolchain"
125
+ ];
120
126
  var DOTNET_CSHARP_ROOT_MARKERS = [
121
127
  "*.csproj",
122
128
  "*.sln",
@@ -206,6 +212,7 @@ var CODE_KINDS = /* @__PURE__ */ new Set([
206
212
  "java",
207
213
  "jsts",
208
214
  "kotlin",
215
+ "lean",
209
216
  "lua",
210
217
  "nix",
211
218
  "ocaml",
@@ -259,6 +266,7 @@ function getFileKindLabel(kind) {
259
266
  fsharp: "F#",
260
267
  java: "Java",
261
268
  kotlin: "Kotlin",
269
+ lean: "Lean 4",
262
270
  swift: "Swift",
263
271
  dart: "Dart",
264
272
  lua: "Lua",
@@ -302,6 +310,7 @@ function getLanguageId(kind) {
302
310
  fsharp: "fsharp",
303
311
  java: "java",
304
312
  kotlin: "kotlin",
313
+ lean: "lean",
305
314
  swift: "swift",
306
315
  dart: "dart",
307
316
  lua: "lua",
@@ -325,6 +334,7 @@ export {
325
334
  KIND_EXTENSIONS,
326
335
  isJstsFactFile,
327
336
  isReadableSourceFile,
337
+ LEAN_ROOT_MARKERS,
328
338
  DOTNET_CSHARP_ROOT_MARKERS,
329
339
  DOTNET_FSHARP_ROOT_MARKERS,
330
340
  TERRAGRUNT_FILENAMES,
@@ -4,7 +4,7 @@ import {
4
4
  normalizeFilePath,
5
5
  pathsEqual,
6
6
  walkUpDirs
7
- } from "./chunk-Q5U6FMDI.js";
7
+ } from "./chunk-N2H3ZPZY.js";
8
8
 
9
9
  // dist/clients/review-graph/git-identity.js
10
10
  import * as fs from "node:fs";
@@ -108,8 +108,11 @@ function listLinkedWorktreeRoots(commonDir) {
108
108
  try {
109
109
  const entryDir = join2(commonDir, "worktrees", name);
110
110
  const gitFile = fs.readFileSync(join2(entryDir, "gitdir"), "utf-8").trim();
111
- if (gitFile)
112
- roots.push(canonicalDirectory(dirname(resolve2(entryDir, gitFile))));
111
+ if (gitFile) {
112
+ const root = canonicalDirectory(dirname(resolve2(entryDir, gitFile)));
113
+ if (fs.existsSync(join2(root, ".git")))
114
+ roots.push(root);
115
+ }
113
116
  } catch {
114
117
  }
115
118
  }