pi-lens 4.4.1 → 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 (138) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/config/dependency-cruiser-eager-allowlist.json +3 -1
  3. package/dist/{chunk-BJF25SUG.js → chunk-23WOO7TX.js} +11 -10
  4. package/dist/{chunk-WATC3IQR.js → chunk-2B73ZPOK.js} +3 -3
  5. package/dist/{chunk-N2IRDBZI.js → chunk-2BBLFX75.js} +101 -11
  6. package/dist/{chunk-TA5L5KWQ.js → chunk-2CD5RS6M.js} +2 -2
  7. package/dist/{chunk-3TTPKMEF.js → chunk-2ZGIZPDG.js} +38 -37
  8. package/dist/{chunk-LNOMA3MP.js → chunk-34WSVGEM.js} +29 -3
  9. package/dist/chunk-3JNKMP3B.js +17 -0
  10. package/dist/{chunk-H2W2AXD3.js → chunk-3UUPUE3O.js} +41 -35
  11. package/dist/{chunk-6P54TMWL.js → chunk-3VPVG5SU.js} +6 -6
  12. package/dist/chunk-3WA4HP4I.js +55 -0
  13. package/dist/chunk-466Z26MG.js +30 -0
  14. package/dist/{chunk-PCHDGUKT.js → chunk-4UNXBNE2.js} +12 -11
  15. package/dist/{chunk-J7WJZ6W7.js → chunk-4W4VLAPJ.js} +12 -11
  16. package/dist/{chunk-F5VLZHUW.js → chunk-52FUZI6K.js} +4 -2
  17. package/dist/chunk-5JM2524W.js +84 -0
  18. package/dist/{chunk-H5EV3VMF.js → chunk-5NGR67U5.js} +2 -2
  19. package/dist/{chunk-YLN4K6WD.js → chunk-66SXUJCA.js} +6 -6
  20. package/dist/{chunk-LD7WFTRX.js → chunk-66VMUL7Q.js} +16 -16
  21. package/dist/{chunk-BHWHXMQ2.js → chunk-67WMNWEE.js} +9 -8
  22. package/dist/{chunk-USHG4DLH.js → chunk-6C7JWPCP.js} +7 -7
  23. package/dist/{chunk-VPWKF3GN.js → chunk-6GFRNVYR.js} +11 -10
  24. package/dist/{chunk-3JL6IFD7.js → chunk-6SDEP3AJ.js} +9 -8
  25. package/dist/{chunk-KJCWXUUS.js → chunk-724UL2TJ.js} +6 -4
  26. package/dist/{chunk-MQA2YBAH.js → chunk-76MWC2K6.js} +3 -3
  27. package/dist/{chunk-XHSCVSOL.js → chunk-7DYBLXYA.js} +3 -3
  28. package/dist/{chunk-AFZYMAIV.js → chunk-7ULNCDCO.js} +37 -35
  29. package/dist/{chunk-VSMJK3ZJ.js → chunk-AOHZU2BM.js} +1 -1
  30. package/dist/{chunk-ZETYB3XG.js → chunk-ARJ6PLFH.js} +44 -28
  31. package/dist/{chunk-T4QZ6FEH.js → chunk-AW7R2GWG.js} +65 -8
  32. package/dist/{chunk-GAYGGICG.js → chunk-BKE7E7TC.js} +10 -9
  33. package/dist/{chunk-EUT3B22Y.js → chunk-BRGDSBJE.js} +13 -12
  34. package/dist/{chunk-T54VJRAD.js → chunk-C34ZXZ7O.js} +55 -11
  35. package/dist/{chunk-CBD2B5CP.js → chunk-CF24OIYI.js} +21 -20
  36. package/dist/{chunk-UGSMCQ4D.js → chunk-CHOW74WE.js} +1 -1
  37. package/dist/{chunk-OZJINN4O.js → chunk-CO2G5PHH.js} +2 -2
  38. package/dist/{chunk-OC7LYAU5.js → chunk-EETY4LF7.js} +24 -10
  39. package/dist/{chunk-KJN4IOEJ.js → chunk-EJIUXPBX.js} +1 -1
  40. package/dist/{chunk-IQZXOZ7S.js → chunk-ESBQHFMJ.js} +549 -271
  41. package/dist/{chunk-CFYISHUW.js → chunk-FLKWCIZH.js} +8 -5
  42. package/dist/{chunk-IUKPRZER.js → chunk-GAEGEPOC.js} +2 -2
  43. package/dist/{chunk-6XX5HCLK.js → chunk-GBPP5P7X.js} +4 -4
  44. package/dist/{chunk-3FERWMCH.js → chunk-GHB6AYCP.js} +27 -26
  45. package/dist/{chunk-NFXP47RV.js → chunk-GOYRYZ2R.js} +26 -24
  46. package/dist/{chunk-TQFBZVCG.js → chunk-GXW6K4YJ.js} +1 -1
  47. package/dist/{chunk-N7YNJE5R.js → chunk-GZYBXISR.js} +9 -9
  48. package/dist/{chunk-3JSEWUWI.js → chunk-IBGIOBEE.js} +3 -3
  49. package/dist/{chunk-OYTMZXRF.js → chunk-IBRALRBR.js} +15 -14
  50. package/dist/{chunk-5JHXUETW.js → chunk-IXXDFY73.js} +3 -3
  51. package/dist/chunk-IZSHAIJ7.js +26 -0
  52. package/dist/{chunk-7ELY2CSM.js → chunk-JAU72XNY.js} +16 -14
  53. package/dist/chunk-JMYYOTQG.js +77 -0
  54. package/dist/{chunk-ELVWJYRV.js → chunk-JSQFTSC6.js} +12 -11
  55. package/dist/{chunk-3P4PF2BX.js → chunk-JWA5I3SR.js} +34 -20
  56. package/dist/{chunk-J6DFZDFA.js → chunk-KBG47GHP.js} +4 -4
  57. package/dist/{chunk-XGUL4SLQ.js → chunk-L3BLXZG7.js} +2 -2
  58. package/dist/chunk-LOP6GRPH.js +31 -0
  59. package/dist/chunk-MQLUAEOC.js +162 -0
  60. package/dist/{chunk-3MRXIJ6I.js → chunk-MRXKYPCS.js} +2 -2
  61. package/dist/{chunk-G3RLJYA2.js → chunk-N2H3ZPZY.js} +47 -1
  62. package/dist/{chunk-HREZQCT3.js → chunk-N3X6Q4YT.js} +3 -3
  63. package/dist/{chunk-NJF2X5XF.js → chunk-NW7BOILN.js} +19 -17
  64. package/dist/{chunk-ZZUFZUQZ.js → chunk-ODBNXWT4.js} +275 -90
  65. package/dist/{chunk-HSIRMK2D.js → chunk-OG5UUPN7.js} +13 -13
  66. package/dist/{chunk-ZOEYVXSV.js → chunk-OXXKQCSV.js} +6 -6
  67. package/dist/{chunk-S6AMWKPC.js → chunk-P7266HLM.js} +2 -2
  68. package/dist/{chunk-JONGANYH.js → chunk-PFNSLWU5.js} +31 -30
  69. package/dist/{chunk-64LU2OVH.js → chunk-PHDMFAKM.js} +12 -2
  70. package/dist/{chunk-IMSQR4WO.js → chunk-PNQDPDRC.js} +1 -1
  71. package/dist/{chunk-MTDRLSI7.js → chunk-PV6LR5P5.js} +5398 -1156
  72. package/dist/{chunk-N77WFUL7.js → chunk-Q6ZWTCLY.js} +24 -22
  73. package/dist/{chunk-IUR76K6A.js → chunk-Q7DUK4LX.js} +5 -5
  74. package/dist/{chunk-CULQYFLU.js → chunk-QGQ5CCCG.js} +2 -2
  75. package/dist/{chunk-UEAHAMEI.js → chunk-QHJ6DQ2R.js} +11 -11
  76. package/dist/{chunk-BNKLYOOO.js → chunk-QILIYSJF.js} +1 -1
  77. package/dist/{chunk-VYKKMYVT.js → chunk-QOBUHWHX.js} +11 -6
  78. package/dist/{chunk-3PNFWVHT.js → chunk-QQNQ7SJW.js} +2 -75
  79. package/dist/{chunk-OEX24ECI.js → chunk-QZVW3AAK.js} +50 -41
  80. package/dist/{chunk-7M4T5N3V.js → chunk-R3PCY3YS.js} +14 -13
  81. package/dist/{chunk-MGIWSROG.js → chunk-RPLINGVB.js} +7 -7
  82. package/dist/{chunk-CMU4RMJB.js → chunk-RWWYJ623.js} +10 -1
  83. package/dist/{chunk-7BX5DWSA.js → chunk-SAEFPSB6.js} +11 -11
  84. package/dist/{chunk-6UYA642J.js → chunk-TYM6OUIT.js} +13 -12
  85. package/dist/{chunk-ALQRYH6O.js → chunk-UXGETRP4.js} +13 -12
  86. package/dist/{chunk-FGALODG3.js → chunk-UZ3TUTRV.js} +1 -1
  87. package/dist/{chunk-J3FZR3YY.js → chunk-VCHXCQFG.js} +3 -3
  88. package/dist/{chunk-DMS52BEP.js → chunk-VITUCP5A.js} +5 -5
  89. package/dist/{chunk-O7HZX7CA.js → chunk-VRZP76YM.js} +1 -1
  90. package/dist/{chunk-VZHJS6DR.js → chunk-VSSBEUFT.js} +16 -15
  91. package/dist/{chunk-U52SAGRM.js → chunk-VWCXW2E7.js} +1 -1
  92. package/dist/{chunk-WW5BLB74.js → chunk-WOA4LN2R.js} +2 -2
  93. package/dist/{chunk-IR6XFA5P.js → chunk-WOKKRCJ5.js} +15 -14
  94. package/dist/{chunk-ZMOMPX2Z.js → chunk-WU567RSC.js} +11 -10
  95. package/dist/{chunk-WSEWKCXU.js → chunk-XCJN5IJU.js} +4 -4
  96. package/dist/{chunk-D65GOCJB.js → chunk-XKIZ2HNN.js} +15 -14
  97. package/dist/{chunk-OYOB3ZFG.js → chunk-XMSXXAHW.js} +2 -2
  98. package/dist/chunk-XPZPXCBV.js +28 -0
  99. package/dist/{chunk-34OCDWOS.js → chunk-XTMJ7XDT.js} +1 -1
  100. package/dist/{chunk-Z6BB4JLQ.js → chunk-XVF2VVXP.js} +5 -3
  101. package/dist/chunk-Z527N6YQ.js +28 -0
  102. package/dist/{chunk-D6YF5HKX.js → chunk-ZANLILYD.js} +22 -2
  103. package/dist/{chunk-2UMYMRI3.js → chunk-ZGDGW2V3.js} +2 -2
  104. package/dist/{chunk-6B5I6ICN.js → chunk-ZHFZWTZV.js} +12 -11
  105. package/dist/{chunk-AXKPQ6ZI.js → chunk-ZXYDQ3TZ.js} +5 -5
  106. package/dist/index.js +72740 -70136
  107. package/dist/mcp/analyze-cli.js +18 -8
  108. package/dist/mcp/cli.js +48 -37
  109. package/dist/mcp/server.js +564 -394
  110. package/dist/mcp/worker.js +66 -55
  111. package/dist/probes/installer.js +20 -19
  112. package/docs/astplayground.md +1 -1
  113. package/docs/configuration.md +29 -0
  114. package/docs/dependencies.md +3 -0
  115. package/docs/features.md +2 -2
  116. package/docs/globalconfig.md +2 -0
  117. package/docs/language-coverage.md +2 -1
  118. package/docs/lsp-capability-matrix.md +29 -7
  119. package/docs/lsp-idle-eviction.md +38 -47
  120. package/docs/pi-lens-fixer.md +4 -0
  121. package/docs/pi-lens-merge-policy.md +5 -0
  122. package/docs/pi-lens-retro.md +2 -1
  123. package/docs/pi-lens-reviewer.md +15 -0
  124. package/docs/pi-lens-subagent.md +2 -0
  125. package/docs/real-harness.md +17 -0
  126. package/docs/schema/pi-lens-config-v1.json +37 -2
  127. package/docs/servercapabilities.md +15 -4
  128. package/docs/settings.md +2 -1
  129. package/package.json +1 -1
  130. package/dist/chunk-2FQ62SPM.js +0 -83
  131. package/dist/chunk-7AXO3ZDF.js +0 -30
  132. package/dist/chunk-KMGPUKFD.js +0 -25
  133. package/dist/chunk-RJFED73B.js +0 -79
  134. package/dist/chunk-RTQNRM5X.js +0 -27
  135. package/dist/chunk-V5MEBST3.js +0 -4139
  136. package/dist/chunk-VGEVL5EQ.js +0 -29
  137. package/dist/chunk-WPE5FPGR.js +0 -54
  138. package/dist/chunk-Z7QQA2KT.js +0 -27
