pi-lens 4.4.2 → 4.4.4

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 (143) hide show
  1. package/CHANGELOG.md +306 -0
  2. package/README.md +13 -1
  3. package/dist/{chunk-VITUCP5A.js → chunk-24AKHFGP.js} +9 -7
  4. package/dist/{chunk-JSQFTSC6.js → chunk-2FN63LPV.js} +11 -11
  5. package/dist/{chunk-CF24OIYI.js → chunk-2KXTHF3M.js} +20 -20
  6. package/dist/{chunk-ESBQHFMJ.js → chunk-3DA2JDOL.js} +543 -349
  7. package/dist/{chunk-RWWYJ623.js → chunk-3KAZU3VR.js} +1 -1
  8. package/dist/chunk-3PTHXJXR.js +28 -0
  9. package/dist/chunk-3QED2P4V.js +31 -0
  10. package/dist/{chunk-N2H3ZPZY.js → chunk-3RKP3FMS.js} +1 -0
  11. package/dist/{chunk-XVF2VVXP.js → chunk-5HSRT26B.js} +2 -2
  12. package/dist/{chunk-XKIZ2HNN.js → chunk-5IUSNGOC.js} +18 -16
  13. package/dist/{chunk-EJIUXPBX.js → chunk-5OFV52AM.js} +1 -1
  14. package/dist/{chunk-AW7R2GWG.js → chunk-5VSF4UUQ.js} +12 -7
  15. package/dist/{chunk-NW7BOILN.js → chunk-5WRPDP2A.js} +18 -18
  16. package/dist/{chunk-7ULNCDCO.js → chunk-6DLWKFEX.js} +35 -34
  17. package/dist/{chunk-WOA4LN2R.js → chunk-7D6L4MTX.js} +2 -2
  18. package/dist/{chunk-GAEGEPOC.js → chunk-7HXE67BN.js} +2 -2
  19. package/dist/chunk-AGSS7277.js +84 -0
  20. package/dist/{chunk-R3PCY3YS.js → chunk-AMERCH6V.js} +13 -13
  21. package/dist/{chunk-WU567RSC.js → chunk-ATKJFDQN.js} +14 -10
  22. package/dist/{chunk-VSSBEUFT.js → chunk-AWSCPCN2.js} +16 -16
  23. package/dist/{chunk-VCHXCQFG.js → chunk-BWD5EPKO.js} +3 -3
  24. package/dist/{chunk-ODBNXWT4.js → chunk-CT4MN5IU.js} +1271 -262
  25. package/dist/{chunk-34WSVGEM.js → chunk-CUHSHSB6.js} +83 -5
  26. package/dist/{chunk-CHOW74WE.js → chunk-CYRKQRPM.js} +7 -10
  27. package/dist/{chunk-Q7DUK4LX.js → chunk-DEL2U6CM.js} +5 -5
  28. package/dist/{chunk-6C7JWPCP.js → chunk-DGUKIYSI.js} +26 -23
  29. package/dist/{chunk-PHDMFAKM.js → chunk-DUO2TU77.js} +2 -2
  30. package/dist/{chunk-MRXKYPCS.js → chunk-EBC36LNN.js} +2 -2
  31. package/dist/chunk-ED36RF6Y.js +17 -0
  32. package/dist/{chunk-76MWC2K6.js → chunk-EUXZEFTV.js} +90 -97
  33. package/dist/{chunk-QOZXJ4NA.js → chunk-FM4RDMKT.js} +11 -8
  34. package/dist/{chunk-66VMUL7Q.js → chunk-GAQ7OQG6.js} +31 -28
  35. package/dist/{chunk-Q6ZWTCLY.js → chunk-GL5LUMZE.js} +23 -24
  36. package/dist/{chunk-BKE7E7TC.js → chunk-GMX5OS7B.js} +9 -9
  37. package/dist/{chunk-ZHFZWTZV.js → chunk-GSLNCYGG.js} +11 -11
  38. package/dist/{chunk-ARJ6PLFH.js → chunk-GSM5UU7A.js} +26 -34
  39. package/dist/{chunk-724UL2TJ.js → chunk-GXFV6MYU.js} +3 -3
  40. package/dist/chunk-HAD7QRQI.js +30 -0
  41. package/dist/{chunk-QOBUHWHX.js → chunk-HRNHZA3N.js} +6 -6
  42. package/dist/{chunk-VWCXW2E7.js → chunk-HWCCCQNX.js} +1 -1
  43. package/dist/{chunk-7DYBLXYA.js → chunk-HYGZEMX6.js} +3 -3
  44. package/dist/chunk-IJYGIDF4.js +186 -0
  45. package/dist/{chunk-4W4VLAPJ.js → chunk-IQWN5JCP.js} +11 -11
  46. package/dist/{chunk-GZYBXISR.js → chunk-IUE7SSKV.js} +9 -9
  47. package/dist/{chunk-IBGIOBEE.js → chunk-IWDLU6K3.js} +68 -5
  48. package/dist/{chunk-XCJN5IJU.js → chunk-IYNJ6YPZ.js} +4 -4
  49. package/dist/{chunk-JAU72XNY.js → chunk-J64T55EI.js} +3 -3
  50. package/dist/{chunk-2BBLFX75.js → chunk-J6MPGQTS.js} +5 -5
  51. package/dist/chunk-JORED7EX.js +44 -0
  52. package/dist/{chunk-6SDEP3AJ.js → chunk-JUKMK5Y4.js} +8 -8
  53. package/dist/{chunk-IBRALRBR.js → chunk-JW3YWBVB.js} +15 -14
  54. package/dist/{chunk-L3BLXZG7.js → chunk-KAPJINKN.js} +30 -69
  55. package/dist/{chunk-2B73ZPOK.js → chunk-KN35K52N.js} +3 -3
  56. package/dist/{chunk-C34ZXZ7O.js → chunk-KUA4OJ5Y.js} +24 -11
  57. package/dist/chunk-KYUB6QDC.js +72 -0
  58. package/dist/{chunk-67WMNWEE.js → chunk-LLJNQKQW.js} +12 -10
  59. package/dist/chunk-LZSEQW6A.js +57 -0
  60. package/dist/{chunk-ZANLILYD.js → chunk-M2IFVFWU.js} +2 -2
  61. package/dist/chunk-M2UD3LPU.js +88 -0
  62. package/dist/{chunk-WOKKRCJ5.js → chunk-MBKQHGA7.js} +15 -14
  63. package/dist/{chunk-P7266HLM.js → chunk-MPNJLASA.js} +2 -2
  64. package/dist/{chunk-6GFRNVYR.js → chunk-MZGQNL3Y.js} +10 -10
  65. package/dist/{chunk-QZVW3AAK.js → chunk-N5FLEO7W.js} +33 -31
  66. package/dist/{chunk-3JNKMP3B.js → chunk-O4NWQT6I.js} +4 -4
  67. package/dist/{chunk-PFNSLWU5.js → chunk-OHKJ7PQF.js} +33 -31
  68. package/dist/{chunk-VRZP76YM.js → chunk-P63GXC37.js} +4 -1
  69. package/dist/{chunk-XTMJ7XDT.js → chunk-POMLXPMY.js} +1 -1
  70. package/dist/{chunk-QQNQ7SJW.js → chunk-QBFBRV2B.js} +10 -4
  71. package/dist/{chunk-3UUPUE3O.js → chunk-R3T7CLQ2.js} +84 -60
  72. package/dist/{chunk-23WOO7TX.js → chunk-R7YOCSNV.js} +10 -10
  73. package/dist/{chunk-2CD5RS6M.js → chunk-RKBXZN3A.js} +23 -2
  74. package/dist/{chunk-OG5UUPN7.js → chunk-RKKOYPRA.js} +14 -14
  75. package/dist/{chunk-52FUZI6K.js → chunk-RMLC67LF.js} +1 -1
  76. package/dist/{chunk-XMSXXAHW.js → chunk-ROYSX2S5.js} +2 -2
  77. package/dist/{chunk-PV6LR5P5.js → chunk-RVK72CZX.js} +9605 -14776
  78. package/dist/{chunk-FLKWCIZH.js → chunk-S2HEXIWI.js} +5 -5
  79. package/dist/{chunk-UZ3TUTRV.js → chunk-S67KYG37.js} +1 -1
  80. package/dist/{chunk-JWA5I3SR.js → chunk-SD4I7ZO4.js} +16 -18
  81. package/dist/{chunk-Z527N6YQ.js → chunk-SKAMFC7A.js} +12 -12
  82. package/dist/{chunk-MQLUAEOC.js → chunk-SRYEJNES.js} +2 -2
  83. package/dist/{chunk-BRGDSBJE.js → chunk-SYE6T2EB.js} +12 -12
  84. package/dist/{chunk-GXW6K4YJ.js → chunk-T57LYLZT.js} +1 -1
  85. package/dist/{chunk-ZXYDQ3TZ.js → chunk-T7FEBKXN.js} +48 -15
  86. package/dist/{chunk-IXXDFY73.js → chunk-TIQ2PKDW.js} +3 -3
  87. package/dist/{chunk-QILIYSJF.js → chunk-TLX72JTG.js} +1 -1
  88. package/dist/{chunk-TYM6OUIT.js → chunk-TOY6QKOH.js} +12 -12
  89. package/dist/{chunk-IZSHAIJ7.js → chunk-TRETHTQO.js} +12 -12
  90. package/dist/{chunk-3VPVG5SU.js → chunk-U44DJXQP.js} +10 -6
  91. package/dist/{chunk-PNQDPDRC.js → chunk-UA7ZXYDR.js} +1 -1
  92. package/dist/{chunk-OXXKQCSV.js → chunk-UBOQLVT2.js} +4 -4
  93. package/dist/{chunk-QGQ5CCCG.js → chunk-UMS2MFPZ.js} +2 -2
  94. package/dist/{chunk-QHJ6DQ2R.js → chunk-US7ECLD7.js} +55 -13
  95. package/dist/{chunk-EETY4LF7.js → chunk-UZ2XCLYS.js} +8 -8
  96. package/dist/chunk-V35JG4JB.js +2667 -0
  97. package/dist/{chunk-N3X6Q4YT.js → chunk-VOOAPROD.js} +3 -3
  98. package/dist/{chunk-SAEFPSB6.js → chunk-W66O5E25.js} +21 -11
  99. package/dist/{chunk-KBG47GHP.js → chunk-WMYE35PX.js} +15 -11
  100. package/dist/{chunk-5NGR67U5.js → chunk-XBJVAEEO.js} +32 -5
  101. package/dist/chunk-XHJBS436.js +4217 -0
  102. package/dist/{chunk-GBPP5P7X.js → chunk-XTBDCR27.js} +4 -4
  103. package/dist/{chunk-4UNXBNE2.js → chunk-XTFDJI3T.js} +11 -11
  104. package/dist/{chunk-UXGETRP4.js → chunk-XYURS6EN.js} +13 -12
  105. package/dist/{chunk-RPLINGVB.js → chunk-Y6GZHWSJ.js} +6 -6
  106. package/dist/{chunk-2ZGIZPDG.js → chunk-YCWYO6TQ.js} +41 -38
  107. package/dist/{chunk-66SXUJCA.js → chunk-YH5MVY2U.js} +10 -8
  108. package/dist/{chunk-AOHZU2BM.js → chunk-YNE3RP52.js} +1 -1
  109. package/dist/{chunk-GOYRYZ2R.js → chunk-ZHH37KZL.js} +72 -20
  110. package/dist/{chunk-ZGDGW2V3.js → chunk-ZIVJBOO3.js} +2 -2
  111. package/dist/{chunk-GHB6AYCP.js → chunk-ZVUL7QYY.js} +29 -28
  112. package/dist/index.js +11559 -6213
  113. package/dist/mcp/analyze-cli.js +10 -9
  114. package/dist/mcp/cli.js +41 -38
  115. package/dist/mcp/server.js +1142 -495
  116. package/dist/mcp/worker.js +61 -57
  117. package/dist/probes/installer.js +19 -19
  118. package/dist/workers/project-snapshot-persist-worker.js +28 -9
  119. package/dist/workers/review-graph-persist-worker.js +1 -1
  120. package/docs/configuration.md +11 -0
  121. package/docs/engineering-principles.md +32 -0
  122. package/docs/lsp-capability-matrix.md +1 -1
  123. package/docs/lsp-idle-eviction.md +15 -26
  124. package/docs/pi-lens-fixer.md +117 -13
  125. package/docs/pi-lens-merge-policy.md +109 -11
  126. package/docs/pi-lens-monitor.md +8 -2
  127. package/docs/pi-lens-retro.md +4 -1
  128. package/docs/pi-lens-reviewer.md +114 -3
  129. package/docs/pi-lens-subagent.md +27 -14
  130. package/docs/release-qa-baseline.md +3 -1
  131. package/docs/servercapabilities.md +9 -19
  132. package/package.json +7 -5
  133. package/scripts/download-grammars.js +40 -7
  134. package/scripts/lib/latency-log-phases.mjs +95 -0
  135. package/scripts/rpc-load-check.mjs +570 -81
  136. package/dist/chunk-3WA4HP4I.js +0 -55
  137. package/dist/chunk-466Z26MG.js +0 -30
  138. package/dist/chunk-5JM2524W.js +0 -84
  139. package/dist/chunk-CO2G5PHH.js +0 -84
  140. package/dist/chunk-LOP6GRPH.js +0 -31
  141. package/dist/chunk-UOPVJQ4N.js +0 -103
  142. package/dist/chunk-XPZPXCBV.js +0 -28
  143. /package/dist/{chunk-FC4RP4I2.js → chunk-6HWVI6MI.js} +0 -0
