pi-lens 4.4.3 → 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.
- package/CHANGELOG.md +281 -0
- package/README.md +13 -1
- package/dist/{chunk-SS36ZX4J.js → chunk-24AKHFGP.js} +6 -6
- package/dist/{chunk-JSQFTSC6.js → chunk-2FN63LPV.js} +11 -11
- package/dist/{chunk-5UCAH366.js → chunk-2KXTHF3M.js} +20 -20
- package/dist/{chunk-EU63SDCG.js → chunk-3DA2JDOL.js} +367 -281
- package/dist/{chunk-RWWYJ623.js → chunk-3KAZU3VR.js} +1 -1
- package/dist/chunk-3PTHXJXR.js +28 -0
- package/dist/chunk-3QED2P4V.js +31 -0
- package/dist/{chunk-N2H3ZPZY.js → chunk-3RKP3FMS.js} +1 -0
- package/dist/{chunk-XVF2VVXP.js → chunk-5HSRT26B.js} +2 -2
- package/dist/{chunk-MXGY6KPT.js → chunk-5IUSNGOC.js} +15 -15
- package/dist/{chunk-EJIUXPBX.js → chunk-5OFV52AM.js} +1 -1
- package/dist/{chunk-AW7R2GWG.js → chunk-5VSF4UUQ.js} +12 -7
- package/dist/{chunk-6STA6Z7I.js → chunk-5WRPDP2A.js} +18 -18
- package/dist/{chunk-YIUAVF7E.js → chunk-6DLWKFEX.js} +35 -34
- package/dist/{chunk-WOA4LN2R.js → chunk-7D6L4MTX.js} +2 -2
- package/dist/{chunk-GAEGEPOC.js → chunk-7HXE67BN.js} +2 -2
- package/dist/chunk-AGSS7277.js +84 -0
- package/dist/{chunk-R3PCY3YS.js → chunk-AMERCH6V.js} +13 -13
- package/dist/{chunk-WU567RSC.js → chunk-ATKJFDQN.js} +14 -10
- package/dist/{chunk-VSSBEUFT.js → chunk-AWSCPCN2.js} +16 -16
- package/dist/{chunk-VCHXCQFG.js → chunk-BWD5EPKO.js} +3 -3
- package/dist/{chunk-H6MF6EVN.js → chunk-CT4MN5IU.js} +1200 -230
- package/dist/{chunk-FCSOVF55.js → chunk-CUHSHSB6.js} +6 -6
- package/dist/{chunk-CHOW74WE.js → chunk-CYRKQRPM.js} +7 -10
- package/dist/{chunk-Q7DUK4LX.js → chunk-DEL2U6CM.js} +5 -5
- package/dist/{chunk-6C7JWPCP.js → chunk-DGUKIYSI.js} +26 -23
- package/dist/{chunk-PHDMFAKM.js → chunk-DUO2TU77.js} +2 -2
- package/dist/{chunk-MRXKYPCS.js → chunk-EBC36LNN.js} +2 -2
- package/dist/{chunk-CSHFH5IN.js → chunk-ED36RF6Y.js} +1 -1
- package/dist/{chunk-76MWC2K6.js → chunk-EUXZEFTV.js} +90 -97
- package/dist/{chunk-QOZXJ4NA.js → chunk-FM4RDMKT.js} +11 -8
- package/dist/{chunk-ACXEQZOU.js → chunk-GAQ7OQG6.js} +31 -28
- package/dist/{chunk-XAGLWMJ4.js → chunk-GL5LUMZE.js} +23 -23
- package/dist/{chunk-BKE7E7TC.js → chunk-GMX5OS7B.js} +9 -9
- package/dist/{chunk-ZHFZWTZV.js → chunk-GSLNCYGG.js} +11 -11
- package/dist/{chunk-3W7IEVVL.js → chunk-GSM5UU7A.js} +26 -34
- package/dist/{chunk-724UL2TJ.js → chunk-GXFV6MYU.js} +3 -3
- package/dist/chunk-HAD7QRQI.js +30 -0
- package/dist/{chunk-QOBUHWHX.js → chunk-HRNHZA3N.js} +6 -6
- package/dist/{chunk-VWCXW2E7.js → chunk-HWCCCQNX.js} +1 -1
- package/dist/{chunk-7DYBLXYA.js → chunk-HYGZEMX6.js} +3 -3
- package/dist/chunk-IJYGIDF4.js +186 -0
- package/dist/{chunk-4W4VLAPJ.js → chunk-IQWN5JCP.js} +11 -11
- package/dist/{chunk-SQ4TVJBR.js → chunk-IUE7SSKV.js} +7 -7
- package/dist/{chunk-IBGIOBEE.js → chunk-IWDLU6K3.js} +68 -5
- package/dist/{chunk-XCJN5IJU.js → chunk-IYNJ6YPZ.js} +4 -4
- package/dist/{chunk-JAU72XNY.js → chunk-J64T55EI.js} +3 -3
- package/dist/{chunk-2BBLFX75.js → chunk-J6MPGQTS.js} +5 -5
- package/dist/chunk-JORED7EX.js +44 -0
- package/dist/{chunk-6SDEP3AJ.js → chunk-JUKMK5Y4.js} +8 -8
- package/dist/{chunk-FMSO6RDZ.js → chunk-JW3YWBVB.js} +15 -15
- package/dist/{chunk-L3BLXZG7.js → chunk-KAPJINKN.js} +30 -69
- package/dist/{chunk-2B73ZPOK.js → chunk-KN35K52N.js} +3 -3
- package/dist/{chunk-C34ZXZ7O.js → chunk-KUA4OJ5Y.js} +24 -11
- package/dist/chunk-KYUB6QDC.js +72 -0
- package/dist/{chunk-67WMNWEE.js → chunk-LLJNQKQW.js} +12 -10
- package/dist/chunk-LZSEQW6A.js +57 -0
- package/dist/{chunk-ZANLILYD.js → chunk-M2IFVFWU.js} +2 -2
- package/dist/chunk-M2UD3LPU.js +88 -0
- package/dist/{chunk-XIJZVPD5.js → chunk-MBKQHGA7.js} +15 -15
- package/dist/{chunk-P7266HLM.js → chunk-MPNJLASA.js} +2 -2
- package/dist/{chunk-6GFRNVYR.js → chunk-MZGQNL3Y.js} +10 -10
- package/dist/{chunk-ZWFS3OEF.js → chunk-N5FLEO7W.js} +33 -32
- package/dist/{chunk-3JNKMP3B.js → chunk-O4NWQT6I.js} +4 -4
- package/dist/{chunk-T6CPIZNT.js → chunk-OHKJ7PQF.js} +33 -32
- package/dist/{chunk-VRZP76YM.js → chunk-P63GXC37.js} +4 -1
- package/dist/{chunk-XTMJ7XDT.js → chunk-POMLXPMY.js} +1 -1
- package/dist/{chunk-QQNQ7SJW.js → chunk-QBFBRV2B.js} +10 -4
- package/dist/{chunk-CMMHNUZ2.js → chunk-R3T7CLQ2.js} +60 -38
- package/dist/{chunk-23WOO7TX.js → chunk-R7YOCSNV.js} +10 -10
- package/dist/{chunk-2CD5RS6M.js → chunk-RKBXZN3A.js} +23 -2
- package/dist/{chunk-OCAGUNBC.js → chunk-RKKOYPRA.js} +12 -12
- package/dist/{chunk-52FUZI6K.js → chunk-RMLC67LF.js} +1 -1
- package/dist/{chunk-XMSXXAHW.js → chunk-ROYSX2S5.js} +2 -2
- package/dist/{chunk-M6HSLBWY.js → chunk-RVK72CZX.js} +6507 -7514
- package/dist/{chunk-FLKWCIZH.js → chunk-S2HEXIWI.js} +5 -5
- package/dist/{chunk-UZ3TUTRV.js → chunk-S67KYG37.js} +1 -1
- package/dist/{chunk-VCO24T4L.js → chunk-SD4I7ZO4.js} +14 -14
- package/dist/{chunk-Z527N6YQ.js → chunk-SKAMFC7A.js} +12 -12
- package/dist/{chunk-MQLUAEOC.js → chunk-SRYEJNES.js} +2 -2
- package/dist/{chunk-BRGDSBJE.js → chunk-SYE6T2EB.js} +12 -12
- package/dist/{chunk-GXW6K4YJ.js → chunk-T57LYLZT.js} +1 -1
- package/dist/{chunk-ZXYDQ3TZ.js → chunk-T7FEBKXN.js} +48 -15
- package/dist/{chunk-3EFKIGZN.js → chunk-TIQ2PKDW.js} +3 -3
- package/dist/{chunk-QILIYSJF.js → chunk-TLX72JTG.js} +1 -1
- package/dist/{chunk-TYM6OUIT.js → chunk-TOY6QKOH.js} +12 -12
- package/dist/{chunk-IZSHAIJ7.js → chunk-TRETHTQO.js} +12 -12
- package/dist/{chunk-3VPVG5SU.js → chunk-U44DJXQP.js} +10 -6
- package/dist/{chunk-PNQDPDRC.js → chunk-UA7ZXYDR.js} +1 -1
- package/dist/{chunk-OXXKQCSV.js → chunk-UBOQLVT2.js} +4 -4
- package/dist/{chunk-QGQ5CCCG.js → chunk-UMS2MFPZ.js} +2 -2
- package/dist/{chunk-QHJ6DQ2R.js → chunk-US7ECLD7.js} +55 -13
- package/dist/{chunk-AB3YYG6N.js → chunk-UZ2XCLYS.js} +8 -8
- package/dist/chunk-V35JG4JB.js +2667 -0
- package/dist/{chunk-N3X6Q4YT.js → chunk-VOOAPROD.js} +3 -3
- package/dist/{chunk-SAEFPSB6.js → chunk-W66O5E25.js} +21 -11
- package/dist/{chunk-KBG47GHP.js → chunk-WMYE35PX.js} +15 -11
- package/dist/{chunk-5NGR67U5.js → chunk-XBJVAEEO.js} +32 -5
- package/dist/{chunk-YYOIQFRS.js → chunk-XHJBS436.js} +122 -44
- package/dist/{chunk-GBPP5P7X.js → chunk-XTBDCR27.js} +4 -4
- package/dist/{chunk-4UNXBNE2.js → chunk-XTFDJI3T.js} +11 -11
- package/dist/{chunk-UXGETRP4.js → chunk-XYURS6EN.js} +13 -12
- package/dist/{chunk-RPLINGVB.js → chunk-Y6GZHWSJ.js} +6 -6
- package/dist/{chunk-2VUQMUMT.js → chunk-YCWYO6TQ.js} +41 -38
- package/dist/{chunk-77M37OKR.js → chunk-YH5MVY2U.js} +7 -7
- package/dist/{chunk-AOHZU2BM.js → chunk-YNE3RP52.js} +1 -1
- package/dist/{chunk-YSZNHOBY.js → chunk-ZHH37KZL.js} +12 -12
- package/dist/{chunk-ZGDGW2V3.js → chunk-ZIVJBOO3.js} +2 -2
- package/dist/{chunk-RXCOMYPY.js → chunk-ZVUL7QYY.js} +29 -28
- package/dist/index.js +11052 -5852
- package/dist/mcp/analyze-cli.js +10 -9
- package/dist/mcp/cli.js +41 -38
- package/dist/mcp/server.js +1120 -474
- package/dist/mcp/worker.js +61 -58
- package/dist/probes/installer.js +19 -19
- package/dist/workers/project-snapshot-persist-worker.js +28 -9
- package/dist/workers/review-graph-persist-worker.js +1 -1
- package/docs/configuration.md +11 -0
- package/docs/engineering-principles.md +32 -0
- package/docs/lsp-capability-matrix.md +1 -1
- package/docs/lsp-idle-eviction.md +15 -26
- package/docs/pi-lens-fixer.md +117 -13
- package/docs/pi-lens-merge-policy.md +97 -7
- package/docs/pi-lens-monitor.md +8 -2
- package/docs/pi-lens-retro.md +4 -1
- package/docs/pi-lens-reviewer.md +112 -4
- package/docs/pi-lens-subagent.md +22 -14
- package/docs/release-qa-baseline.md +3 -1
- package/docs/servercapabilities.md +9 -19
- package/package.json +7 -5
- package/scripts/download-grammars.js +40 -7
- package/scripts/lib/latency-log-phases.mjs +95 -0
- package/scripts/rpc-load-check.mjs +570 -81
- package/dist/chunk-3YN6V5TV.js +0 -85
- package/dist/chunk-466Z26MG.js +0 -30
- package/dist/chunk-EC47DWFA.js +0 -56
- package/dist/chunk-KDERNTCQ.js +0 -28
- package/dist/chunk-KSX3TXSZ.js +0 -69
- package/dist/chunk-LOP6GRPH.js +0 -31
- package/dist/chunk-UOPVJQ4N.js +0 -103
- /package/dist/{chunk-FC4RP4I2.js → chunk-6HWVI6MI.js} +0 -0
|
@@ -6,26 +6,26 @@ import {
|
|
|
6
6
|
EXTENSION_TO_GRAMMAR,
|
|
7
7
|
getUserRuleRoot,
|
|
8
8
|
ruleCorpusFingerprintForCycle
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GXFV6MYU.js";
|
|
10
10
|
import {
|
|
11
11
|
getPackageRoot,
|
|
12
12
|
js_yaml_default,
|
|
13
13
|
resolvePackagePath
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FM4RDMKT.js";
|
|
15
15
|
import {
|
|
16
16
|
transientRetryDelayMs
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-P63GXC37.js";
|
|
18
18
|
import {
|
|
19
19
|
getProjectIgnoreMatcher,
|
|
20
20
|
isExcludedDirName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-KUA4OJ5Y.js";
|
|
22
22
|
import {
|
|
23
23
|
notifyUserDegradation
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-J6MPGQTS.js";
|
|
25
25
|
import {
|
|
26
26
|
assertInstallAllowed,
|
|
27
27
|
getProjectTrustGeneration
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-M2IFVFWU.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-J64T55EI.js";
|
|
40
40
|
import {
|
|
41
41
|
createNdjsonLogger,
|
|
42
42
|
getGlobalPiLensLogDir,
|
|
43
43
|
getMaxLogSizeMB,
|
|
44
44
|
isTestMode
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-YNE3RP52.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-3RKP3FMS.js";
|
|
53
53
|
|
|
54
54
|
// dist/clients/tree-sitter-logger.js
|
|
55
55
|
import * as path from "node:path";
|
|
@@ -319,17 +319,18 @@ function shortHash(hash) {
|
|
|
319
319
|
const hex = hash.startsWith("sha256:") ? hash.slice("sha256:".length) : hash;
|
|
320
320
|
return `sha256:${hex.slice(0, 12)}\u2026`;
|
|
321
321
|
}
|
|
322
|
-
async function downloadGrammarDetailed(destDir, filename) {
|
|
322
|
+
async function downloadGrammarDetailed(destDir, filename, options = {}) {
|
|
323
323
|
if (isVendoredGrammar(filename))
|
|
324
324
|
return vendoredGrammarRefusal(filename);
|
|
325
|
+
const stall = options.stallMs === void 0 ? void 0 : armStallBound(options.stallMs);
|
|
325
326
|
try {
|
|
326
327
|
fs.mkdirSync(destDir, { recursive: true });
|
|
327
|
-
const res = await fetch(grammarSourceUrl(filename));
|
|
328
|
+
const res = await fetch(grammarSourceUrl(filename), stall ? { signal: stall.signal } : void 0);
|
|
328
329
|
if (!res.ok) {
|
|
329
330
|
const retryable = res.status !== 404 && res.status !== 410;
|
|
330
331
|
return { ok: false, retryable };
|
|
331
332
|
}
|
|
332
|
-
const data =
|
|
333
|
+
const data = await readResponseBody(res, stall);
|
|
333
334
|
if (!hasWasmMagic(data)) {
|
|
334
335
|
return { ok: false, retryable: true, reason: describeNonWasmBody(data) };
|
|
335
336
|
}
|
|
@@ -358,7 +359,42 @@ async function downloadGrammarDetailed(destDir, filename) {
|
|
|
358
359
|
writeFileAtomic(path2.join(destDir, filename), data, { bestEffort: false });
|
|
359
360
|
return { ok: true, retryable: true };
|
|
360
361
|
} catch {
|
|
362
|
+
if (stall?.signal.aborted) {
|
|
363
|
+
return {
|
|
364
|
+
ok: false,
|
|
365
|
+
retryable: true,
|
|
366
|
+
reason: `No bytes arrived for ${options.stallMs} ms \u2014 a stalled transfer.`
|
|
367
|
+
};
|
|
368
|
+
}
|
|
361
369
|
return { ok: false, retryable: true };
|
|
370
|
+
} finally {
|
|
371
|
+
stall?.dispose();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
var GRAMMAR_STALL_MS = 15e3;
|
|
375
|
+
function armStallBound(ms) {
|
|
376
|
+
const controller = new AbortController();
|
|
377
|
+
const timer = setTimeout(() => controller.abort(), ms);
|
|
378
|
+
timer.unref();
|
|
379
|
+
return {
|
|
380
|
+
signal: controller.signal,
|
|
381
|
+
touch: () => {
|
|
382
|
+
timer.refresh();
|
|
383
|
+
},
|
|
384
|
+
dispose: () => clearTimeout(timer)
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
async function readResponseBody(res, stall) {
|
|
388
|
+
if (!stall || !res.body)
|
|
389
|
+
return Buffer.from(await res.arrayBuffer());
|
|
390
|
+
const reader = res.body.getReader();
|
|
391
|
+
const chunks = [];
|
|
392
|
+
for (; ; ) {
|
|
393
|
+
const { done, value } = await reader.read();
|
|
394
|
+
if (done)
|
|
395
|
+
return Buffer.concat(chunks);
|
|
396
|
+
stall.touch();
|
|
397
|
+
chunks.push(value);
|
|
362
398
|
}
|
|
363
399
|
}
|
|
364
400
|
|
|
@@ -2110,6 +2146,8 @@ var TreeSitterClient = class _TreeSitterClient {
|
|
|
2110
2146
|
* (the `transientRetryDelayMs` shape from availability-policy.ts) instead
|
|
2111
2147
|
* of latching for the process lifetime. */
|
|
2112
2148
|
grammarRetryAtMs = /* @__PURE__ */ new Map();
|
|
2149
|
+
/** Instance field so a test can shorten it without waiting out the real bound. */
|
|
2150
|
+
grammarStallMs = GRAMMAR_STALL_MS;
|
|
2113
2151
|
/**
|
|
2114
2152
|
* Grammar path → the `size:mtimeMs` stamp at which its wasm preamble was
|
|
2115
2153
|
* verified (#1548). A POSITIVE-only memo, so the steady-state resolve costs
|
|
@@ -2634,6 +2672,10 @@ var TreeSitterClient = class _TreeSitterClient {
|
|
|
2634
2672
|
* `vendor/grammars` comes first because it is the ONLY source for a grammar
|
|
2635
2673
|
* we build ourselves (`VENDORED_GRAMMARS`) — nothing downloads into the
|
|
2636
2674
|
* later dirs for it, so a miss here is a miss everywhere.
|
|
2675
|
+
*
|
|
2676
|
+
* Public so the Vitest grammar prefetch (`tests/support/prewarm-grammars.ts`)
|
|
2677
|
+
* counts a grammar as present exactly where this resolver would find it
|
|
2678
|
+
* (#4342), instead of keeping its own copy of the list.
|
|
2637
2679
|
*/
|
|
2638
2680
|
grammarSourceDirs() {
|
|
2639
2681
|
const dirs = [];
|
|
@@ -2944,7 +2986,7 @@ var TreeSitterClient = class _TreeSitterClient {
|
|
|
2944
2986
|
);
|
|
2945
2987
|
return false;
|
|
2946
2988
|
}
|
|
2947
|
-
const { ok, retryable, reason } = await downloadGrammarDetailed(dir, grammarFile);
|
|
2989
|
+
const { ok, retryable, reason } = await downloadGrammarDetailed(dir, grammarFile, { stallMs: this.grammarStallMs });
|
|
2948
2990
|
if (ok) {
|
|
2949
2991
|
if (!this.grammarsDir)
|
|
2950
2992
|
this.grammarsDir = dir;
|
|
@@ -4,32 +4,32 @@ import {
|
|
|
4
4
|
discoverManagedTool,
|
|
5
5
|
getManagedToolEnvironment,
|
|
6
6
|
resolveAvailableOrInstall
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZHH37KZL.js";
|
|
8
8
|
import {
|
|
9
9
|
mapWithConcurrency
|
|
10
10
|
} from "./chunk-XIMYZ3JA.js";
|
|
11
11
|
import {
|
|
12
12
|
findNodeToolBinary
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5VSF4UUQ.js";
|
|
14
14
|
import {
|
|
15
15
|
getIsolatedNpxSpawnOptions
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-3KAZU3VR.js";
|
|
17
17
|
import {
|
|
18
18
|
createAvailabilityLatch
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-P63GXC37.js";
|
|
20
20
|
import {
|
|
21
21
|
safeSpawnAsync
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KUA4OJ5Y.js";
|
|
23
23
|
import {
|
|
24
24
|
compareOrdinal,
|
|
25
25
|
recordDegradationOnce
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-J64T55EI.js";
|
|
27
27
|
import {
|
|
28
28
|
createSubsystemLogger
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-POMLXPMY.js";
|
|
30
30
|
import {
|
|
31
31
|
isFullyQualified
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-3RKP3FMS.js";
|
|
33
33
|
|
|
34
34
|
// dist/clients/dependency-checker.js
|
|
35
35
|
import * as fs from "node:fs";
|