@@ -1,22 +1,23 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  parseSymbolKey
4
- } from "./chunk-WW5BLB74.js";
4
+ } from "./chunk-WOA4LN2R.js";
5
5
  import {
6
6
  isTestRoleCollateral
7
- } from "./chunk-KJN4IOEJ.js";
7
+ } from "./chunk-EJIUXPBX.js";
8
8
  import "./chunk-3MED75HT.js";
9
- import "./chunk-T54VJRAD.js";
10
- import "./chunk-N2IRDBZI.js";
11
- import "./chunk-Z6BB4JLQ.js";
9
+ import "./chunk-C34ZXZ7O.js";
10
+ import "./chunk-2BBLFX75.js";
11
+ import "./chunk-XVF2VVXP.js";
12
12
  import "./chunk-2EECBNC5.js";
13
- import "./chunk-7ELY2CSM.js";
14
- import "./chunk-34OCDWOS.js";
15
- import "./chunk-3PNFWVHT.js";
16
- import "./chunk-VSMJK3ZJ.js";
13
+ import "./chunk-JAU72XNY.js";
14
+ import "./chunk-XTMJ7XDT.js";
15
+ import "./chunk-JMYYOTQG.js";
16
+ import "./chunk-QQNQ7SJW.js";
17
+ import "./chunk-AOHZU2BM.js";
17
18
  import "./chunk-LJDODBBZ.js";