@@ -1,71 +1,73 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolveManagedToolClient
4
- } from "./chunk-GOYRYZ2R.js";
4
+ } from "./chunk-ZHH37KZL.js";
5
5
  import {
6
6
  biomeConfigArgs
7
- } from "./chunk-RPLINGVB.js";
8
- import "./chunk-ESBQHFMJ.js";
9
- import "./chunk-34WSVGEM.js";
10
- import "./chunk-VWCXW2E7.js";
11
- import "./chunk-ZXYDQ3TZ.js";
12
- import "./chunk-724UL2TJ.js";
13
- import "./chunk-QOZXJ4NA.js";
14
- import "./chunk-P7266HLM.js";
15
- import "./chunk-52FUZI6K.js";
16
- import "./chunk-SAEFPSB6.js";
17
- import "./chunk-GAEGEPOC.js";
7
+ } from "./chunk-Y6GZHWSJ.js";
8
+ import "./chunk-3DA2JDOL.js";
9
+ import "./chunk-HWCCCQNX.js";
10
+ import "./chunk-CUHSHSB6.js";
11
+ import "./chunk-UA7ZXYDR.js";
12
+ import "./chunk-T7FEBKXN.js";
13
+ import "./chunk-MPNJLASA.js";
14
+ import "./chunk-GXFV6MYU.js";
15
+ import "./chunk-FM4RDMKT.js";
16
+ import "./chunk-RMLC67LF.js";
17
+ import "./chunk-W66O5E25.js";
18
+ import "./chunk-7HXE67BN.js";
18
19
  import "./chunk-Z3CCVDUB.js";
