pi-lens 4.4.1 → 4.4.3
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.
- package/CHANGELOG.md +88 -0
- package/config/dependency-cruiser-eager-allowlist.json +3 -1
- package/dist/{chunk-BJF25SUG.js → chunk-23WOO7TX.js} +11 -10
- package/dist/{chunk-WATC3IQR.js → chunk-2B73ZPOK.js} +3 -3
- package/dist/{chunk-N2IRDBZI.js → chunk-2BBLFX75.js} +101 -11
- package/dist/{chunk-TA5L5KWQ.js → chunk-2CD5RS6M.js} +2 -2
- package/dist/{chunk-3TTPKMEF.js → chunk-2VUQMUMT.js} +38 -37
- package/dist/{chunk-5JHXUETW.js → chunk-3EFKIGZN.js} +3 -3
- package/dist/chunk-3JNKMP3B.js +17 -0
- package/dist/{chunk-6P54TMWL.js → chunk-3VPVG5SU.js} +6 -6
- package/dist/{chunk-ZETYB3XG.js → chunk-3W7IEVVL.js} +44 -28
- package/dist/chunk-3YN6V5TV.js +85 -0
- package/dist/chunk-466Z26MG.js +30 -0
- package/dist/{chunk-PCHDGUKT.js → chunk-4UNXBNE2.js} +12 -11
- package/dist/{chunk-J7WJZ6W7.js → chunk-4W4VLAPJ.js} +12 -11
- package/dist/{chunk-F5VLZHUW.js → chunk-52FUZI6K.js} +4 -2
- package/dist/{chunk-H5EV3VMF.js → chunk-5NGR67U5.js} +2 -2
- package/dist/{chunk-CBD2B5CP.js → chunk-5UCAH366.js} +21 -20
- package/dist/{chunk-BHWHXMQ2.js → chunk-67WMNWEE.js} +9 -8
- package/dist/{chunk-USHG4DLH.js → chunk-6C7JWPCP.js} +7 -7
- package/dist/{chunk-VPWKF3GN.js → chunk-6GFRNVYR.js} +11 -10
- package/dist/{chunk-3JL6IFD7.js → chunk-6SDEP3AJ.js} +9 -8
- package/dist/{chunk-NJF2X5XF.js → chunk-6STA6Z7I.js} +19 -17
- package/dist/{chunk-KJCWXUUS.js → chunk-724UL2TJ.js} +6 -4
- package/dist/{chunk-MQA2YBAH.js → chunk-76MWC2K6.js} +3 -3
- package/dist/{chunk-YLN4K6WD.js → chunk-77M37OKR.js} +10 -8
- package/dist/{chunk-XHSCVSOL.js → chunk-7DYBLXYA.js} +3 -3
- package/dist/{chunk-OC7LYAU5.js → chunk-AB3YYG6N.js} +24 -10
- package/dist/{chunk-LD7WFTRX.js → chunk-ACXEQZOU.js} +16 -16
- package/dist/{chunk-VSMJK3ZJ.js → chunk-AOHZU2BM.js} +1 -1
- package/dist/{chunk-T4QZ6FEH.js → chunk-AW7R2GWG.js} +65 -8
- package/dist/{chunk-GAYGGICG.js → chunk-BKE7E7TC.js} +10 -9
- package/dist/{chunk-EUT3B22Y.js → chunk-BRGDSBJE.js} +13 -12
- package/dist/{chunk-T54VJRAD.js → chunk-C34ZXZ7O.js} +55 -11
- package/dist/{chunk-UGSMCQ4D.js → chunk-CHOW74WE.js} +1 -1
- package/dist/{chunk-H2W2AXD3.js → chunk-CMMHNUZ2.js} +66 -58
- package/dist/chunk-CSHFH5IN.js +17 -0
- package/dist/chunk-EC47DWFA.js +56 -0
- package/dist/{chunk-KJN4IOEJ.js → chunk-EJIUXPBX.js} +1 -1
- package/dist/{chunk-IQZXOZ7S.js → chunk-EU63SDCG.js} +720 -334
- package/dist/{chunk-LNOMA3MP.js → chunk-FCSOVF55.js} +107 -3
- package/dist/{chunk-CFYISHUW.js → chunk-FLKWCIZH.js} +8 -5
- package/dist/{chunk-OYTMZXRF.js → chunk-FMSO6RDZ.js} +16 -14
- package/dist/{chunk-IUKPRZER.js → chunk-GAEGEPOC.js} +2 -2
- package/dist/{chunk-6XX5HCLK.js → chunk-GBPP5P7X.js} +4 -4
- package/dist/{chunk-TQFBZVCG.js → chunk-GXW6K4YJ.js} +1 -1
- package/dist/{chunk-ZZUFZUQZ.js → chunk-H6MF6EVN.js} +331 -107
- package/dist/{chunk-3JSEWUWI.js → chunk-IBGIOBEE.js} +3 -3
- package/dist/chunk-IZSHAIJ7.js +26 -0
- package/dist/{chunk-7ELY2CSM.js → chunk-JAU72XNY.js} +16 -14
- package/dist/chunk-JMYYOTQG.js +77 -0
- package/dist/{chunk-ELVWJYRV.js → chunk-JSQFTSC6.js} +12 -11
- package/dist/{chunk-J6DFZDFA.js → chunk-KBG47GHP.js} +4 -4
- package/dist/chunk-KDERNTCQ.js +28 -0
- package/dist/chunk-KSX3TXSZ.js +69 -0
- package/dist/{chunk-XGUL4SLQ.js → chunk-L3BLXZG7.js} +2 -2
- package/dist/chunk-LOP6GRPH.js +31 -0
- package/dist/{chunk-MTDRLSI7.js → chunk-M6HSLBWY.js} +1064 -986
- package/dist/chunk-MQLUAEOC.js +162 -0
- package/dist/{chunk-3MRXIJ6I.js → chunk-MRXKYPCS.js} +2 -2
- package/dist/{chunk-D65GOCJB.js → chunk-MXGY6KPT.js} +19 -16
- package/dist/{chunk-G3RLJYA2.js → chunk-N2H3ZPZY.js} +47 -1
- package/dist/{chunk-HREZQCT3.js → chunk-N3X6Q4YT.js} +3 -3
- package/dist/{chunk-HSIRMK2D.js → chunk-OCAGUNBC.js} +15 -15
- package/dist/{chunk-ZOEYVXSV.js → chunk-OXXKQCSV.js} +6 -6
- package/dist/{chunk-S6AMWKPC.js → chunk-P7266HLM.js} +2 -2
- package/dist/{chunk-64LU2OVH.js → chunk-PHDMFAKM.js} +12 -2
- package/dist/{chunk-IMSQR4WO.js → chunk-PNQDPDRC.js} +1 -1
- package/dist/{chunk-IUR76K6A.js → chunk-Q7DUK4LX.js} +5 -5
- package/dist/{chunk-CULQYFLU.js → chunk-QGQ5CCCG.js} +2 -2
- package/dist/{chunk-UEAHAMEI.js → chunk-QHJ6DQ2R.js} +11 -11
- package/dist/{chunk-BNKLYOOO.js → chunk-QILIYSJF.js} +1 -1
- package/dist/{chunk-VYKKMYVT.js → chunk-QOBUHWHX.js} +11 -6
- package/dist/{chunk-3PNFWVHT.js → chunk-QQNQ7SJW.js} +2 -75
- package/dist/{chunk-7M4T5N3V.js → chunk-R3PCY3YS.js} +14 -13
- package/dist/{chunk-MGIWSROG.js → chunk-RPLINGVB.js} +7 -7
- package/dist/{chunk-CMU4RMJB.js → chunk-RWWYJ623.js} +10 -1
- package/dist/{chunk-3FERWMCH.js → chunk-RXCOMYPY.js} +27 -26
- package/dist/{chunk-7BX5DWSA.js → chunk-SAEFPSB6.js} +11 -11
- package/dist/{chunk-N7YNJE5R.js → chunk-SQ4TVJBR.js} +10 -10
- package/dist/{chunk-DMS52BEP.js → chunk-SS36ZX4J.js} +9 -7
- package/dist/{chunk-JONGANYH.js → chunk-T6CPIZNT.js} +32 -30
- package/dist/{chunk-6UYA642J.js → chunk-TYM6OUIT.js} +13 -12
- package/dist/{chunk-ALQRYH6O.js → chunk-UXGETRP4.js} +13 -12
- package/dist/{chunk-FGALODG3.js → chunk-UZ3TUTRV.js} +1 -1
- package/dist/{chunk-J3FZR3YY.js → chunk-VCHXCQFG.js} +3 -3
- package/dist/{chunk-3P4PF2BX.js → chunk-VCO24T4L.js} +34 -22
- package/dist/{chunk-O7HZX7CA.js → chunk-VRZP76YM.js} +1 -1
- package/dist/{chunk-VZHJS6DR.js → chunk-VSSBEUFT.js} +16 -15
- package/dist/{chunk-U52SAGRM.js → chunk-VWCXW2E7.js} +1 -1
- package/dist/{chunk-WW5BLB74.js → chunk-WOA4LN2R.js} +2 -2
- package/dist/{chunk-ZMOMPX2Z.js → chunk-WU567RSC.js} +11 -10
- package/dist/{chunk-N77WFUL7.js → chunk-XAGLWMJ4.js} +23 -22
- package/dist/{chunk-WSEWKCXU.js → chunk-XCJN5IJU.js} +4 -4
- package/dist/{chunk-IR6XFA5P.js → chunk-XIJZVPD5.js} +16 -14
- package/dist/{chunk-OYOB3ZFG.js → chunk-XMSXXAHW.js} +2 -2
- package/dist/{chunk-34OCDWOS.js → chunk-XTMJ7XDT.js} +1 -1
- package/dist/{chunk-Z6BB4JLQ.js → chunk-XVF2VVXP.js} +5 -3
- package/dist/{chunk-AFZYMAIV.js → chunk-YIUAVF7E.js} +37 -35
- package/dist/{chunk-NFXP47RV.js → chunk-YSZNHOBY.js} +85 -31
- package/dist/{chunk-V5MEBST3.js → chunk-YYOIQFRS.js} +21 -21
- package/dist/chunk-Z527N6YQ.js +28 -0
- package/dist/{chunk-D6YF5HKX.js → chunk-ZANLILYD.js} +22 -2
- package/dist/{chunk-2UMYMRI3.js → chunk-ZGDGW2V3.js} +2 -2
- package/dist/{chunk-6B5I6ICN.js → chunk-ZHFZWTZV.js} +12 -11
- package/dist/{chunk-OEX24ECI.js → chunk-ZWFS3OEF.js} +51 -41
- package/dist/{chunk-AXKPQ6ZI.js → chunk-ZXYDQ3TZ.js} +5 -5
- package/dist/index.js +73783 -71033
- package/dist/mcp/analyze-cli.js +18 -8
- package/dist/mcp/cli.js +48 -37
- package/dist/mcp/server.js +568 -397
- package/dist/mcp/worker.js +67 -55
- package/dist/probes/installer.js +20 -19
- package/docs/astplayground.md +1 -1
- package/docs/configuration.md +29 -0
- package/docs/dependencies.md +3 -0
- package/docs/features.md +2 -2
- package/docs/globalconfig.md +2 -0
- package/docs/language-coverage.md +2 -1
- package/docs/lsp-capability-matrix.md +29 -7
- package/docs/lsp-idle-eviction.md +38 -47
- package/docs/pi-lens-fixer.md +4 -0
- package/docs/pi-lens-merge-policy.md +17 -4
- package/docs/pi-lens-retro.md +2 -1
- package/docs/pi-lens-reviewer.md +18 -0
- package/docs/pi-lens-subagent.md +7 -0
- package/docs/real-harness.md +17 -0
- package/docs/schema/pi-lens-config-v1.json +37 -2
- package/docs/servercapabilities.md +15 -4
- package/docs/settings.md +2 -1
- package/package.json +1 -1
- package/dist/chunk-2FQ62SPM.js +0 -83
- package/dist/chunk-7AXO3ZDF.js +0 -30
- package/dist/chunk-KMGPUKFD.js +0 -25
- package/dist/chunk-OZJINN4O.js +0 -84
- package/dist/chunk-RJFED73B.js +0 -79
- package/dist/chunk-RTQNRM5X.js +0 -27
- package/dist/chunk-VGEVL5EQ.js +0 -29
- package/dist/chunk-WPE5FPGR.js +0 -54
- package/dist/chunk-Z7QQA2KT.js +0 -27
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
logLatency
|
|
4
|
+
} from "./chunk-QQNQ7SJW.js";
|
|
5
|
+
import {
|
|
6
|
+
getProcessSingleton
|
|
7
|
+
} from "./chunk-AOHZU2BM.js";
|
|
8
|
+
|
|
9
|
+
// dist/clients/lsp/workspace-sweep-hold.js
|
|
10
|
+
var SWEEP_IDLE_SAFETY_MARGIN_MS = 6e4;
|
|
11
|
+
var WORKSPACE_SWEEP_HOLD_FAMILY = "lsp.workspace-sweep-hold";
|
|
12
|
+
var WORKSPACE_SWEEP_HOLD_VERSION = 1;
|
|
13
|
+
function state() {
|
|
14
|
+
return getProcessSingleton(WORKSPACE_SWEEP_HOLD_FAMILY, WORKSPACE_SWEEP_HOLD_VERSION, () => ({ holds: /* @__PURE__ */ new Map(), nextHoldId: 1, idleWaiters: [] }));
|
|
15
|
+
}
|
|
16
|
+
function flushIdleWaitersIfEmpty() {
|
|
17
|
+
const current = state();
|
|
18
|
+
if (current.holds.size > 0)
|
|
19
|
+
return;
|
|
20
|
+
if (current.idleWaiters.length === 0)
|
|
21
|
+
return;
|
|
22
|
+
const waiters = current.idleWaiters;
|
|
23
|
+
current.idleWaiters = [];
|
|
24
|
+
for (const waiter of waiters) {
|
|
25
|
+
try {
|
|
26
|
+
waiter();
|
|
27
|
+
} catch {
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function getWorkspaceSweepMaxHoldAgeMs() {
|
|
32
|
+
return getFullScanWallClockMs() + SWEEP_IDLE_SAFETY_MARGIN_MS;
|
|
33
|
+
}
|
|
34
|
+
function reapStaleHolds() {
|
|
35
|
+
const current = state();
|
|
36
|
+
if (current.holds.size === 0)
|
|
37
|
+
return;
|
|
38
|
+
const maxAgeMs = getWorkspaceSweepMaxHoldAgeMs();
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
for (const [holdId, acquiredAt] of current.holds) {
|
|
41
|
+
const ageMs = now - acquiredAt;
|
|
42
|
+
if (ageMs <= maxAgeMs)
|
|
43
|
+
continue;
|
|
44
|
+
current.holds.delete(holdId);
|
|
45
|
+
logLatency({
|
|
46
|
+
type: "phase",
|
|
47
|
+
phase: "lsp_workspace_sweep_hold_force_released",
|
|
48
|
+
filePath: "",
|
|
49
|
+
durationMs: ageMs,
|
|
50
|
+
metadata: { holdId, maxHoldAgeMs: maxAgeMs }
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
flushIdleWaitersIfEmpty();
|
|
54
|
+
}
|
|
55
|
+
function acquireWorkspaceSweepHold() {
|
|
56
|
+
const current = state();
|
|
57
|
+
const holdId = current.nextHoldId++;
|
|
58
|
+
current.holds.set(holdId, Date.now());
|
|
59
|
+
return () => {
|
|
60
|
+
if (!state().holds.delete(holdId))
|
|
61
|
+
return;
|
|
62
|
+
flushIdleWaitersIfEmpty();
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function isWorkspaceSweepActive() {
|
|
66
|
+
reapStaleHolds();
|
|
67
|
+
return state().holds.size > 0;
|
|
68
|
+
}
|
|
69
|
+
function runWhenWorkspaceSweepIdle(cb) {
|
|
70
|
+
reapStaleHolds();
|
|
71
|
+
const current = state();
|
|
72
|
+
if (current.holds.size === 0) {
|
|
73
|
+
cb();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
current.idleWaiters.push(cb);
|
|
77
|
+
}
|
|
78
|
+
function clearWorkspaceSweepHoldForSessionStart() {
|
|
79
|
+
const current = state();
|
|
80
|
+
if (current.holds.size === 0)
|
|
81
|
+
return;
|
|
82
|
+
logLatency({
|
|
83
|
+
type: "phase",
|
|
84
|
+
phase: "lsp_workspace_sweep_hold_session_reset",
|
|
85
|
+
filePath: "",
|
|
86
|
+
durationMs: 0,
|
|
87
|
+
metadata: { clearedHolds: current.holds.size }
|
|
88
|
+
});
|
|
89
|
+
current.holds.clear();
|
|
90
|
+
flushIdleWaitersIfEmpty();
|
|
91
|
+
}
|
|
92
|
+
function getFullScanWallClockMs() {
|
|
93
|
+
const raw = Number(process.env.PI_LENS_LENS_DIAGNOSTICS_FULL_TIMEOUT_MS);
|
|
94
|
+
return Number.isFinite(raw) && raw > 0 ? raw : 3e5;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// dist/clients/lsp/service-singleton.js
|
|
98
|
+
var LSP_SERVICE_FAMILY = "lsp.service";
|
|
99
|
+
var LSP_SERVICE_VERSION = 2;
|
|
100
|
+
function state2() {
|
|
101
|
+
return getProcessSingleton(LSP_SERVICE_FAMILY, LSP_SERVICE_VERSION, () => ({
|
|
102
|
+
service: null,
|
|
103
|
+
generationHandoff: void 0,
|
|
104
|
+
lifecycle: void 0
|
|
105
|
+
}), (value) => {
|
|
106
|
+
const previous = value;
|
|
107
|
+
const service = previous.service;
|
|
108
|
+
if (!service || typeof service.shutdown !== "function")
|
|
109
|
+
return;
|
|
110
|
+
void Promise.resolve(service.shutdown({
|
|
111
|
+
fast: true,
|
|
112
|
+
reason: "process_singleton_reset"
|
|
113
|
+
})).catch(() => void 0);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function configureLspServiceLifecycle(lifecycle) {
|
|
117
|
+
state2().lifecycle = lifecycle;
|
|
118
|
+
}
|
|
119
|
+
function getOwnedLspService() {
|
|
120
|
+
const current = state2();
|
|
121
|
+
if (!current.lifecycle) {
|
|
122
|
+
throw new Error("LSP service lifecycle is not configured");
|
|
123
|
+
}
|
|
124
|
+
if (!current.service) {
|
|
125
|
+
current.service = current.lifecycle.create(current.generationHandoff);
|
|
126
|
+
}
|
|
127
|
+
return current.service;
|
|
128
|
+
}
|
|
129
|
+
function peekOwnedLspService() {
|
|
130
|
+
return state2().service ?? void 0;
|
|
131
|
+
}
|
|
132
|
+
function resetOwnedLspService(options = {}) {
|
|
133
|
+
const current = state2();
|
|
134
|
+
if (options.reason === "session_start") {
|
|
135
|
+
clearWorkspaceSweepHoldForSessionStart();
|
|
136
|
+
}
|
|
137
|
+
current.lifecycle?.beforeReset(options);
|
|
138
|
+
const retiringService = current.service;
|
|
139
|
+
current.service = null;
|
|
140
|
+
if (!retiringService || !current.lifecycle)
|
|
141
|
+
return;
|
|
142
|
+
const teardown = current.lifecycle.destroy(retiringService, options);
|
|
143
|
+
const pending = current.generationHandoff ? [current.generationHandoff, teardown] : [teardown];
|
|
144
|
+
const handoff = Promise.allSettled(pending).then(() => void 0);
|
|
145
|
+
current.generationHandoff = handoff;
|
|
146
|
+
void handoff.then(() => {
|
|
147
|
+
if (current.generationHandoff === handoff)
|
|
148
|
+
current.generationHandoff = void 0;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export {
|
|
153
|
+
SWEEP_IDLE_SAFETY_MARGIN_MS,
|
|
154
|
+
acquireWorkspaceSweepHold,
|
|
155
|
+
isWorkspaceSweepActive,
|
|
156
|
+
runWhenWorkspaceSweepIdle,
|
|
157
|
+
getFullScanWallClockMs,
|
|
158
|
+
configureLspServiceLifecycle,
|
|
159
|
+
getOwnedLspService,
|
|
160
|
+
peekOwnedLspService,
|
|
161
|
+
resetOwnedLspService
|
|
162
|
+
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
createToolchainAvailability
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7DYBLXYA.js";
|
|
5
5
|
import {
|
|
6
6
|
createSubsystemLogger
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XTMJ7XDT.js";
|
|
8
8
|
|
|
9
9
|
// dist/clients/rust-client.js
|
|
10
10
|
import * as path from "node:path";
|
|
@@ -1,39 +1,42 @@
|
|
|
1
1
|
import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
scannerReportParentDir
|
|
4
|
+
} from "./chunk-CSHFH5IN.js";
|
|
2
5
|
import {
|
|
3
6
|
getScratchTreeDirNames
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VCHXCQFG.js";
|
|
5
8
|
import {
|
|
6
9
|
SecurityScanClient
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-IMSQR4WO.js";
|
|
10
|
+
} from "./chunk-3EFKIGZN.js";
|
|
9
11
|
import {
|
|
10
12
|
resolveOpengrepConfig
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-VWCXW2E7.js";
|
|
14
|
+
import "./chunk-PNQDPDRC.js";
|
|
15
|
+
import "./chunk-RWWYJ623.js";
|
|
16
|
+
import "./chunk-VRZP76YM.js";
|
|
14
17
|
import {
|
|
15
18
|
safeSpawnAsync
|
|
16
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-C34ZXZ7O.js";
|
|
17
20
|
import "./chunk-BW5KFIQC.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-2BBLFX75.js";
|
|
22
|
+
import "./chunk-XVF2VVXP.js";
|
|
20
23
|
import "./chunk-2EECBNC5.js";
|
|
21
24
|
import {
|
|
22
25
|
recordDegradationOnce
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-JAU72XNY.js";
|
|
27
|
+
import "./chunk-XTMJ7XDT.js";
|
|
28
|
+
import "./chunk-JMYYOTQG.js";
|
|
29
|
+
import "./chunk-QQNQ7SJW.js";
|
|
30
|
+
import "./chunk-AOHZU2BM.js";
|
|
27
31
|
import "./chunk-LJDODBBZ.js";
|
|
28
32
|
import "./chunk-ABBOA7UD.js";
|
|
29
33
|
import {
|
|
30
34
|
realpathOrResolve
|
|
31
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-N2H3ZPZY.js";
|
|
32
36
|
import "./chunk-NXL4FFQQ.js";
|
|
33
37
|
|
|
34
38
|
// dist/clients/opengrep-client.js
|
|
35
39
|
import * as fs from "node:fs";
|
|
36
|
-
import * as os from "node:os";
|
|
37
40
|
import * as path from "node:path";
|
|
38
41
|
import { mkdtempSync } from "node:fs";
|
|
39
42
|
var EMPTY_RESULT = {
|
|
@@ -83,7 +86,7 @@ var OpengrepClient = class _OpengrepClient extends SecurityScanClient {
|
|
|
83
86
|
const scannedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
84
87
|
const bin = this.binaryPath ?? "opengrep";
|
|
85
88
|
const resolved = _OpengrepClient.resolveConfig(cwd);
|
|
86
|
-
const outDir = mkdtempSync(path.join(
|
|
89
|
+
const outDir = mkdtempSync(path.join(scannerReportParentDir(), "pi-lens-opengrep-"));
|
|
87
90
|
const reportPath = path.join(outDir, "opengrep-report.json");
|
|
88
91
|
try {
|
|
89
92
|
const result = await safeSpawnAsync(bin, [
|
|
@@ -2321,6 +2321,50 @@ function matchesWorkspaceMemberPattern(pattern, relativePath, dialect, onCap) {
|
|
|
2321
2321
|
const steps = compileWorkspaceMemberPattern(normalized, dialect);
|
|
2322
2322
|
return steps !== void 0 && matchesWorkspaceMemberSteps(steps, relativePath, onCap);
|
|
2323
2323
|
}
|
|
2324
|
+
var HOST_UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
2325
|
+
function hostNormalizeWindowsShellPath(filePath) {
|
|
2326
|
+
if (!filePath.startsWith("/") || filePath.startsWith("//") || filePath.includes("\\")) {
|
|
2327
|
+
return filePath;
|
|
2328
|
+
}
|
|
2329
|
+
const match2 = filePath.match(/^\/(?:mnt\/|cygdrive\/)?([a-z])(?:\/(.*))?$/i);
|
|
2330
|
+
if (!match2)
|
|
2331
|
+
return filePath;
|
|
2332
|
+
const suffix = match2[2]?.replaceAll("/", "\\");
|
|
2333
|
+
return `${match2[1].toUpperCase()}:\\${suffix ?? ""}`;
|
|
2334
|
+
}
|
|
2335
|
+
function normalizeHostToolPath(input, options = {}) {
|
|
2336
|
+
let normalized = input;
|
|
2337
|
+
if (options.normalizeUnicodeSpaces) {
|
|
2338
|
+
normalized = normalized.replace(HOST_UNICODE_SPACES, " ");
|
|
2339
|
+
}
|
|
2340
|
+
if (options.stripAtPrefix && normalized.startsWith("@")) {
|
|
2341
|
+
normalized = normalized.slice(1);
|
|
2342
|
+
}
|
|
2343
|
+
if (process.platform === "win32") {
|
|
2344
|
+
normalized = hostNormalizeWindowsShellPath(normalized);
|
|
2345
|
+
}
|
|
2346
|
+
if (normalized === "~")
|
|
2347
|
+
return os.homedir();
|
|
2348
|
+
if (normalized.startsWith("~/") || process.platform === "win32" && normalized.startsWith("~\\")) {
|
|
2349
|
+
return path2.join(os.homedir(), normalized.slice(2));
|
|
2350
|
+
}
|
|
2351
|
+
if (normalized.startsWith("file://")) {
|
|
2352
|
+
try {
|
|
2353
|
+
return fileURLToPath(normalized);
|
|
2354
|
+
} catch {
|
|
2355
|
+
return normalized;
|
|
2356
|
+
}
|
|
2357
|
+
}
|
|
2358
|
+
return normalized;
|
|
2359
|
+
}
|
|
2360
|
+
function resolveHostToolPath(input, baseDir) {
|
|
2361
|
+
const normalized = normalizeHostToolPath(input, {
|
|
2362
|
+
normalizeUnicodeSpaces: true,
|
|
2363
|
+
stripAtPrefix: true
|
|
2364
|
+
});
|
|
2365
|
+
const normalizedBaseDir = normalizeHostToolPath(baseDir);
|
|
2366
|
+
return path2.isAbsolute(normalized) ? path2.resolve(normalized) : path2.resolve(normalizedBaseDir, normalized);
|
|
2367
|
+
}
|
|
2324
2368
|
|
|
2325
2369
|
export {
|
|
2326
2370
|
minimatch,
|
|
@@ -2348,11 +2392,13 @@ export {
|
|
|
2348
2392
|
isAtOrAboveHomeDir,
|
|
2349
2393
|
homeRelativePath,
|
|
2350
2394
|
isUnderDir,
|
|
2395
|
+
isVendorPath,
|
|
2351
2396
|
isExternalOrVendorFile,
|
|
2352
2397
|
nameMatchesMarkerGlob,
|
|
2353
2398
|
direntsHaveMarkerGlobMatch,
|
|
2354
2399
|
CARGO_WORKSPACE_MEMBER_DIALECT,
|
|
2355
2400
|
UV_WORKSPACE_MEMBERS_DIALECT,
|
|
2356
2401
|
UV_WORKSPACE_EXCLUDE_DIALECT,
|
|
2357
|
-
matchesWorkspaceMemberPattern
|
|
2402
|
+
matchesWorkspaceMemberPattern,
|
|
2403
|
+
resolveHostToolPath
|
|
2358
2404
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
createSubsystemLogger
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-XTMJ7XDT.js";
|
|
5
|
+
import "./chunk-AOHZU2BM.js";
|
|
6
|
+
import "./chunk-N2H3ZPZY.js";
|
|
7
7
|
import "./chunk-NXL4FFQQ.js";
|
|
8
8
|
|
|
9
9
|
// dist/clients/metrics-client.js
|
|
@@ -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-J3FZR3YY.js";
|
|
8
5
|
import {
|
|
9
6
|
formatToolFailure
|
|
10
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2CD5RS6M.js";
|
|
11
8
|
import {
|
|
12
9
|
firstOutputLine,
|
|
13
10
|
spawnFailedWithNoOutput
|
|
14
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UZ3TUTRV.js";
|
|
12
|
+
import {
|
|
13
|
+
getScratchTreeFnmatchPatterns
|
|
14
|
+
} from "./chunk-VCHXCQFG.js";
|
|
15
15
|
import {
|
|
16
16
|
listNestedLinkedWorktreeRoots
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PNQDPDRC.js";
|
|
18
18
|
import {
|
|
19
19
|
extractTomlTableSection,
|
|
20
20
|
parseTomlStringArray
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-P7266HLM.js";
|
|
22
22
|
import {
|
|
23
23
|
VENV_BIN_DIRS,
|
|
24
24
|
findLocalBinsAt
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-AW7R2GWG.js";
|
|
26
26
|
import {
|
|
27
27
|
probeToolAsync
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-RWWYJ623.js";
|
|
29
29
|
import {
|
|
30
30
|
classifyProbeFailure,
|
|
31
31
|
createAvailabilityLatch,
|
|
32
32
|
logAvailabilityDecision,
|
|
33
33
|
startHostStallSampler
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VRZP76YM.js";
|
|
35
35
|
import {
|
|
36
36
|
safeSpawnAsync
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-C34ZXZ7O.js";
|
|
38
38
|
import {
|
|
39
39
|
incrementDegradationCount
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-JAU72XNY.js";
|
|
41
41
|
import {
|
|
42
42
|
createSubsystemLogger
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-XTMJ7XDT.js";
|
|
44
44
|
import {
|
|
45
45
|
findNearestMarkerRoot
|
|
46
|
-
} from "./chunk-
|
|
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
|
-
}).
|
|
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-D6YF5HKX.js";
|
|
5
2
|
import {
|
|
6
3
|
classifyProbeFailure,
|
|
7
4
|
installRetryDelayMs
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VRZP76YM.js";
|
|
9
6
|
import {
|
|
10
7
|
safeSpawnAsync
|
|
11
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C34ZXZ7O.js";
|
|
9
|
+
import {
|
|
10
|
+
assertInstallAllowed
|
|
11
|
+
} from "./chunk-ZANLILYD.js";
|
|
12
12
|
import {
|
|
13
13
|
logExtension
|
|
14
|
-
} from "./chunk-
|
|
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-
|
|
4
|
+
} from "./chunk-XTMJ7XDT.js";
|
|
5
5
|
import {
|
|
6
6
|
findNearestMarkerRoot,
|
|
7
7
|
isAtOrAboveHomeDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-N2H3ZPZY.js";
|
|
9
9
|
|
|
10
10
|
// dist/clients/cargo-manifest.js
|
|
11
11
|
import { readFile } from "node:fs/promises";
|
|
@@ -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-
|
|
4
|
+
} from "./chunk-XVF2VVXP.js";
|
|
5
5
|
import {
|
|
6
6
|
isWindowsPath
|
|
7
|
-
} from "./chunk-
|
|
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,
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
rootMarkersForFile
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QOBUHWHX.js";
|
|
5
5
|
import {
|
|
6
6
|
createGenerationMap,
|
|
7
7
|
createGenerationSource
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C34ZXZ7O.js";
|
|
9
9
|
import {
|
|
10
10
|
getDegradationLedgerGeneration,
|
|
11
11
|
recordDegradationOnce
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-JAU72XNY.js";
|
|
13
13
|
import {
|
|
14
14
|
logExtension
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XTMJ7XDT.js";
|
|
16
16
|
import {
|
|
17
17
|
isAtOrAboveHomeDir,
|
|
18
18
|
isRealGitMarker,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
isWindowsPath,
|
|
21
21
|
nameMatchesMarkerGlob,
|
|
22
22
|
normalizeEphemeralMapKey
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-N2H3ZPZY.js";
|
|
24
24
|
|
|
25
25
|
// dist/clients/tool-cwd.js
|
|
26
26
|
import * as os from "node:os";
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
FactStore,
|
|
4
4
|
getFactStoreEvictionReporter,
|
|
5
5
|
setFactStoreEvictionReporter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CHOW74WE.js";
|
|
7
7
|
import "./chunk-ABBOA7UD.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-N2H3ZPZY.js";
|
|
9
9
|
import "./chunk-NXL4FFQQ.js";
|
|
10
10
|
export {
|
|
11
11
|
FactStore,
|
|
@@ -6,26 +6,26 @@ import {
|
|
|
6
6
|
EXTENSION_TO_GRAMMAR,
|
|
7
7
|
getUserRuleRoot,
|
|
8
8
|
ruleCorpusFingerprintForCycle
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-724UL2TJ.js";
|
|
10
10
|
import {
|
|
11
11
|
getPackageRoot,
|
|
12
12
|
js_yaml_default,
|
|
13
13
|
resolvePackagePath
|
|
14
14
|
} from "./chunk-QOZXJ4NA.js";
|
|
15
|
-
import {
|
|
16
|
-
assertInstallAllowed,
|
|
17
|
-
getProjectTrustGeneration
|
|
18
|
-
} from "./chunk-D6YF5HKX.js";
|
|
19
15
|
import {
|
|
20
16
|
transientRetryDelayMs
|
|
21
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-VRZP76YM.js";
|
|
22
18
|
import {
|
|
23
19
|
getProjectIgnoreMatcher,
|
|
24
20
|
isExcludedDirName
|
|
25
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-C34ZXZ7O.js";
|
|
26
22
|
import {
|
|
27
23
|
notifyUserDegradation
|
|
28
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-2BBLFX75.js";
|
|
25
|
+
import {
|
|
26
|
+
assertInstallAllowed,
|
|
27
|
+
getProjectTrustGeneration
|
|
28
|
+
} from "./chunk-ZANLILYD.js";
|
|
29
29
|
import {
|
|
30
30
|
writeFileAtomic
|
|
31
31
|
} from "./chunk-2EECBNC5.js";
|
|
@@ -36,20 +36,20 @@ import {
|
|
|
36
36
|
incrementDegradationCount,
|
|
37
37
|
recordDegradation,
|
|
38
38
|
recordDegradationOnce
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-JAU72XNY.js";
|
|
40
40
|
import {
|
|
41
41
|
createNdjsonLogger,
|
|
42
42
|
getGlobalPiLensLogDir,
|
|
43
43
|
getMaxLogSizeMB,
|
|
44
44
|
isTestMode
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-AOHZU2BM.js";
|
|
46
46
|
import {
|
|
47
47
|
BoundedFifoMap
|
|
48
48
|
} from "./chunk-ABBOA7UD.js";
|
|
49
49
|
import {
|
|
50
50
|
normalizeFilePath,
|
|
51
51
|
normalizeLoggedPath
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-N2H3ZPZY.js";
|
|
53
53
|
|
|
54
54
|
// dist/clients/tree-sitter-logger.js
|
|
55
55
|
import * as path from "node:path";
|
|
@@ -2,7 +2,7 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
|
|
|
2
2
|
import {
|
|
3
3
|
collectSourceFiles,
|
|
4
4
|
collectSourceFilesAsync
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6C7JWPCP.js";
|
|
6
6
|
|
|
7
7
|
// dist/clients/scan-utils.js
|
|
8
8
|
function getSourceFiles(dir, _isTsProject) {
|