18
19
  import "./chunk-ABBOA7UD.js";
19
- import "./chunk-G3RLJYA2.js";
20
+ import "./chunk-N2H3ZPZY.js";
20
21
  import "./chunk-NXL4FFQQ.js";
21
22
 
22
23
  // dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js
@@ -1,19 +1,20 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  getProjectDataDir
4
- } from "./chunk-T54VJRAD.js";
5
- import "./chunk-N2IRDBZI.js";
6
- import "./chunk-Z6BB4JLQ.js";
4
+ } from "./chunk-C34ZXZ7O.js";
5
+ import "./chunk-2BBLFX75.js";
6
+ import "./chunk-XVF2VVXP.js";
7
7
  import "./chunk-2EECBNC5.js";
8
- import "./chunk-7ELY2CSM.js";
9
- import "./chunk-34OCDWOS.js";
10
- import "./chunk-3PNFWVHT.js";
8
+ import "./chunk-JAU72XNY.js";
9
+ import "./chunk-XTMJ7XDT.js";
10
+ import "./chunk-JMYYOTQG.js";
11
+ import "./chunk-QQNQ7SJW.js";
11
12
  import {
12
13
  redactSecrets
13
- } from "./chunk-VSMJK3ZJ.js";
14
+ } from "./chunk-AOHZU2BM.js";
14
15
  import "./chunk-LJDODBBZ.js";
15
16
  import "./chunk-ABBOA7UD.js";
16
- import "./chunk-G3RLJYA2.js";
17
+ import "./chunk-N2H3ZPZY.js";
17
18
  import "./chunk-NXL4FFQQ.js";
18
19
 