19
20
  import "./chunk-2BEMIWEW.js";
20
- import "./chunk-66VMUL7Q.js";
21
+ import "./chunk-IJYGIDF4.js";
22
+ import "./chunk-GAQ7OQG6.js";
21
23
  import {
22
24
  resolveToolCwd
23
- } from "./chunk-Q7DUK4LX.js";
25
+ } from "./chunk-DEL2U6CM.js";
24
26
  import {
25
27
  findGlobalBinary,
26
28
  findLocalBinAt,
27
29
  localBinPath
28
- } from "./chunk-AW7R2GWG.js";
30
+ } from "./chunk-5VSF4UUQ.js";
29
31
  import {
30
32
  getIsolatedNpxSpawnOptions,
31
33
  probeToolAsync
32
- } from "./chunk-RWWYJ623.js";
34
+ } from "./chunk-3KAZU3VR.js";
33
35
  import {
34
36
  classifyProbeFailure,
35
37
  createAvailabilityLatch,
36
38
  describeInstallAttempt,
37
39
  logAvailabilityDecision,
38
40
  startHostStallSampler
39
- } from "./chunk-VRZP76YM.js";
40
- import "./chunk-QOBUHWHX.js";
41
- import "./chunk-QILIYSJF.js";
42
- import "./chunk-6C7JWPCP.js";
43
- import "./chunk-5NGR67U5.js";
41
+ } from "./chunk-P63GXC37.js";
42
+ import "./chunk-HRNHZA3N.js";
43
+ import "./chunk-TLX72JTG.js";
44
+ import "./chunk-DGUKIYSI.js";
45
+ import "./chunk-XBJVAEEO.js";
44
46
  import {
45
47
  getGlobalPiLensDir,
46
48
  safeSpawnAsync
47
- } from "./chunk-C34ZXZ7O.js";
49
+ } from "./chunk-KUA4OJ5Y.js";
48
50
  import {
49
51
  createSingleFlight
50
52
  } from "./chunk-BW5KFIQC.js";