19
20
  // dist/clients/fix-worklog.js
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  getGlobalPiLensDir
4
- } from "./chunk-T54VJRAD.js";
4
+ } from "./chunk-C34ZXZ7O.js";
5
5
  import {
6
6
  SPECIAL_FILENAMES
7
- } from "./chunk-64LU2OVH.js";
7
+ } from "./chunk-PHDMFAKM.js";
8
8
  import {
9
9
  getTurnId
10
- } from "./chunk-VSMJK3ZJ.js";
10
+ } from "./chunk-AOHZU2BM.js";
11
11
  import {
12
12
  BoundedFifoMap
13
13
  } from "./chunk-ABBOA7UD.js";
@@ -180,6 +180,7 @@ var LANGUAGES = [
180
180
  extensions: [".kt", ".kts"],
181
181
  grammar: "kotlin"
182
182
  },
183
+ { id: "lean", kind: "lean", extensions: [".lean"] },
183
184
  { id: "less", kind: "css", extensions: [".less"] },
184
185
  { id: "lua", kind: "lua", extensions: [".lua"], grammar: "lua" },
185
186
  { id: "markdown", kind: "markdown", extensions: [".md", ".mdx"] },
@@ -409,7 +410,8 @@ var SCAN_LANGUAGE_PRIORITY = [
409
410
  ["json", "jsonc"],
410
411
  ["yaml"],
411
412
  ["toml"],
412
- ["prisma"]
413
+ ["prisma"],
414
+ ["lean"]
413
415
  ];
414
416
 
415
417
  export {
@@ -1,17 +1,17 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  extractFactsFromTree
4
- } from "./chunk-TQFBZVCG.js";
4
+ } from "./chunk-GXW6K4YJ.js";
5
5
  import {
6
6
  findOwnerName
7
7
  } from "./chunk-5W3R6LFT.js";
8
8
  import {
9
9
  firstChildOfType,
10
10
  walk
11
- } from "./chunk-UEAHAMEI.js";
11
+ } from "./chunk-QHJ6DQ2R.js";
12
12
  import {
13
13
  isJstsFactFile
14
- } from "./chunk-64LU2OVH.js";
14
+ } from "./chunk-PHDMFAKM.js";
15
15
 
16
16
  // dist/clients/dispatch/facts/function-facts.js
17
17
  var BOUNDARY_PREFIXES = [
@@ -2,16 +2,16 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  createAvailabilityProbeFlight,
4
4
  probeToolAsync
5
- } from "./chunk-CMU4RMJB.js";
5
+ } from "./chunk-RWWYJ623.js";
6
6
  import {
7
7
  classifyProbeFailure,
8
8
  createAvailabilityLatch,
9
9
  logAvailabilityDecision,
10
10
  startHostStallSampler
11
- } from "./chunk-O7HZX7CA.js";
11
+ } from "./chunk-VRZP76YM.js";
12
12
  import {
13
13
  createGenerationSource
14
- } from "./chunk-T54VJRAD.js";
14
+ } from "./chunk-C34ZXZ7O.js";
15
15
  import {
16
16
  createSingleFlight
17
17
  } from "./chunk-BW5KFIQC.js";
@@ -4,75 +4,77 @@ import {
4
4
  } from "./chunk-7U2IDNXN.js";
5
5
  import {
6
6
  formatToolFailure
7
- } from "./chunk-TA5L5KWQ.js";
7
+ } from "./chunk-2CD5RS6M.js";
8
8
  import {
9
9
  spawnFailedWithNoOutput
10
- } from "./chunk-FGALODG3.js";
10
+ } from "./chunk-UZ3TUTRV.js";
11
11
  import {
12
12
  createAvailabilityChecker,
13
13
  findManagedNodeToolBinary,
14
14
  getManagedToolEnvironment,
15
15
  resolveAvailableOrInstall
16
- } from "./chunk-NFXP47RV.js";
17
- import "./chunk-MGIWSROG.js";
16
+ } from "./chunk-GOYRYZ2R.js";
17
+ import "./chunk-RPLINGVB.js";
18
18
  import {
19
19
  canonicalDirectory,
20
20
  listNestedLinkedWorktreeRoots
21
- } from "./chunk-IMSQR4WO.js";
22
- import "./chunk-IQZXOZ7S.js";
23
- import "./chunk-LNOMA3MP.js";
24
- import "./chunk-U52SAGRM.js";
25
- import "./chunk-KJCWXUUS.js";
21
+ } from "./chunk-PNQDPDRC.js";
22
+ import "./chunk-ESBQHFMJ.js";
23
+ import "./chunk-34WSVGEM.js";
24
+ import "./chunk-VWCXW2E7.js";
25
+ import "./chunk-ZXYDQ3TZ.js";
26
+ import "./chunk-724UL2TJ.js";
26
27
  import "./chunk-QOZXJ4NA.js";
27
- import "./chunk-S6AMWKPC.js";
28
- import "./chunk-F5VLZHUW.js";
29
- import "./chunk-AXKPQ6ZI.js";
30
- import "./chunk-7BX5DWSA.js";
31
- import "./chunk-IUKPRZER.js";
28
+ import "./chunk-P7266HLM.js";
29
+ import "./chunk-52FUZI6K.js";
30
+ import "./chunk-SAEFPSB6.js";
31
+ import "./chunk-GAEGEPOC.js";
32
32
  import "./chunk-Z3CCVDUB.js";
33
33
  import "./chunk-2BEMIWEW.js";
34
34
  import {
35
35
  logSessionStart
36
- } from "./chunk-LD7WFTRX.js";
37
- import "./chunk-IUR76K6A.js";
36
+ } from "./chunk-66VMUL7Q.js";
37
+ import "./chunk-Q7DUK4LX.js";
38
38
  import {
39
- findLocalBinUpwards
40
- } from "./chunk-T4QZ6FEH.js";
41
- import "./chunk-D6YF5HKX.js";
42
- import "./chunk-CMU4RMJB.js";
39
+ findLocalBinUpwards,
40
+ localBinPath
41
+ } from "./chunk-AW7R2GWG.js";
42
+ import "./chunk-RWWYJ623.js";
43
43
  import {
44
44
  createAvailabilityLatch,
45
45
  describeUnavailability
46
- } from "./chunk-O7HZX7CA.js";
47
- import "./chunk-VYKKMYVT.js";
48
- import "./chunk-BNKLYOOO.js";
49
- import "./chunk-USHG4DLH.js";
50
- import "./chunk-H5EV3VMF.js";
46
+ } from "./chunk-VRZP76YM.js";
47
+ import "./chunk-QOBUHWHX.js";
48
+ import "./chunk-QILIYSJF.js";
49
+ import "./chunk-6C7JWPCP.js";
50
+ import "./chunk-5NGR67U5.js";
51
51
  import {
52
52
  getProjectDataDir,
53
53
  safeSpawnAsync
54
- } from "./chunk-T54VJRAD.js";
54
+ } from "./chunk-C34ZXZ7O.js";
55
55
  import "./chunk-BW5KFIQC.js";
56
56
  import "./chunk-QYF5S6P6.js";
57
- import "./chunk-64LU2OVH.js";
58
- import "./chunk-N2IRDBZI.js";
59
- import "./chunk-Z6BB4JLQ.js";
57
+ import "./chunk-PHDMFAKM.js";
58
+ import "./chunk-2BBLFX75.js";
59
+ import "./chunk-XVF2VVXP.js";
60
+ import "./chunk-ZANLILYD.js";
60
61
  import "./chunk-2EECBNC5.js";
61
62
  import {
62
63
  incrementDegradationCount
63
- } from "./chunk-7ELY2CSM.js";
64
+ } from "./chunk-JAU72XNY.js";
64
65
  import {
65
66
  createSubsystemLogger
66
- } from "./chunk-34OCDWOS.js";
67
- import "./chunk-3PNFWVHT.js";
68
- import "./chunk-VSMJK3ZJ.js";
67
+ } from "./chunk-XTMJ7XDT.js";
68
+ import "./chunk-JMYYOTQG.js";
69
+ import "./chunk-QQNQ7SJW.js";
70
+ import "./chunk-AOHZU2BM.js";
69
71
  import "./chunk-LJDODBBZ.js";
70
72
  import "./chunk-ABBOA7UD.js";
71
73
  import {
72
74
  findNearestMarkerRoot,
73
75
  normalizeEphemeralMapKey,
74
76
  normalizeFilePath
75
- } from "./chunk-G3RLJYA2.js";
77
+ } from "./chunk-N2H3ZPZY.js";
76
78
  import "./chunk-NXL4FFQQ.js";
77
79
 
78
80
  // dist/clients/knip-client.js
@@ -135,7 +137,7 @@ function resolveProjectKnipConfig(targetDir) {
135
137
  return null;
136
138
  }
137
139
  function resolveProjectKnipBinary(targetDir) {
138
- return findLocalBinUpwards("knip", targetDir) ?? null;
140
+ return localBinPath(findLocalBinUpwards("knip", targetDir)) ?? null;
139
141
  }
140
142
  function classifyKnipBinary(binary, targetDir) {
141
143
  if (binary === null)
@@ -3,7 +3,7 @@ import {
3
3
  isUnderDir,
4
4
  normalizeFilePath,
5
5
  pathsEqual
6
- } from "./chunk-G3RLJYA2.js";
6
+ } from "./chunk-N2H3ZPZY.js";
7
7
 
8
8
  // dist/clients/env-utils.js
9
9
  function isTestMode() {
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  tryLazyInstallForFormatter
4
- } from "./chunk-ZOEYVXSV.js";
4
+ } from "./chunk-OXXKQCSV.js";
5
5
  import {
6
6
  stripAnsi
7
7
  } from "./chunk-FC4RP4I2.js";
@@ -46,57 +46,59 @@ import {
46
46
  hasTerraformConfig,
47
47
  hasVitePlusConfig,
48
48
  stripGradleCommentsAndStrings
49
- } from "./chunk-MGIWSROG.js";
49
+ } from "./chunk-RPLINGVB.js";
50
50
  import {
51
51
  load
52
52
  } from "./chunk-QOZXJ4NA.js";