51
53
  import "./chunk-QYF5S6P6.js";
52
54
  import {
53
55
  isFileKind
54
- } from "./chunk-PHDMFAKM.js";
55
- import "./chunk-2BBLFX75.js";
56
- import "./chunk-XVF2VVXP.js";
57
- import "./chunk-ZANLILYD.js";
56
+ } from "./chunk-DUO2TU77.js";
57
+ import "./chunk-J6MPGQTS.js";
58
+ import "./chunk-5HSRT26B.js";
59
+ import "./chunk-M2IFVFWU.js";
58
60
  import "./chunk-2EECBNC5.js";
59
- import "./chunk-JAU72XNY.js";
61
+ import "./chunk-J64T55EI.js";
60
62
  import {
61
63
  createSubsystemLogger
62
- } from "./chunk-XTMJ7XDT.js";
64
+ } from "./chunk-POMLXPMY.js";
63
65
  import "./chunk-JMYYOTQG.js";
64
- import "./chunk-QQNQ7SJW.js";
65
- import "./chunk-AOHZU2BM.js";
66
+ import "./chunk-QBFBRV2B.js";
67
+ import "./chunk-YNE3RP52.js";
66
68
  import "./chunk-LJDODBBZ.js";
67
69
  import "./chunk-ABBOA7UD.js";
68
- import "./chunk-N2H3ZPZY.js";
70
+ import "./chunk-3RKP3FMS.js";
69
71
  import "./chunk-NXL4FFQQ.js";
70
72
 
71
73
  // dist/clients/biome-client.js
@@ -4,10 +4,10 @@ import {
4
4
  getOwnedLspService,
5
5
  peekOwnedLspService,
6
6
  resetOwnedLspService
7
- } from "./chunk-MQLUAEOC.js";
8
- import "./chunk-QQNQ7SJW.js";
9
- import "./chunk-AOHZU2BM.js";
10
- import "./chunk-N2H3ZPZY.js";
7
+ } from "./chunk-SRYEJNES.js";
8
+ import "./chunk-QBFBRV2B.js";
9
+ import "./chunk-YNE3RP52.js";
10
+ import "./chunk-3RKP3FMS.js";
11
11
  import "./chunk-NXL4FFQQ.js";
12
12
  export {
13
13
  configureLspServiceLifecycle,
@@ -2,57 +2,59 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  createAvailabilityChecker,
4
4
  resolveAvailableOrInstall
5
- } from "./chunk-GOYRYZ2R.js";
5
+ } from "./chunk-ZHH37KZL.js";
6
6
  import {
7
7
  ruffConfigArgs
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";
14
- import "./chunk-QOZXJ4NA.js";
15
- import "./chunk-P7266HLM.js";
16
- import "./chunk-52FUZI6K.js";
17
- import "./chunk-SAEFPSB6.js";
18
- import "./chunk-GAEGEPOC.js";
8
+ } from "./chunk-Y6GZHWSJ.js";
9
+ import "./chunk-3DA2JDOL.js";
10
+ import "./chunk-HWCCCQNX.js";
11
+ import "./chunk-CUHSHSB6.js";
12
+ import "./chunk-UA7ZXYDR.js";
13
+ import "./chunk-T7FEBKXN.js";
14
+ import "./chunk-MPNJLASA.js";
15
+ import "./chunk-GXFV6MYU.js";
16
+ import "./chunk-FM4RDMKT.js";
17
+ import "./chunk-RMLC67LF.js";
18
+ import "./chunk-W66O5E25.js";
19
+ import "./chunk-7HXE67BN.js";
19
20
  import "./chunk-Z3CCVDUB.js";
20
21
  import "./chunk-2BEMIWEW.js";
21
- import "./chunk-66VMUL7Q.js";
22
+ import "./chunk-IJYGIDF4.js";
23
+ import "./chunk-GAQ7OQG6.js";
22
24
  import {
23
25
  resolveToolCwd
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";
26
+ } from "./chunk-DEL2U6CM.js";
27
+ import "./chunk-5VSF4UUQ.js";
28
+ import "./chunk-3KAZU3VR.js";
29
+ import "./chunk-P63GXC37.js";
30
+ import "./chunk-HRNHZA3N.js";
31
+ import "./chunk-TLX72JTG.js";
32
+ import "./chunk-DGUKIYSI.js";
33
+ import "./chunk-XBJVAEEO.js";
32
34
  import {
33
35
  safeSpawnAsync
34
- } from "./chunk-C34ZXZ7O.js";
36
+ } from "./chunk-KUA4OJ5Y.js";
35
37
  import "./chunk-BW5KFIQC.js";
36
38
  import "./chunk-QYF5S6P6.js";