53
53
  import {
54
54
  readTextFileOrUndefined,
55
55
  resolveCargoPackageEdition
56
- } from "./chunk-S6AMWKPC.js";
56
+ } from "./chunk-P7266HLM.js";
57
57
  import {
58
58
  getToolPath
59
- } from "./chunk-LD7WFTRX.js";
59
+ } from "./chunk-66VMUL7Q.js";
60
60
  import {
61
61
  resolveToolCwd
62
- } from "./chunk-IUR76K6A.js";
62
+ } from "./chunk-Q7DUK4LX.js";
63
63
  import {
64
64
  VENDOR_BIN_DIRS,
65
65
  VENV_BIN_DIRS,
66
66
  findGlobalBinary,
67
- findLocalBinUpwards
68
- } from "./chunk-T4QZ6FEH.js";
69
- import {
70
- assertInstallAllowed
71
- } from "./chunk-D6YF5HKX.js";
67
+ findLocalBinUpwards,
68
+ localBinPath
69
+ } from "./chunk-AW7R2GWG.js";
72
70
  import {
71
+ getIsolatedNpxSpawnOptions,
73
72
  probeToolAsync
74
- } from "./chunk-CMU4RMJB.js";
73
+ } from "./chunk-RWWYJ623.js";
75
74
  import {
76
75
  classifyProbeFailure,
77
76
  createAvailabilityLatch,
78
77
  logAvailabilityDecision,
79
78
  startHostStallSampler
80
- } from "./chunk-O7HZX7CA.js";
79
+ } from "./chunk-VRZP76YM.js";
81
80
  import {
82
81
  createGenerationSource,
83
82
  safeSpawnAsync
84
- } from "./chunk-T54VJRAD.js";
83
+ } from "./chunk-C34ZXZ7O.js";
85
84
  import {
86
85
  TERRAGRUNT_FILENAMES
87
- } from "./chunk-64LU2OVH.js";
86
+ } from "./chunk-PHDMFAKM.js";
87
+ import {
88
+ assertInstallAllowed
89
+ } from "./chunk-ZANLILYD.js";
88
90
  import {
89
91
  compareOrdinal,
90
92
  getDegradationLedgerGeneration,
91
93
  incrementDegradationCount,
92
94
  recordDegradationOnce
93
- } from "./chunk-7ELY2CSM.js";
95
+ } from "./chunk-JAU72XNY.js";
94
96
  import {
95
97
  logExtension
96
- } from "./chunk-34OCDWOS.js";
98
+ } from "./chunk-XTMJ7XDT.js";
97
99
  import {
98
100
  logLatency
99
- } from "./chunk-3PNFWVHT.js";
101
+ } from "./chunk-QQNQ7SJW.js";
100
102
  import {
101
103
  BoundedFifoMap,
102
104
  BoundedLruCache
@@ -106,7 +108,7 @@ import {
106
108
  findNearestMarkerRoot,
107
109
  normalizeMapKey,
108
110
  toPosix
109
- } from "./chunk-G3RLJYA2.js";
111
+ } from "./chunk-N2H3ZPZY.js";
110
112
 
111
113
  // dist/clients/formatters.js
112
114
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -1378,19 +1380,19 @@ async function resolveGoFmtBinary() {
1378
1380
  return await fileExists(binary) ? binary : null;
1379
1381
  }
1380
1382
  async function findInVenv(binary, cwd) {
1381
- return findLocalBinUpwards(binary, cwd, {
1383
+ return localBinPath(findLocalBinUpwards(binary, cwd, {
1382
1384
  windowsExt: ".exe",
1383
1385
  binDirs: VENV_BIN_DIRS
1384
- }) ?? null;
1386
+ })) ?? null;
1385
1387
  }
1386
1388
  async function findInVendorBin(binary, cwd) {
1387
- return findLocalBinUpwards(binary, cwd, {
1389
+ return localBinPath(findLocalBinUpwards(binary, cwd, {
1388
1390
  windowsExt: ".bat",
1389
1391
  binDirs: VENDOR_BIN_DIRS
1390
- }) ?? null;
1392
+ })) ?? null;
1391
1393
  }
1392
1394
  async function findInNodeModules(binary, cwd) {
1393
- return findLocalBinUpwards(binary, cwd) ?? null;
1395
+ return localBinPath(findLocalBinUpwards(binary, cwd)) ?? null;
1394
1396
  }