37
39
  import {
38
40
  isFileKind
39
- } from "./chunk-PHDMFAKM.js";
40
- import "./chunk-2BBLFX75.js";
41
- import "./chunk-XVF2VVXP.js";
42
- import "./chunk-ZANLILYD.js";
41
+ } from "./chunk-DUO2TU77.js";
42
+ import "./chunk-J6MPGQTS.js";
43
+ import "./chunk-5HSRT26B.js";
44
+ import "./chunk-M2IFVFWU.js";
43
45
  import "./chunk-2EECBNC5.js";
44
- import "./chunk-JAU72XNY.js";
46
+ import "./chunk-J64T55EI.js";
45
47
  import {
46
48
  createSubsystemLogger
47
- } from "./chunk-XTMJ7XDT.js";
49
+ } from "./chunk-POMLXPMY.js";
48
50
  import "./chunk-JMYYOTQG.js";
49
- import "./chunk-QQNQ7SJW.js";
50
- import "./chunk-AOHZU2BM.js";
51
+ import "./chunk-QBFBRV2B.js";
52
+ import "./chunk-YNE3RP52.js";
51
53
  import "./chunk-LJDODBBZ.js";
52
54
  import "./chunk-ABBOA7UD.js";
53
55
  import {
54
56
  pathsEqual
55
- } from "./chunk-N2H3ZPZY.js";
57
+ } from "./chunk-3RKP3FMS.js";
56
58
  import "./chunk-NXL4FFQQ.js";
57
59
 
58
60
  // dist/clients/ruff-client.js
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  logLatency
4
- } from "./chunk-QQNQ7SJW.js";
4
+ } from "./chunk-QBFBRV2B.js";
5
5
 
6
6
  // dist/clients/dispatch/runners/utils/availability-policy.js
7
7
  function describeProbeEvidence(result, command) {
@@ -75,6 +75,9 @@ function classifyProbeFailure(result, options = {}) {
75
75
  if (result.spawnFailure?.kind === "tool-not-found") {
76
76
  return { outcome: "missing", cause: "not-found", evidence };
77
77
  }
78
+ if (result.spawnFailure?.kind === "trust-refused") {
79
+ return { outcome: "missing", cause: "policy-denied", evidence };
80
+ }
78
81
  if (result.failure === "timeout" || result.failure === "aborted" || result.failure === "signal" || result.spawnFailure?.kind === "killed" || result.spawnFailure?.kind === "timeout" || errorCode === "EAGAIN" || errorCode === "EBUSY") {
79
82
  const stalled = (options.hostStallMs ?? 0) >= HOST_STALL_EVIDENCE_MS;
80
83
  return {
@@ -5,7 +5,7 @@ import {
5
5
  getMaxLogSizeMB,
6
6
  getTurnId,
7
7
  isTestMode
8
- } from "./chunk-AOHZU2BM.js";
8
+ } from "./chunk-YNE3RP52.js";
9
9
 
10
10
  // dist/clients/extension-log.js
11
11
  import * as path from "node:path";
@@ -5,10 +5,10 @@ import {
5
5
  getMaxLogSizeMB,
6
6
  getTurnId,
7
7
  isTestMode
8
- } from "./chunk-AOHZU2BM.js";
8
+ } from "./chunk-YNE3RP52.js";
9
9
  import {
10
10
  normalizeLoggedPath
11
- } from "./chunk-N2H3ZPZY.js";
11
+ } from "./chunk-3RKP3FMS.js";
12
12
 
13
13
  // dist/clients/latency-logger.js
14
14
  import * as path from "node:path";
@@ -54,7 +54,8 @@ var LAST_PHASE_EXCLUDED = /* @__PURE__ */ new Set([
54
54
  "session_handoff_adopt",
55
55
  "session_store_action",
56
56
  "session_end_fence_rollup",
57
- "format_late_resync_chained"
57
+ "format_late_resync_chained",
58
+ "lsp_created_import_scan_rollup"
58
59
  ]);
59
60
  var liveBrackets = /* @__PURE__ */ new Map();
60
61
  var closedBrackets = [];
@@ -102,7 +103,12 @@ function logLatency(entry) {
102
103
  const ts = (/* @__PURE__ */ new Date()).toISOString();
103
104
  if (entry.type === "phase" && entry.phase && !LAST_PHASE_EXCLUDED.has(entry.phase)) {
104
105
  recentPhases = [
105
- { phase: entry.phase, ts, metadata: entry.metadata },
106
+ {
107
+ phase: entry.phase,
108
+ ts,
109
+ ...entry.toolName !== void 0 && { toolName: entry.toolName },
110
+ ...entry.metadata !== void 0 && { metadata: entry.metadata }
111
+ },
106
112
  ...recentPhases
107
113
  ].slice(0, RECENT_PHASE_CAP);
108
114
  }
@@ -1,83 +1,86 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
- import {
3
- nestedWorktreeOffsets
4
- } from "./chunk-VCHXCQFG.js";
5
2
  import {
6
3
  formatToolFailure
7
- } from "./chunk-2CD5RS6M.js";
8
- import "./chunk-UZ3TUTRV.js";
4
+ } from "./chunk-RKBXZN3A.js";
5
+ import "./chunk-S67KYG37.js";
6
+ import {
7
+ scannerReportParentDir
8
+ } from "./chunk-ED36RF6Y.js";
9
+ import {
10
+ nestedWorktreeOffsets
11
+ } from "./chunk-BWD5EPKO.js";
9
12
  import {
10
13
  createAvailabilityChecker,
11
14
  findManagedNodeToolBinary,
12
15
  resolveAvailableOrInstall
13
- } from "./chunk-GOYRYZ2R.js";
14
- import "./chunk-RPLINGVB.js";
15
- import "./chunk-PNQDPDRC.js";
16
- import "./chunk-ESBQHFMJ.js";
17
- import "./chunk-34WSVGEM.js";
18
- import "./chunk-VWCXW2E7.js";
19
- import "./chunk-ZXYDQ3TZ.js";
20
- import "./chunk-724UL2TJ.js";
21
- import "./chunk-QOZXJ4NA.js";
22
- import "./chunk-P7266HLM.js";
23
- import "./chunk-52FUZI6K.js";
24
- import "./chunk-SAEFPSB6.js";
16
+ } from "./chunk-ZHH37KZL.js";
17
+ import "./chunk-Y6GZHWSJ.js";
18
+ import "./chunk-3DA2JDOL.js";
19
+ import "./chunk-HWCCCQNX.js";
20
+ import "./chunk-CUHSHSB6.js";
21
+ import "./chunk-UA7ZXYDR.js";
22
+ import "./chunk-T7FEBKXN.js";
23
+ import "./chunk-MPNJLASA.js";
24
+ import "./chunk-GXFV6MYU.js";
25
+ import "./chunk-FM4RDMKT.js";
26
+ import "./chunk-RMLC67LF.js";
27
+ import "./chunk-W66O5E25.js";
25
28
  import {
26
29
  getJscpdMaxEntriesDerived
27
- } from "./chunk-GAEGEPOC.js";
30
+ } from "./chunk-7HXE67BN.js";
28
31
  import "./chunk-Z3CCVDUB.js";
29
32
  import "./chunk-2BEMIWEW.js";
30
- import "./chunk-66VMUL7Q.js";
31
- import "./chunk-Q7DUK4LX.js";
33
+ import "./chunk-IJYGIDF4.js";
34
+ import "./chunk-GAQ7OQG6.js";
35
+ import "./chunk-DEL2U6CM.js";
32
36
  import {
33
37
  findNodeToolBinary
34
- } from "./chunk-AW7R2GWG.js";
38
+ } from "./chunk-5VSF4UUQ.js";
35
39
  import {
36
40
  getIsolatedNpxSpawnOptions
37
- } from "./chunk-RWWYJ623.js";
38
- import "./chunk-VRZP76YM.js";
39
- import "./chunk-QOBUHWHX.js";
40
- import "./chunk-QILIYSJF.js";
41
- import "./chunk-6C7JWPCP.js";
41
+ } from "./chunk-3KAZU3VR.js";
42
+ import "./chunk-P63GXC37.js";
43
+ import "./chunk-HRNHZA3N.js";
44
+ import "./chunk-TLX72JTG.js";
45
+ import "./chunk-DGUKIYSI.js";
42
46
  import {
43
47
  shouldRecurseIntoDir,
44
48
  walkTreeStackSync
45
- } from "./chunk-5NGR67U5.js";
49
+ } from "./chunk-XBJVAEEO.js";
46
50
  import {
47
51
  getExcludedDirGlobs,
48
52
  getProjectIgnoreGlobs,
49
53
  getProjectIgnoreMatcher,
50
54
  safeSpawnAsync
51
- } from "./chunk-C34ZXZ7O.js";
55
+ } from "./chunk-KUA4OJ5Y.js";
52
56
  import "./chunk-BW5KFIQC.js";
53
57
  import "./chunk-QYF5S6P6.js";
54
- import "./chunk-PHDMFAKM.js";
55
- import "./chunk-2BBLFX75.js";
56
- import "./chunk-XVF2VVXP.js";
57
- import "./chunk-ZANLILYD.js";
58
+ import "./chunk-DUO2TU77.js";
59
+ import "./chunk-J6MPGQTS.js";
60
+ import "./chunk-5HSRT26B.js";
61
+ import "./chunk-M2IFVFWU.js";
58
62
  import "./chunk-2EECBNC5.js";
59
63
  import {
60
64
  incrementDegradationCount
61
- } from "./chunk-JAU72XNY.js";
65
+ } from "./chunk-J64T55EI.js";
62
66
  import {
63
67
  createSubsystemLogger
64
- } from "./chunk-XTMJ7XDT.js";
68
+ } from "./chunk-POMLXPMY.js";
65
69
  import "./chunk-JMYYOTQG.js";
66
- import "./chunk-QQNQ7SJW.js";
67
- import "./chunk-AOHZU2BM.js";
70
+ import "./chunk-QBFBRV2B.js";
71
+ import "./chunk-YNE3RP52.js";
68
72
  import "./chunk-LJDODBBZ.js";
69
73
  import "./chunk-ABBOA7UD.js";
70
74
  import {
71
75
  isAtOrAboveHomeDir,
72
76
  isFullyQualified,
73
77
  toPosix
74
- } from "./chunk-N2H3ZPZY.js";
78
+ } from "./chunk-3RKP3FMS.js";
75
79
  import "./chunk-NXL4FFQQ.js";
76
80
 
77
81
  // dist/clients/jscpd-client.js
78
82
  import * as fs from "node:fs";
79
83
  import { mkdtempSync } from "node:fs";
80
- import * as os from "node:os";
81
84
  import * as path from "node:path";