1395
1397
  async function canUseBundleExec(cwd) {
1396
1398
  if (await which("bundle") === null)
@@ -2055,8 +2057,8 @@ var styluaFormatter = {
2055
2057
  name: "stylua",
2056
2058
  command: ["stylua", "$FILE"],
2057
2059
  extensions: [".lua"],
2058
- resolveCommand: managedFormatterResolver("stylua", [], findLocalBinUpwards),
2059
- detect: managedToolDetect("stylua", async (cwd) => (await findUp(["stylua.toml", ".stylua.toml"], cwd)).length > 0, async (cwd) => Boolean(findLocalBinUpwards("stylua", cwd) || await which("stylua")))
2060
+ resolveCommand: managedFormatterResolver("stylua", [], (binary, cwd) => localBinPath(findLocalBinUpwards(binary, cwd))),
2061
+ detect: managedToolDetect("stylua", async (cwd) => (await findUp(["stylua.toml", ".stylua.toml"], cwd)).length > 0, async (cwd) => Boolean(localBinPath(findLocalBinUpwards("stylua", cwd)) || await which("stylua")))
2060
2062
  };
2061
2063
  var ormoluFormatter = {
2062
2064
  name: "ormolu",
@@ -2476,6 +2478,16 @@ function diagnosticTail(text, maxLines = FORMATTER_ERROR_TAIL_LINES) {
2476
2478
  return void 0;
2477
2479
  return lines.slice(-maxLines).join("\n");
2478
2480
  }
2481
+ async function resolveNpxFallback(formatterName, fallback) {
2482
+ const toolId = getAutoInstallToolIdForFormatter(formatterName);
2483
+ if (!toolId)
2484
+ return fallback;
2485
+ const { ensureTool } = await import("./probes/installer.js");
2486
+ const installed = await ensureTool(toolId);
2487
+ if (!installed)
2488
+ return fallback;
2489
+ return [installed, ...fallback.slice(2)];
2490
+ }
2479
2491
  async function resolveFormatterCommand(formatter, absolutePath, cwd) {
2480
2492
  const agreement = establishToolAgreement(formatter.name, cwd);
2481
2493
  if (agreement.decision === "decline") {
@@ -2494,8 +2506,11 @@ async function resolveFormatterCommand(formatter, absolutePath, cwd) {
2494
2506
  if (resolved !== null)
2495
2507
  return resolved;
2496
2508
  const fallback = formatter.command.map((c) => c.replace("$FILE", absolutePath));
2497
- if (fallback[0] === "npx" && !assertInstallAllowed(`formatter npx fallback: ${formatter.name}`)) {
2498
- return SKIP_FORMATTING;
2509
+ if (fallback[0] === "npx") {
2510
+ if (!assertInstallAllowed(`formatter npx fallback: ${formatter.name}`)) {
2511
+ return SKIP_FORMATTING;
2512
+ }
2513
+ return resolveNpxFallback(formatter.name, fallback);
2499
2514
  }
2500
2515
  return fallback;
2501
2516
  }
@@ -2528,7 +2543,8 @@ async function formatFile(filePath, formatter, enter) {
2528
2543
  const contentBefore = await fs2.readFile(absolutePath, "utf-8");
2529
2544
  const result = await safeSpawnAsync(cmd[0], cmd.slice(1), {
2530
2545
  timeout: 15e3,
2531
- cwd: formatterCwd
2546
+ cwd: formatterCwd,
2547
+ ...cmd[0] === "npx" || cmd[0] === "bunx" ? getIsolatedNpxSpawnOptions() : {}
2532
2548
  });
2533
2549
  if (result.spawnFailure?.kind === "tool-not-found") {
2534
2550
  return {
@@ -2,27 +2,38 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  createAvailabilityProbeFlight,
4
4
  probeToolAsync
5
- } from "./chunk-CMU4RMJB.js";
5
+ } from "./chunk-RWWYJ623.js";
6
6
  import {
7
7
  classifyProbeFailure,
8
8
  createAvailabilityLatch,
9
9
  isTransientDecision,
10
10
  logAvailabilityDecision,
11
11
  startHostStallSampler
12
- } from "./chunk-O7HZX7CA.js";
12
+ } from "./chunk-VRZP76YM.js";
13
13
  import {
14
14
  createGenerationSource,
15
15
  safeSpawnAsync
16
- } from "./chunk-T54VJRAD.js";
16
+ } from "./chunk-C34ZXZ7O.js";
17
+ import {
18
+ getProjectTrustState
19
+ } from "./chunk-ZANLILYD.js";
20
+ import {
21
+ recordDegradationOnce
22
+ } from "./chunk-JAU72XNY.js";
23
+ import {
24
+ logExtension
25
+ } from "./chunk-XTMJ7XDT.js";
17
26
  import {
18
27
  isAtOrAboveHomeDir,
28
+ isUnderDir,
19
29
  walkUpDirs
20
- } from "./chunk-G3RLJYA2.js";
30
+ } from "./chunk-N2H3ZPZY.js";
21
31
 
22
32
  // dist/clients/package-manager.js
23
33
  import * as fs from "node:fs";
24
34
  import * as os from "node:os";
25
35
  import * as path from "node:path";
36
+ import { resolve as resolvePath } from "node:path";
26
37
  var PREFERENCE = [
27
38
  "npm",
28
39
  "pnpm",
@@ -254,6 +265,41 @@ var VENV_BIN_DIRS = [
254
265
  path.join(".venv", "Scripts"),
255
266
  path.join("venv", "Scripts")
256
267
  ];
268
+ var PROJECT_LOCAL_BIN_DIRS = [
269
+ ...NODE_MODULES_BIN_DIRS,
270
+ ...VENDOR_BIN_DIRS,
271
+ ...VENV_BIN_DIRS
272
+ ];
273
+ function localBinPath(value) {
274
+ return typeof value === "string" ? value : void 0;
275
+ }
276
+ function refuseLocalBin(tool, root) {
277
+ const trust = getProjectTrustState();
278
+ const resolvedRoot = resolvePath(root);
279
+ const subject = `project-local-binary:${resolvedRoot}:${tool}`;
280
+ if (recordDegradationOnce({
281
+ kind: "trust-refusal",
282
+ subject,
283
+ reason: `project-local binary refused: pi project trust is ${trust}`
284
+ })) {
285
+ logExtension({
286
+ subsystem: "project-trust",
287
+ level: "warn",
288
+ message: "project-local binary refused: mark the project trusted in pi or upgrade pi",
289
+ metadata: { tool, root: resolvedRoot, trust }
290
+ });
291
+ }
292
+ return { kind: "refused-by-trust", tool, root: resolvedRoot, trust };
293
+ }
294
+ function isProjectLocalBinPath(resolvedCommand, cwd) {
295
+ for (const ancestor of walkUpDirs(cwd)) {
296
+ if (isAtOrAboveHomeDir(ancestor, os.homedir()))
297
+ break;
298
+ if (PROJECT_LOCAL_BIN_DIRS.some((binDir) => isUnderDir(resolvedCommand, path.join(ancestor, binDir))))
299
+ return true;
300
+ }
301
+ return false;
302
+ }
257
303
  function expandCandidateNames(tools, windowsExt, isWindows) {
258
304
  return isWindows && windowsExt !== "" ? tools.flatMap((tool) => [`${tool}${windowsExt}`, tool]) : [...tools];
259
305
  }
@@ -276,18 +322,27 @@ function* localBinMatches(tools, startDir, options) {
276
322
  }
277
323
  }
278
324
  function findLocalBinUpwards(tool, startDir, options = {}) {
279
- return localBinMatches([tool], startDir, options).next().value;
325
+ const match = localBinMatches([tool], startDir, options).next().value;
326
+ if (match === void 0 || options.ceiling === false)
327
+ return match;
328
+ if (getProjectTrustState() !== "trusted")
329
+ return refuseLocalBin(tool, startDir);
330
+ return match;
280
331
  }
281
332
  function findLocalBinsAt(tools, dir, options = {}) {
282
333
  const { windowsExt = ".cmd", binDirs = NODE_MODULES_BIN_DIRS, isWindows = onWindows() } = options;
283
334
  const names = expandCandidateNames(tools, windowsExt, isWindows);
284
- return [...matchesInDir(path.resolve(dir), names, binDirs)];
335
+ const matches = [...matchesInDir(path.resolve(dir), names, binDirs)];
336
+ if (matches.length === 0 || getProjectTrustState() === "trusted")
337
+ return matches;
338
+ return [refuseLocalBin(tools.join(","), dir)];
285
339
  }
286
340
  function findLocalBinAt(tool, dir, options = {}) {
287
- return findLocalBinsAt([tool], dir, options)[0];
341
+ const match = findLocalBinsAt([tool], dir, options)[0];
342
+ return match;
288
343
  }
289
344
  async function findNodeToolBinary(tool, cwd, windowsExt = ".cmd") {
290
- return findLocalBinUpwards(tool, cwd, { windowsExt }) ?? await findGlobalBinary(tool, windowsExt);
345
+ return localBinPath(findLocalBinUpwards(tool, cwd, { windowsExt })) ?? await findGlobalBinary(tool, windowsExt);
291
346
  }
292
347
 
293
348
  export {
@@ -301,6 +356,8 @@ export {
301
356
  findGlobalBinary,
302
357
  VENDOR_BIN_DIRS,
303
358
  VENV_BIN_DIRS,
359
+ localBinPath,
360
+ isProjectLocalBinPath,
304
361
  findLocalBinUpwards,
305
362
  findLocalBinsAt,
306
363
  findLocalBinAt,
@@ -7,19 +7,20 @@ import {
7
7
  loadCallGraph,
8
8
  parseSymbolKey,
9
9
  saveCallGraph
10
- } from "./chunk-WW5BLB74.js";
10
+ } from "./chunk-WOA4LN2R.js";
11
11
  import "./chunk-3MED75HT.js";
12
- import "./chunk-T54VJRAD.js";
13
- import "./chunk-N2IRDBZI.js";
14
- import "./chunk-Z6BB4JLQ.js";
12
+ import "./chunk-C34ZXZ7O.js";
13
+ import "./chunk-2BBLFX75.js";
14
+ import "./chunk-XVF2VVXP.js";
15
15
  import "./chunk-2EECBNC5.js";
16
- import "./chunk-7ELY2CSM.js";
17
- import "./chunk-34OCDWOS.js";
18
- import "./chunk-3PNFWVHT.js";
19
- import "./chunk-VSMJK3ZJ.js";
16
+ import "./chunk-JAU72XNY.js";
17
+ import "./chunk-XTMJ7XDT.js";
18
+ import "./chunk-JMYYOTQG.js";
19
+ import "./chunk-QQNQ7SJW.js";
20
+ import "./chunk-AOHZU2BM.js";
20
21
  import "./chunk-LJDODBBZ.js";
21
22
  import "./chunk-ABBOA7UD.js";
22
- import "./chunk-G3RLJYA2.js";
23
+ import "./chunk-N2H3ZPZY.js";
23
24
  import "./chunk-NXL4FFQQ.js";
24
25
  export {
25
26
  CALL_GRAPH_CACHE_VERSION,
@@ -3,22 +3,23 @@ import {
3
3
  RustClient,
4
4
  resetRustAvailability,
5
5
  rustClient
6
- } from "./chunk-3MRXIJ6I.js";
7
- import "./chunk-XHSCVSOL.js";
8
- import "./chunk-CMU4RMJB.js";
9
- import "./chunk-O7HZX7CA.js";
10
- import "./chunk-T54VJRAD.js";
6
+ } from "./chunk-MRXKYPCS.js";
7
+ import "./chunk-7DYBLXYA.js";
8
+ import "./chunk-RWWYJ623.js";
9
+ import "./chunk-VRZP76YM.js";
10
+ import "./chunk-C34ZXZ7O.js";
11
11
  import "./chunk-BW5KFIQC.js";
12
- import "./chunk-N2IRDBZI.js";
13
- import "./chunk-Z6BB4JLQ.js";
12
+ import "./chunk-2BBLFX75.js";
13
+ import "./chunk-XVF2VVXP.js";
14
14
  import "./chunk-2EECBNC5.js";
15
- import "./chunk-7ELY2CSM.js";
16
- import "./chunk-34OCDWOS.js";
17
- import "./chunk-3PNFWVHT.js";
18
- import "./chunk-VSMJK3ZJ.js";
15
+ import "./chunk-JAU72XNY.js";
16
+ import "./chunk-XTMJ7XDT.js";
17
+ import "./chunk-JMYYOTQG.js";
18
+ import "./chunk-QQNQ7SJW.js";
19
+ import "./chunk-AOHZU2BM.js";
19
20
  import "./chunk-LJDODBBZ.js";
20
21
  import "./chunk-ABBOA7UD.js";
21
- import "./chunk-G3RLJYA2.js";
22
+ import "./chunk-N2H3ZPZY.js";
22
23
  import "./chunk-NXL4FFQQ.js";
23
24
  export {
24
25
  RustClient,