82
85
  var EMPTY_RESULT = {
83
86
  success: false,
@@ -146,6 +149,9 @@ var JscpdClient = class {
146
149
  // its own cwd via findNodeToolBinary.
147
150
  jscpdManagedPath = null;
148
151
  inFlight = /* @__PURE__ */ new Map();
152
+ // Pending availability probes. A scan holds no `inFlight` entry until its
153
+ // own probe settles, so `shutdown()` must see the probe too (#4505).
154
+ probing = /* @__PURE__ */ new Set();
149
155
  log;
150
156
  constructor(verbose = false) {
151
157
  this.log = verbose ? createSubsystemLogger("jscpd") : () => {
@@ -155,9 +161,20 @@ var JscpdClient = class {
155
161
  * Wait for scans already started by this client to settle. Test owners use
156
162
  * this as the lifecycle barrier before removing fixture roots; the scan
157
163
  * promise includes the jscpd child and its report-directory cleanup.
164
+ *
165
+ * A scan registers in `inFlight` only after its availability probe settles,
166
+ * and the session_start task probes once before `scan()` probes again. The
167
+ * loop therefore repeats until a pass finds no probe and no scan. Both sets
168
+ * drop an entry before its promise settles, so an empty pass ends the loop
169
+ * and a pass over pending work never spins. The wait is bounded by the work
170
+ * already started: each probe by `probeTimeout` (1.5 s, tool install off in
171
+ * tests) and each scan by `SCAN_TIMEOUT_MS` (30 s); the loop adds none of its
172
+ * own and ends once the client is idle.
158
173
  */
159
174
  async shutdown() {
160
- await Promise.allSettled(this.inFlight.values());
175
+ do {
176
+ await Promise.allSettled([...this.probing, ...this.inFlight.values()]);
177
+ } while (this.probing.size > 0 || this.inFlight.size > 0);
161
178
  }
162
179
  /**
163
180
  * Fast recursive source file presence check.
@@ -201,7 +218,14 @@ var JscpdClient = class {
201
218
  /**
202
219
  * Check if jscpd is available, auto-install if not
203
220
  */
204
- async ensureAvailable() {
221
+ ensureAvailable() {
222
+ const probe = this.probeAvailable().finally(() => {
223
+ this.probing.delete(probe);
224
+ });
225
+ this.probing.add(probe);
226
+ return probe;
227
+ }
228
+ async probeAvailable() {
205
229
  const resolved = await resolveAvailableOrInstall(jscpdAvailability, "jscpd", process.cwd());
206
230
  if (!resolved)
207
231
  return false;
@@ -268,27 +292,27 @@ var JscpdClient = class {
268
292
  }
269
293
  async runScan(cwd, minLines, minTokens, isTsProject) {
270
294
  const scannedAt = (/* @__PURE__ */ new Date()).toISOString();
271
- const outDir = mkdtempSync(`${os.tmpdir()}${path.sep}pi-lens-jscpd-`);
272
- const baseIgnores = [
273
- ...getExcludedDirGlobs(),
274
- ...getProjectIgnoreGlobs(cwd),
275
- "**/*.md",
276
- "**/*.txt",
277
- "**/*.json",
278
- "**/*.yaml",
279
- "**/*.yml",
280
- "**/*.toml",
281
- "**/*.lock",
282
- "**/*.test.*",
283
- "**/*.spec.*",
284
- "**/*.poc.test.*",
285
- "**/__tests__/**",
286
- "**/tests/**"
287
- ];
288
- if (isTsProject) {
289
- baseIgnores.push("**/*.js", "**/*.jsx");
290
- }
295
+ const outDir = mkdtempSync(path.join(scannerReportParentDir(), "pi-lens-jscpd-"));
291
296
  try {
297
+ const baseIgnores = [
298
+ ...getExcludedDirGlobs(),
299
+ ...getProjectIgnoreGlobs(cwd),
300
+ "**/*.md",
301
+ "**/*.txt",
302
+ "**/*.json",
303
+ "**/*.yaml",
304
+ "**/*.yml",
305
+ "**/*.toml",
306
+ "**/*.lock",
307
+ "**/*.test.*",
308
+ "**/*.spec.*",
309
+ "**/*.poc.test.*",
310
+ "**/__tests__/**",
311
+ "**/tests/**"
312
+ ];
313
+ if (isTsProject) {
314
+ baseIgnores.push("**/*.js", "**/*.jsx");
315
+ }
292
316
  const bin = await findNodeToolBinary("jscpd", cwd);
293
317
  const { cmd, prefix } = bin ? { cmd: bin, prefix: [] } : this.jscpdManagedPath ? { cmd: this.jscpdManagedPath, prefix: [] } : { cmd: "npx", prefix: ["jscpd"] };
294
318
  const config = readProjectJscpdConfig(cwd);
@@ -2,20 +2,20 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  AgentBehaviorClient,
4
4
  agentBehaviorClient
5
- } from "./chunk-ZGDGW2V3.js";
6
- import "./chunk-IBGIOBEE.js";
7
- import "./chunk-C34ZXZ7O.js";
8
- import "./chunk-2BBLFX75.js";
9
- import "./chunk-XVF2VVXP.js";
5
+ } from "./chunk-ZIVJBOO3.js";
6
+ import "./chunk-IWDLU6K3.js";
7
+ import "./chunk-KUA4OJ5Y.js";
8
+ import "./chunk-J6MPGQTS.js";
9
+ import "./chunk-5HSRT26B.js";
10
10
  import "./chunk-2EECBNC5.js";
11
- import "./chunk-JAU72XNY.js";
12
- import "./chunk-XTMJ7XDT.js";
11
+ import "./chunk-J64T55EI.js";
12
+ import "./chunk-POMLXPMY.js";
13
13
  import "./chunk-JMYYOTQG.js";
14
- import "./chunk-QQNQ7SJW.js";
15
- import "./chunk-AOHZU2BM.js";
14
+ import "./chunk-QBFBRV2B.js";
15
+ import "./chunk-YNE3RP52.js";
16
16
  import "./chunk-LJDODBBZ.js";
17
17
  import "./chunk-ABBOA7UD.js";
18
- import "./chunk-N2H3ZPZY.js";
18
+ import "./chunk-3RKP3FMS.js";
19
19
  import "./chunk-NXL4FFQQ.js";
20
20
  export {
21
21
  AgentBehaviorClient,
@@ -2,13 +2,18 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  classifyRunOutcome,
4
4
  firstOutputLine
5
- } from "./chunk-UZ3TUTRV.js";
5
+ } from "./chunk-S67KYG37.js";
6
6
  import {
7
7
  incrementDegradationCount,
8
8
  truncateForLedger
9
- } from "./chunk-JAU72XNY.js";
9
+ } from "./chunk-J64T55EI.js";
10
10
 
11
11
  // dist/clients/dispatch/types.js
12
+ function spanOverlapsModifiedRanges(startLine, endLine, ranges) {
13
+ if (!ranges || ranges.length === 0)
14
+ return true;
15
+ return ranges.some((r) => startLine <= r.end && endLine >= r.start);
16
+ }
12
17
  var RUNNER_SKIP_REASONS = [
13
18
  "no-files-matched",
14
19
  "configured-non-biome-linter",
@@ -36,6 +41,20 @@ function findingsResult(diagnostics, verdict) {
36
41
  function hasUsableResult(result) {
37
42
  return result.status === "succeeded" || result.status === "failed" && result.failureKind === BLOCKING_DIAGNOSTICS_FAILURE_KIND;
38
43
  }
44
+ function reachedNoVerdict(result) {
45
+ if (result.inconclusive === true)
46
+ return true;
47
+ switch (result.status) {
48
+ case "failed":
49
+ return !hasUsableResult(result);
50
+ case "deferred":
51
+ return true;
52
+ case "skipped":
53
+ return !isRunnerSkipReason(result.skipReason);
54
+ default:
55
+ return false;
56
+ }
57
+ }
39
58
 
40
59
  // dist/clients/dispatch/runners/utils/tool-failure.js
41
60
  function describeEnding(input) {
@@ -156,10 +175,12 @@ function finishParsedRun(input) {
156
175
  }
157
176
 
158
177
  export {
178
+ spanOverlapsModifiedRanges,
159
179
  isRunnerSkipReason,
160
180
  isRunnerClaimSource,
161
181
  findingsResult,
162
182
  hasUsableResult,
183
+ reachedNoVerdict,
163
184
  formatToolFailure,
164
185
  skipUnlessToolRan,
165
186
  parseToolRun,
@@ -2,48 +2,48 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  HardFailureStamps
4
4
  } from "./chunk-7U2IDNXN.js";
5
- import {
6
- getScratchTreeFnmatchPatterns
7
- } from "./chunk-VCHXCQFG.js";
8
5
  import {
9
6
  formatToolFailure
10
- } from "./chunk-2CD5RS6M.js";
7
+ } from "./chunk-RKBXZN3A.js";
11
8
  import {
12
9
  firstOutputLine,
13
10
  spawnFailedWithNoOutput
14
- } from "./chunk-UZ3TUTRV.js";
11
+ } from "./chunk-S67KYG37.js";
12
+ import {
13
+ getScratchTreeFnmatchPatterns
14
+ } from "./chunk-BWD5EPKO.js";
15
15
  import {
16
16
  listNestedLinkedWorktreeRoots
17
- } from "./chunk-PNQDPDRC.js";
17
+ } from "./chunk-UA7ZXYDR.js";
18
18
  import {
19
19
  extractTomlTableSection,
20
20
  parseTomlStringArray
21
- } from "./chunk-P7266HLM.js";
21
+ } from "./chunk-MPNJLASA.js";
22
22
  import {
23
23
  VENV_BIN_DIRS,
24
24
  findLocalBinsAt
25
- } from "./chunk-AW7R2GWG.js";
25
+ } from "./chunk-5VSF4UUQ.js";
26
26
  import {
27
27
  probeToolAsync
28
- } from "./chunk-RWWYJ623.js";
28
+ } from "./chunk-3KAZU3VR.js";
29
29
  import {
30
30
  classifyProbeFailure,
31
31
  createAvailabilityLatch,
32
32
  logAvailabilityDecision,
33
33
  startHostStallSampler
34
- } from "./chunk-VRZP76YM.js";
34
+ } from "./chunk-P63GXC37.js";
35
35
  import {
36
36
  safeSpawnAsync
37
- } from "./chunk-C34ZXZ7O.js";
37
+ } from "./chunk-KUA4OJ5Y.js";
38
38
  import {
39
39
  incrementDegradationCount
40
- } from "./chunk-JAU72XNY.js";
40
+ } from "./chunk-J64T55EI.js";
41
41
  import {
42
42
  createSubsystemLogger
43
- } from "./chunk-XTMJ7XDT.js";
43
+ } from "./chunk-POMLXPMY.js";
44
44
  import {
45
45
  findNearestMarkerRoot
46
- } from "./chunk-N2H3ZPZY.js";
46
+ } from "./chunk-3RKP3FMS.js";
47
47
 
48
48
  // dist/clients/dead-code-client.js
49
49
  import * as fs from "node:fs";
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  recordDegradationOnce
4
- } from "./chunk-JAU72XNY.js";
4
+ } from "./chunk-J64T55EI.js";
5
5
 
6
6
  // dist/clients/deadline-utils.js
7
7
  function combineAbortSignals(...signals) {