pi-lens 4.4.0 → 4.4.1

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 (136) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +1 -0
  3. package/dist/chunk-2FQ62SPM.js +83 -0
  4. package/dist/{chunk-6P62QVEA.js → chunk-2UMYMRI3.js} +2 -2
  5. package/dist/{chunk-O6TQT6RI.js → chunk-34OCDWOS.js} +1 -1
  6. package/dist/{chunk-XK4CIILI.js → chunk-3FERWMCH.js} +26 -26
  7. package/dist/{chunk-ZAWW3AF6.js → chunk-3JL6IFD7.js} +8 -8
  8. package/dist/{chunk-OAXNDZJ7.js → chunk-3JSEWUWI.js} +8 -4
  9. package/dist/{chunk-RPD5K5NC.js → chunk-3MRXIJ6I.js} +2 -2
  10. package/dist/{chunk-IVP5KAB7.js → chunk-3P4PF2BX.js} +14 -14
  11. package/dist/{chunk-5THXD6X5.js → chunk-3PNFWVHT.js} +2 -2
  12. package/dist/{chunk-VD4JQCQC.js → chunk-3TTPKMEF.js} +37 -37
  13. package/dist/{chunk-7F72PXY2.js → chunk-5JHXUETW.js} +3 -3
  14. package/dist/{chunk-5ZEJHV35.js → chunk-64LU2OVH.js} +2 -2
  15. package/dist/{chunk-ODEEOXPH.js → chunk-6B5I6ICN.js} +11 -11
  16. package/dist/{chunk-5RXBNSW2.js → chunk-6P54TMWL.js} +16 -8
  17. package/dist/{chunk-K6VYLB2U.js → chunk-6UYA642J.js} +12 -12
  18. package/dist/{chunk-V7R425XG.js → chunk-6XX5HCLK.js} +4 -4
  19. package/dist/{chunk-D6QS3U6M.js → chunk-7AXO3ZDF.js} +15 -15
  20. package/dist/{chunk-YGVYKNSN.js → chunk-7BX5DWSA.js} +59 -12
  21. package/dist/{chunk-N3YQJI6O.js → chunk-7ELY2CSM.js} +7 -4
  22. package/dist/{chunk-AWE5TMPO.js → chunk-7M4T5N3V.js} +13 -13
  23. package/dist/{chunk-AJ3QXTRQ.js → chunk-AFZYMAIV.js} +33 -33
  24. package/dist/{chunk-AJXODZY6.js → chunk-ALQRYH6O.js} +12 -12
  25. package/dist/{chunk-AJVLWNFN.js → chunk-AXKPQ6ZI.js} +5 -5
  26. package/dist/{chunk-HWBZIGMJ.js → chunk-BHWHXMQ2.js} +8 -8
  27. package/dist/{chunk-IXEBJSUE.js → chunk-BJF25SUG.js} +10 -10
  28. package/dist/{chunk-GVXA6CCE.js → chunk-BNKLYOOO.js} +1 -1
  29. package/dist/{chunk-T4ERT73Y.js → chunk-CBD2B5CP.js} +20 -20
  30. package/dist/{chunk-O5WILGMI.js → chunk-CFYISHUW.js} +5 -5
  31. package/dist/{chunk-EOKRQ3SA.js → chunk-CMU4RMJB.js} +1 -1
  32. package/dist/{chunk-YSNFMJKN.js → chunk-CULQYFLU.js} +2 -2
  33. package/dist/{chunk-ORTMY4Q4.js → chunk-D65GOCJB.js} +21 -14
  34. package/dist/{chunk-NTUJEGDZ.js → chunk-D6YF5HKX.js} +2 -2
  35. package/dist/{chunk-BRJKOBZP.js → chunk-DMS52BEP.js} +17 -6
  36. package/dist/{chunk-NL5GLMFI.js → chunk-ELVWJYRV.js} +11 -11
  37. package/dist/{chunk-4W2PLC4J.js → chunk-EUT3B22Y.js} +12 -12
  38. package/dist/{chunk-GUOGVTCQ.js → chunk-F5VLZHUW.js} +1 -1
  39. package/dist/{chunk-I7SPGOWI.js → chunk-FGALODG3.js} +1 -1
  40. package/dist/{chunk-Q5U6FMDI.js → chunk-G3RLJYA2.js} +12 -6
  41. package/dist/{chunk-FJNKANOS.js → chunk-GAYGGICG.js} +9 -9
  42. package/dist/{chunk-HVUZXSWK.js → chunk-H2W2AXD3.js} +38 -40
  43. package/dist/{chunk-VHQLPIRJ.js → chunk-H5EV3VMF.js} +2 -2
  44. package/dist/{chunk-27BBHSZC.js → chunk-HREZQCT3.js} +3 -3
  45. package/dist/{chunk-TT22N74J.js → chunk-HSIRMK2D.js} +12 -12
  46. package/dist/{chunk-3I5QFT3N.js → chunk-IMSQR4WO.js} +6 -3
  47. package/dist/{chunk-B3I2UUT4.js → chunk-IQZXOZ7S.js} +156 -32
  48. package/dist/{chunk-RIISMHKN.js → chunk-IR6XFA5P.js} +14 -13
  49. package/dist/{chunk-LNAKEO63.js → chunk-IUKPRZER.js} +4 -4
  50. package/dist/{chunk-RUOG5D2C.js → chunk-IUR76K6A.js} +5 -5
  51. package/dist/{chunk-TO6WL3GM.js → chunk-J3FZR3YY.js} +12 -2
  52. package/dist/{chunk-Y4T27COV.js → chunk-J6DFZDFA.js} +4 -4
  53. package/dist/{chunk-E4MAEDPM.js → chunk-J7WJZ6W7.js} +11 -11
  54. package/dist/{chunk-52H5B5TC.js → chunk-JONGANYH.js} +30 -30
  55. package/dist/{chunk-TGPXLY2J.js → chunk-KJCWXUUS.js} +35 -1
  56. package/dist/{chunk-I3R7GKDR.js → chunk-KJN4IOEJ.js} +1 -1
  57. package/dist/{chunk-RPD4ZSB7.js → chunk-KMGPUKFD.js} +12 -12
  58. package/dist/{chunk-OQGFCZJ4.js → chunk-LD7WFTRX.js} +13 -13
  59. package/dist/{chunk-DIULIWKU.js → chunk-LNOMA3MP.js} +3 -3
  60. package/dist/{chunk-HHYAELLJ.js → chunk-MGIWSROG.js} +5 -5
  61. package/dist/{chunk-YLF3PPT5.js → chunk-MQA2YBAH.js} +3 -3
  62. package/dist/{chunk-TVN5N6GY.js → chunk-MTDRLSI7.js} +690 -186
  63. package/dist/{chunk-DQ2NZ7C4.js → chunk-N2IRDBZI.js} +44 -6
  64. package/dist/{chunk-AHDW3GPE.js → chunk-N77WFUL7.js} +22 -22
  65. package/dist/{chunk-NXPS2L6U.js → chunk-N7YNJE5R.js} +7 -7
  66. package/dist/{chunk-7FBF7NPR.js → chunk-NFXP47RV.js} +13 -12
  67. package/dist/{chunk-UY752QSN.js → chunk-NJF2X5XF.js} +17 -17
  68. package/dist/{chunk-WONERJTP.js → chunk-O7HZX7CA.js} +1 -1
  69. package/dist/{chunk-AS44CFQ4.js → chunk-OC7LYAU5.js} +7 -7
  70. package/dist/{chunk-4RERDEXR.js → chunk-OEX24ECI.js} +30 -30
  71. package/dist/{chunk-6VCD4VKZ.js → chunk-OYOB3ZFG.js} +2 -2
  72. package/dist/{chunk-IIXOAGHR.js → chunk-OYTMZXRF.js} +18 -15
  73. package/dist/{chunk-ARFCXG7S.js → chunk-OZJINN4O.js} +2 -2
  74. package/dist/{chunk-34U7PLGE.js → chunk-PCHDGUKT.js} +11 -11
  75. package/dist/{chunk-VCSRSYLF.js → chunk-RJFED73B.js} +34 -36
  76. package/dist/chunk-RTQNRM5X.js +27 -0
  77. package/dist/{chunk-PAK6IDME.js → chunk-S6AMWKPC.js} +2 -2
  78. package/dist/{chunk-U3VGR4VU.js → chunk-T4QZ6FEH.js} +4 -4
  79. package/dist/{chunk-VN2AXLEX.js → chunk-T54VJRAD.js} +54 -12
  80. package/dist/{chunk-ZMOL6RQC.js → chunk-TA5L5KWQ.js} +2 -2
  81. package/dist/{chunk-JOLITGCC.js → chunk-TQFBZVCG.js} +1 -1
  82. package/dist/{chunk-VDBPVIKD.js → chunk-U52SAGRM.js} +1 -1
  83. package/dist/{chunk-LW6XKDZQ.js → chunk-UEAHAMEI.js} +284 -35
  84. package/dist/{chunk-NMABWBZN.js → chunk-UGSMCQ4D.js} +1 -1
  85. package/dist/{chunk-6QIUX4EP.js → chunk-USHG4DLH.js} +7 -7
  86. package/dist/{chunk-LSMJ6KBE.js → chunk-V5MEBST3.js} +16 -16
  87. package/dist/chunk-VGEVL5EQ.js +29 -0
  88. package/dist/{chunk-47D2BO4S.js → chunk-VPWKF3GN.js} +10 -10
  89. package/dist/{chunk-UK3CMEAL.js → chunk-VSMJK3ZJ.js} +1 -1
  90. package/dist/{chunk-22AVIGXS.js → chunk-VYKKMYVT.js} +7 -7
  91. package/dist/{chunk-OS32RNR2.js → chunk-VZHJS6DR.js} +15 -15
  92. package/dist/{chunk-E2WFBRHM.js → chunk-WATC3IQR.js} +3 -3
  93. package/dist/chunk-WPE5FPGR.js +54 -0
  94. package/dist/{chunk-V5PXFSZK.js → chunk-WSEWKCXU.js} +4 -4
  95. package/dist/{chunk-NKOUFPQF.js → chunk-WW5BLB74.js} +2 -2
  96. package/dist/{chunk-PWFHBTSF.js → chunk-XGUL4SLQ.js} +2 -2
  97. package/dist/{chunk-F3P7VQ7H.js → chunk-XHSCVSOL.js} +3 -3
  98. package/dist/{chunk-DFVMIKMQ.js → chunk-YLN4K6WD.js} +45 -9
  99. package/dist/{chunk-VNMT7C64.js → chunk-Z6BB4JLQ.js} +2 -2
  100. package/dist/{chunk-NTHH2J74.js → chunk-Z7QQA2KT.js} +12 -12
  101. package/dist/{chunk-F3AU2TMM.js → chunk-ZETYB3XG.js} +15 -15
  102. package/dist/{chunk-XECLWQZN.js → chunk-ZMOMPX2Z.js} +12 -10
  103. package/dist/{chunk-C2AUYXQH.js → chunk-ZOEYVXSV.js} +4 -4
  104. package/dist/{chunk-TLGFBM3F.js → chunk-ZZUFZUQZ.js} +68 -64
  105. package/dist/index.js +30113 -28398
  106. package/dist/mcp/analyze-cli.js +8 -8
  107. package/dist/mcp/cli.js +37 -37
  108. package/dist/mcp/server.js +257 -158
  109. package/dist/mcp/worker.js +55 -55
  110. package/dist/probes/installer.js +19 -19
  111. package/docs/ast-grep_rules_catalog.md +2 -2
  112. package/docs/configuration.md +9 -2
  113. package/docs/custom-rules.md +25 -2
  114. package/docs/environment-variables.md +34 -6
  115. package/docs/features.md +37 -1
  116. package/docs/globalconfig.md +1 -1
  117. package/docs/lsp-capability-matrix.md +2 -1
  118. package/docs/lsp-idle-eviction.md +1 -1
  119. package/docs/pi-lens-fixer.md +9 -5
  120. package/docs/pi-lens-merge-policy.md +43 -1
  121. package/docs/pi-lens-monitor.md +3 -1
  122. package/docs/pi-lens-reviewer.md +4 -3
  123. package/docs/schema/pi-lens-config-v1.json +530 -0
  124. package/docs/servercapabilities.md +4 -1
  125. package/docs/word-index.md +6 -0
  126. package/package.json +1 -1
  127. package/rules/ast-grep-rules/rule-tests/no-identity-operator-on-literals-test.yml +12 -2
  128. package/rules/ast-grep-rules/rule-tests/throw-new-error-js-test.yml +2 -0
  129. package/rules/ast-grep-rules/rule-tests/throw-new-error-test.yml +2 -0
  130. package/rules/ast-grep-rules/rules/no-identity-operator-on-literals.yml +20 -12
  131. package/rules/ast-grep-rules/rules/throw-new-error-js.yml +2 -2
  132. package/rules/ast-grep-rules/rules/throw-new-error.yml +2 -2
  133. package/dist/chunk-54B42YRX.js +0 -27
  134. package/dist/chunk-CGGAIP7J.js +0 -29
  135. package/dist/chunk-HMFXILPV.js +0 -83
  136. package/dist/chunk-T6D4Q4AQ.js +0 -54
package/CHANGELOG.md CHANGED
@@ -16,6 +16,101 @@ All notable changes to pi-lens will be documented in this file.
16
16
 
17
17
  ### Security
18
18
 
19
+ ## [4.4.1] - 2026-10-09
20
+
21
+ ### Added
22
+
23
+ - **Public LSP config schema and compatibility normalization** (closes #2416): canonical argv-shaped server entries and legacy string-command files now share a validated, provenance-aware model without changing runtime launch behavior.
24
+
25
+ - **Shared custom rules are now loaded from a user-level directory.** Thanks to @Antrakos; project rules take precedence over user rules, which take precedence over bundled rules.
26
+
27
+ - **The official Docker Language Server is now verified in nightly LSP smoke tests.** Its pinned v0.20.1 binary is measured through the real pi-lens client, with the preferred legacy server retained as the fallback. Thanks @qiyangfan for reporting #3939.
28
+
29
+ - **Deferred formatting now announces settled completion with ownership identity** (refs #673; thanks @marioSoftmedic), including an empty path list when no bytes changed; late formatter writes delay completion until resync.
30
+
31
+ ### Changed
32
+
33
+ - Idle eviction is now enabled for `docker`, `json`, and `python-jedi` after consecutive safe measurements (refs #3989).
34
+
35
+ ### Fixed
36
+
37
+ - **Report fixer restore loss.** Agent edits that a whole-package fixer erased are now reported when their calls overlap the restore, or when a later edit landed on the fixer's bytes; newer bytes are retained when the restore can prove they are newer. One case stays unreported and is named as a residual: a fixer write that lands between an edit's tool call and the host applying that edit (#3830).
38
+
39
+ - **Batched scans keep their compiled query across a heal.** A rule healed during an in-flight compile no longer stays missing from later batched scans, scans sharing that compile no longer report zero findings when a heal races its publication, and a compile that is refused publication frees its native query instead of leaking it. (#3834)
40
+
41
+ - **A grammar that traps on two distinct files is retired, not retried until the heap aborts.** The runner reports the language unavailable instead of clean and other languages keep the remaining trap budget; a file that traps once and then parses cleanly does not count (refs #4010, #3996).
42
+
43
+ - **The word index no longer holds its serialized copy while idle.** It is released when the agent run settles (once per run), kept while a run edits so per-edit saves stay incremental, and released after 10 minutes without a save for a stalled run (`PI_LENS_WORD_INDEX_MEMO_BACKSTOP_MS`).
44
+
45
+ - **Startup warm caches now cover up to 2,500 measured source files safely.** Larger projects still see the once-per-session reason and the bound to raise.
46
+
47
+ - **The read guard keeps authorship through pi-lens-owned rewrites.** A file the agent wrote stays editable without a re-read when `ast_grep_replace`, `lens_diagnostic_mark`, or an LSP operation rewrites the file that call named and no foreign writer intervened. A file the tool wrote without naming it (a rename's importers, a folder-wide or project-wide apply), a server-initiated `workspace/applyEdit`, or a foreign byte change ends authorship instead, so the next edit asks for one read, and third-party bridge records remain fail-closed (#4131). Authorship survives `/tree`, `/fork` and resume when the branch still shows the write (#3603). Process-bridge writes, observed tool writes and partial bridge reads no longer mark the whole file as freshly read (#3865).
48
+
49
+ - **`throw Error(x)` style findings are now warnings, not blockers.** The `throw-new-error` rules still encourage explicit construction while recognizing that `Error(x)` is spec-equivalent to `new Error(x)`.
50
+
51
+ - **Shared secondary worktree roots now remain visible until every session holding them leaves.** Each session's registry record lists only the roots it registered, so a session ending after a primary reload or a cap eviction can no longer drop a root another live session still serves (#3849).
52
+
53
+ - **Lint fallback no longer hides missing type coverage.** Type-bearing files keep the existing incomplete-coverage notice when their primary analysis was skipped, unavailable, or failed; type-capable fallbacks such as mypy can still complete coverage.
54
+
55
+ - **Keep source-build tools aligned with the lockfile (#4066).** Both esbuild bundles and the TypeScript fallback use the exact locked versions while retaining isolated npm exec resolution and exact lifecycle-script approval.
56
+
57
+ - **Scanners now avoid linked worktree duplicates.** Gitleaks, trivy and opengrep discover linked checkouts nested under the project root instead of relying only on known directory names; paths that a scanner cannot represent safely are reported as bounded scan degradations (fixes #4132).
58
+
59
+ - Prevented pi-lens's read-only registry-tool operations from being mistaken for learned edits after another operation mutates a file.
60
+
61
+ - **Ast-grep rule validation no longer stalls on blank-heavy YAML (#4148)** — A rule with tens of thousands of blank lines no longer blocks the host while its language is detected.
62
+
63
+ - **Pytest and go.mod parsing no longer stall on blank-heavy input (#4148)** — Reading a pytest failure traceback and the `module` line of a `go.mod` now takes linear time, so a run with tens of thousands of blank lines or one very long `_` rule no longer blocks the host for seconds (13 s and 4 s at 100K lines before).
64
+
65
+ - **Refresh TypeScript clients across package roots (closes #4156)** — Changed files are announced to live sibling-root language-server clients, preventing stale importer diagnostics. Credit: Don-Yin.
66
+
67
+ - **A project's data directory stays stable for the whole process** (#4199): it is settled when the process first resolves the root, so an ephemeral checkout no longer moves its data when a `.pi-lens` directory appears mid-process, and a `.pi-lens` created by hand in a real project takes effect at the next process start.
68
+
69
+ - **Read-guard authorship now stays within bytes each writer actually changed.**
70
+
71
+ - **Outside-root edits now explain skipped analysis** (#4218) — pi-lens tells you to start pi in the file's directory or add it to the workspace.
72
+
73
+ - **Answered LSP findings are preserved when another server times out** — typos diagnostics now remain visible when Marksman is inconclusive for the same edit. (closes [#4219](https://github.com/apmantza/pi-lens/issues/4219))
74
+
75
+ - **Identity checks against `True`/`False` are no longer flagged** — the rule now preserves correct Python singleton checks while continuing to catch non-singleton literal comparisons. Thanks @rastarr for the report. (closes [#4225](https://github.com/apmantza/pi-lens/issues/4225))
76
+
77
+ - **Release summaries keep wrapped changelog entries intact** — release notes now join an entry's wrapped lines before shortening it, so plain entries no longer end mid-sentence and bold gist text keeps continuation-line issue references.
78
+
79
+ - **Read evidence now survives relative paths, nested codemode calls and conversation moves**: relative-path reads, nested reads and pi-lens rewrites (including the structural `ast_grep_replace` apply) keep their read-guard and mutation bookkeeping across `/clone`, `/fork`, `/tree` and `/reload`; a read that errored (even if another extension rewrites its result to success), or that another extension blocked, no longer licenses an edit later in the same run, and a read never blocks a whole-package fixer's restore of an agent edit.
80
+
81
+ ### Internal
82
+
83
+ <details>
84
+ <summary>13 internal changes: tests, CI, tooling, and refactors</summary>
85
+
86
+ - The TLA+ hook-anchor scan escapes every regex metacharacter in a handler name, not only `$`.
87
+
88
+ - Changelog fragment validation now constrains new user-facing leads.
89
+
90
+ - **Idle-eviction measurements cover temporary checkouts (refs #3989)** — The nightly probe now arms the short idle window used by ephemeral LSP roots as well as the generic window, so eligible servers are measured instead of reported as not evicted.
91
+
92
+ - **release-qa reads the pi version from `pi --version` only (closes #4176)** — The codemode row no longer takes an x.y.z from the pi binary's install path, so a version-shaped directory cannot make it run or skip on the wrong pi.
93
+
94
+ - Keep config-declared LSP roles reserved and inert in the loader; the catalog remains the owner of auxiliary selection.
95
+
96
+ - Make the workflow Git-push detector regex linear for quoted options.
97
+
98
+ - One LSP server-role vocabulary and a declared trait table (refs #1488, refs #1756): `LSPServerInfo.role` is now non-optional, 44 inlined `role === "auxiliary"` / `role !== "auxiliary"` predicates fold onto `isAuxiliary()`, `PromiseDescriptor.role` retires its duplicate `"primary"` spelling, the auxiliary wait policy moves to `clients/lsp/auxiliary-lifecycle.ts`, and the `notifyInflightLimit` / `replyOrdering` traits are declared on the server definition. No behaviour change.
99
+
100
+ - **Merge-policy mistake table: 2026-10-07 and 2026-10-08 retrospective** — new internal rows on delivery wording, shared records, worker handoffs, CI and advisory classification, release producers, probe witnesses, test doubles, and round routing.
101
+
102
+ - Failed handler-verdict tests when `handleToolCall` threw and production swallowed it: `runHandlerExpectingNoThrow` (`tests/support/handler-verdict.ts`) wraps every direct call and the pi mock's `tool_call` hooks, and a governance sweep rejects an unchecked call (#3518, recurrence #4182).
103
+
104
+ - **TLA+ session models cover marker expiry, the per-evaluation LSP generation, the widget token and the late coordinator stores (refs #3803)**: #3668's successor-pending marker expires (`MarkerExpire`, no clock), #3755's per-evaluation generation is caught by an owner-live invariant the generation clause could not see, the widget's `>=` tie and fork carry are pinned in both directions (`SessionLifecycleF1`), the receipt, `fixedThisTurn`, analysed-state latch and runner writers are fenced by their captured scope (#3824), and `session-straddle` retires the generation at shutdown (#3611), each with a violating pre-fix or mutant config and a passing merged one.
105
+
106
+ - **TLA+ session-lifecycle models the S3 writers and the subagent turn_end (refs #3803)**: the deferral queue's two-hop credit (#3705), the turn-state, turn-summary and git-guard late writers with the debounce re-entry (#3759), the mutation bridge's producer with and without a lineage (#3763), the park map of cut advisories (#4112), and a turn_end composer on a shared coordinator, each with a violating pre-fix or mutant config and a passing merged one; the coverage map names the bridge producers and the turn summary.
107
+
108
+ - Map the unmapped lifecycle files in `formal/coverage-map.json` and gate `index.ts` per lifecycle hook handler instead of per file (refs #3803).
109
+
110
+ - Vitest no longer collects test files from a stray worktree inside `.probe-home/` on a path-filtered run.
111
+
112
+ </details>
113
+
19
114
  ## [4.4.0] - 2026-10-08
20
115
 
21
116
  ### Added
package/README.md CHANGED
@@ -482,6 +482,7 @@ Thanks goes to these wonderful people:
482
482
  <tr>
483
483
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/pandas9"><img src="https://avatars.githubusercontent.com/u/81386636?v=4" width="100px;" alt=""/><br /><sub><b>pandas9</b></sub></a><br /><a href="#bug-pandas9" title="Bug reports">🐛</a></td>
484
484
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/renzooliveira"><img src="https://avatars.githubusercontent.com/u/10881850?v=4" width="100px;" alt=""/><br /><sub><b>Renzo Oliveira</b></sub></a><br /><a href="#ideas-renzooliveira" title="Ideas & Planning">🤔</a></td>
485
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/rastarr"><img src="https://avatars.githubusercontent.com/u/2160922?v=4" width="100px;" alt=""/><br /><sub><b>Martin</b></sub></a><br /><a href="#bug-rastarr" title="Bug reports">🐛</a> <a href="#ideas-rastarr" title="Ideas & Planning">🤔</a></td>
485
486
  </tr>
486
487
  </tbody>
487
488
  </table>
@@ -0,0 +1,83 @@
1
+ import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
+ import {
3
+ _getWarmWordIndexCacheStateForTests,
4
+ _resetWarmWordIndexCacheForTests,
5
+ acquireWarmWordIndex,
6
+ analyzeFile,
7
+ summarizeWarningTiers
8
+ } from "./chunk-ZZUFZUQZ.js";
9
+ import "./chunk-ZOEYVXSV.js";
10
+ import "./chunk-KJN4IOEJ.js";
11
+ import "./chunk-FC4RP4I2.js";
12
+ import "./chunk-YLN4K6WD.js";
13
+ import "./chunk-J3FZR3YY.js";
14
+ import "./chunk-5JHXUETW.js";
15
+ import "./chunk-3MRXIJ6I.js";
16
+ import "./chunk-TA5L5KWQ.js";
17
+ import "./chunk-FGALODG3.js";
18
+ import "./chunk-OC7LYAU5.js";
19
+ import "./chunk-NFXP47RV.js";
20
+ import "./chunk-MGIWSROG.js";
21
+ import "./chunk-WSEWKCXU.js";
22
+ import "./chunk-MQA2YBAH.js";
23
+ import "./chunk-TQFBZVCG.js";
24
+ import "./chunk-WATC3IQR.js";
25
+ import "./chunk-OYOB3ZFG.js";
26
+ import "./chunk-XHSCVSOL.js";
27
+ import "./chunk-V5MEBST3.js";
28
+ import "./chunk-3MED75HT.js";
29
+ import "./chunk-IMSQR4WO.js";
30
+ import "./chunk-MTDRLSI7.js";
31
+ import "./chunk-OZJINN4O.js";
32
+ import "./chunk-3JSEWUWI.js";
33
+ import "./chunk-XIMYZ3JA.js";
34
+ import "./chunk-IQZXOZ7S.js";
35
+ import "./chunk-LNOMA3MP.js";
36
+ import "./chunk-U52SAGRM.js";
37
+ import "./chunk-5W3R6LFT.js";
38
+ import "./chunk-UEAHAMEI.js";
39
+ import "./chunk-Z54ZSOBZ.js";
40
+ import "./chunk-KJCWXUUS.js";
41
+ import "./chunk-QOZXJ4NA.js";
42
+ import "./chunk-6XX5HCLK.js";
43
+ import "./chunk-S6AMWKPC.js";
44
+ import "./chunk-F5VLZHUW.js";
45
+ import "./chunk-AXKPQ6ZI.js";
46
+ import "./chunk-7BX5DWSA.js";
47
+ import "./chunk-IUKPRZER.js";
48
+ import "./chunk-Z3CCVDUB.js";
49
+ import "./chunk-XGUL4SLQ.js";
50
+ import "./chunk-2BEMIWEW.js";
51
+ import "./chunk-LD7WFTRX.js";
52
+ import "./chunk-IUR76K6A.js";
53
+ import "./chunk-T4QZ6FEH.js";
54
+ import "./chunk-D6YF5HKX.js";
55
+ import "./chunk-CMU4RMJB.js";
56
+ import "./chunk-O7HZX7CA.js";
57
+ import "./chunk-VYKKMYVT.js";
58
+ import "./chunk-BNKLYOOO.js";
59
+ import "./chunk-USHG4DLH.js";
60
+ import "./chunk-H5EV3VMF.js";
61
+ import "./chunk-T54VJRAD.js";
62
+ import "./chunk-BW5KFIQC.js";
63
+ import "./chunk-QYF5S6P6.js";
64
+ import "./chunk-64LU2OVH.js";
65
+ import "./chunk-N2IRDBZI.js";
66
+ import "./chunk-Z6BB4JLQ.js";
67
+ import "./chunk-2EECBNC5.js";
68
+ import "./chunk-7ELY2CSM.js";
69
+ import "./chunk-34OCDWOS.js";
70
+ import "./chunk-3PNFWVHT.js";
71
+ import "./chunk-VSMJK3ZJ.js";
72
+ import "./chunk-LJDODBBZ.js";
73
+ import "./chunk-UGSMCQ4D.js";
74
+ import "./chunk-ABBOA7UD.js";
75
+ import "./chunk-G3RLJYA2.js";
76
+ import "./chunk-NXL4FFQQ.js";
77
+ export {
78
+ _getWarmWordIndexCacheStateForTests,
79
+ _resetWarmWordIndexCacheForTests,
80
+ acquireWarmWordIndex,
81
+ analyzeFile,
82
+ summarizeWarningTiers
83
+ };
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  isMutatingToolName
4
- } from "./chunk-OAXNDZJ7.js";
4
+ } from "./chunk-3JSEWUWI.js";
5
5
  import {
6
6
  normalizeMapKey
7
- } from "./chunk-Q5U6FMDI.js";
7
+ } from "./chunk-G3RLJYA2.js";
8
8
 
9
9
  // dist/clients/agent-behavior-client.js
10
10
  var READ_OPS = /* @__PURE__ */ new Set(["read", "bash", "grep", "glob", "find", "rg"]);
@@ -5,7 +5,7 @@ import {
5
5
  getMaxLogSizeMB,
6
6
  getTurnId,
7
7
  isTestMode
8
- } from "./chunk-UK3CMEAL.js";
8
+ } from "./chunk-VSMJK3ZJ.js";
9
9
 
10
10
  // dist/clients/extension-log.js
11
11
  import * as path from "node:path";
@@ -52,41 +52,41 @@ import {
52
52
  tryLazyInstallFormatterTool,
53
53
  typstyleFormatter,
54
54
  zigFormatter
55
- } from "./chunk-F3AU2TMM.js";
56
- import "./chunk-C2AUYXQH.js";
55
+ } from "./chunk-ZETYB3XG.js";
56
+ import "./chunk-ZOEYVXSV.js";
57
57
  import "./chunk-FC4RP4I2.js";
58
- import "./chunk-HHYAELLJ.js";
58
+ import "./chunk-MGIWSROG.js";
59
59
  import "./chunk-QOZXJ4NA.js";
60
- import "./chunk-PAK6IDME.js";
61
- import "./chunk-AJVLWNFN.js";
62
- import "./chunk-YGVYKNSN.js";
63
- import "./chunk-LNAKEO63.js";
60
+ import "./chunk-S6AMWKPC.js";
61
+ import "./chunk-AXKPQ6ZI.js";
62
+ import "./chunk-7BX5DWSA.js";
63
+ import "./chunk-IUKPRZER.js";
64
64
  import "./chunk-Z3CCVDUB.js";
65
65
  import "./chunk-2BEMIWEW.js";
66
- import "./chunk-OQGFCZJ4.js";
67
- import "./chunk-RUOG5D2C.js";
68
- import "./chunk-U3VGR4VU.js";
69
- import "./chunk-NTUJEGDZ.js";
70
- import "./chunk-EOKRQ3SA.js";
71
- import "./chunk-WONERJTP.js";
72
- import "./chunk-22AVIGXS.js";
73
- import "./chunk-GVXA6CCE.js";
74
- import "./chunk-6QIUX4EP.js";
75
- import "./chunk-VHQLPIRJ.js";
76
- import "./chunk-VN2AXLEX.js";
66
+ import "./chunk-LD7WFTRX.js";
67
+ import "./chunk-IUR76K6A.js";
68
+ import "./chunk-T4QZ6FEH.js";
69
+ import "./chunk-D6YF5HKX.js";
70
+ import "./chunk-CMU4RMJB.js";
71
+ import "./chunk-O7HZX7CA.js";
72
+ import "./chunk-VYKKMYVT.js";
73
+ import "./chunk-BNKLYOOO.js";
74
+ import "./chunk-USHG4DLH.js";
75
+ import "./chunk-H5EV3VMF.js";
76
+ import "./chunk-T54VJRAD.js";
77
77
  import "./chunk-BW5KFIQC.js";
78
78
  import "./chunk-QYF5S6P6.js";
79
- import "./chunk-5ZEJHV35.js";
80
- import "./chunk-DQ2NZ7C4.js";
81
- import "./chunk-VNMT7C64.js";
79
+ import "./chunk-64LU2OVH.js";
80
+ import "./chunk-N2IRDBZI.js";
81
+ import "./chunk-Z6BB4JLQ.js";
82
82
  import "./chunk-2EECBNC5.js";
83
- import "./chunk-N3YQJI6O.js";
84
- import "./chunk-O6TQT6RI.js";
85
- import "./chunk-5THXD6X5.js";
86
- import "./chunk-UK3CMEAL.js";
83
+ import "./chunk-7ELY2CSM.js";
84
+ import "./chunk-34OCDWOS.js";
85
+ import "./chunk-3PNFWVHT.js";
86
+ import "./chunk-VSMJK3ZJ.js";
87
87
  import "./chunk-LJDODBBZ.js";
88
88
  import "./chunk-ABBOA7UD.js";
89
- import "./chunk-Q5U6FMDI.js";
89
+ import "./chunk-G3RLJYA2.js";
90
90
  import "./chunk-NXL4FFQQ.js";
91
91
  export {
92
92
  ALL_FORMATTERS,
@@ -1,19 +1,19 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  getProjectDataDir
4
- } from "./chunk-VN2AXLEX.js";
5
- import "./chunk-DQ2NZ7C4.js";
6
- import "./chunk-VNMT7C64.js";
4
+ } from "./chunk-T54VJRAD.js";
5
+ import "./chunk-N2IRDBZI.js";
6
+ import "./chunk-Z6BB4JLQ.js";
7
7
  import "./chunk-2EECBNC5.js";
8
- import "./chunk-N3YQJI6O.js";
9
- import "./chunk-O6TQT6RI.js";
10
- import "./chunk-5THXD6X5.js";
8
+ import "./chunk-7ELY2CSM.js";
9
+ import "./chunk-34OCDWOS.js";
10
+ import "./chunk-3PNFWVHT.js";
11
11
  import {
12
12
  redactSecrets
13
- } from "./chunk-UK3CMEAL.js";
13
+ } from "./chunk-VSMJK3ZJ.js";
14
14
  import "./chunk-LJDODBBZ.js";
15
15
  import "./chunk-ABBOA7UD.js";
16
- import "./chunk-Q5U6FMDI.js";
16
+ import "./chunk-G3RLJYA2.js";
17
17
  import "./chunk-NXL4FFQQ.js";
18
18
 
19
19
  // dist/clients/fix-worklog.js
@@ -1,21 +1,21 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  getProjectDataDir
4
- } from "./chunk-VN2AXLEX.js";
4
+ } from "./chunk-T54VJRAD.js";
5
5
  import {
6
6
  createNdjsonLogger,
7
7
  getGlobalPiLensLogDir,
8
8
  getProcessSingleton,
9
9
  getTurnId,
10
10
  isTestMode
11
- } from "./chunk-UK3CMEAL.js";
11
+ } from "./chunk-VSMJK3ZJ.js";
12
12
  import {
13
13
  BoundedFifoMap
14
14
  } from "./chunk-ABBOA7UD.js";
15
15
  import {
16
16
  normalizeFilePath,
17
17
  normalizeMapKey
18
- } from "./chunk-Q5U6FMDI.js";
18
+ } from "./chunk-G3RLJYA2.js";
19
19
 
20
20
  // dist/clients/hashline-anchor.js
21
21
  var HASHLINE_ANCHOR_LENGTH = 3;
@@ -235,7 +235,10 @@ function shouldLogEvent(event) {
235
235
  // Same rarity argument as #1913 for the reasons that DO fire: each is
236
236
  // rising-edge gated once per file per session, so always-on
237
237
  // visibility costs nothing.
238
- event === "read_file_evicted" || event === "edits_cap_trimmed";
238
+ event === "read_file_evicted" || event === "edits_cap_trimmed" || // #4131: a file's authorship ended because another writer changed its
239
+ // bytes. Once per authorship episode: the retired file needs a read or
240
+ // a known-content write before a writer can author it again.
241
+ event === "authorship_retired";
239
242
  }
240
243
  var MAX_TELEMETRY_STRING = 512;
241
244
  var MAX_TELEMETRY_KEYS = 64;
@@ -314,6 +317,7 @@ export {
314
317
  normalizeMessage,
315
318
  hashText,
316
319
  stableFindingId,
320
+ sanitizeCorrelationId,
317
321
  getReadGuardCorrelationId,
318
322
  createReadGuardEditBatchSummary,
319
323
  logReadGuardEvent,
@@ -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-F3P7VQ7H.js";
4
+ } from "./chunk-XHSCVSOL.js";
5
5
  import {
6
6
  createSubsystemLogger
7
- } from "./chunk-O6TQT6RI.js";
7
+ } from "./chunk-34OCDWOS.js";
8
8
 
9
9
  // dist/clients/rust-client.js
10
10
  import * as path from "node:path";
@@ -4,46 +4,46 @@ import {
4
4
  } from "./chunk-FC4RP4I2.js";
5
5
  import {
6
6
  resolveGitCheckout
7
- } from "./chunk-3I5QFT3N.js";
7
+ } from "./chunk-IMSQR4WO.js";
8
8
  import {
9
9
  emitBounded
10
- } from "./chunk-ARFCXG7S.js";
10
+ } from "./chunk-OZJINN4O.js";
11
11
  import {
12
12
  augmentPythonEnvironment,
13
13
  detectPythonEnvironment
14
- } from "./chunk-DIULIWKU.js";
14
+ } from "./chunk-LNOMA3MP.js";
15
15
  import {
16
16
  PathKeyedMap
17
17
  } from "./chunk-Z3CCVDUB.js";
18
18
  import {
19
19
  resolveToolCwd
20
- } from "./chunk-RUOG5D2C.js";
20
+ } from "./chunk-IUR76K6A.js";
21
21
  import {
22
22
  findGlobalBinary
23
- } from "./chunk-U3VGR4VU.js";
23
+ } from "./chunk-T4QZ6FEH.js";
24
24
  import {
25
25
  resolveLanguageRootForFile
26
- } from "./chunk-22AVIGXS.js";
26
+ } from "./chunk-VYKKMYVT.js";
27
27
  import {
28
28
  safeSpawn,
29
29
  safeSpawnAsync
30
- } from "./chunk-VN2AXLEX.js";
30
+ } from "./chunk-T54VJRAD.js";
31
31
  import {
32
32
  detectFileKind
33
- } from "./chunk-5ZEJHV35.js";
33
+ } from "./chunk-64LU2OVH.js";
34
34
  import {
35
35
  detectFileRole
36
- } from "./chunk-DQ2NZ7C4.js";
36
+ } from "./chunk-N2IRDBZI.js";
37
37
  import {
38
38
  findNearestDirWithAnyBasename
39
- } from "./chunk-VNMT7C64.js";
39
+ } from "./chunk-Z6BB4JLQ.js";
40
40
  import {
41
41
  LEDGER_FIELD_MAX,
42
42
  recordDegradationOnce
43
- } from "./chunk-N3YQJI6O.js";
43
+ } from "./chunk-7ELY2CSM.js";
44
44
  import {
45
45
  createSubsystemLogger
46
- } from "./chunk-O6TQT6RI.js";
46
+ } from "./chunk-34OCDWOS.js";
47
47
  import {
48
48
  BoundedFifoMap
49
49
  } from "./chunk-ABBOA7UD.js";
@@ -56,7 +56,7 @@ import {
56
56
  normalizeMapKey,
57
57
  pathsEqual,
58
58
  toPosix
59
- } from "./chunk-Q5U6FMDI.js";
59
+ } from "./chunk-G3RLJYA2.js";
60
60
 
61
61
  // dist/clients/test-runner-client.js
62
62
  import { createHash } from "node:crypto";
@@ -1516,7 +1516,7 @@ ${stderr}`;
1516
1516
  ...location === void 0 ? {} : { location }
1517
1517
  });
1518
1518
  }
1519
- const tracebackRegex = /_{10,}\s*\n\s*(\w+Error:\s*.+?)(?:\n|$)/gs;
1519
+ const tracebackRegex = /(?<!_)_{10,}[^\S\n]*\n\s*(\w+Error:\s*.+?)(?:\n|$)/gs;
1520
1520
  while ((match = tracebackRegex.exec(output)) !== null) {
1521
1521
  if (failures.length > 0 && !failures[failures.length - 1].stack) {
1522
1522
  failures[failures.length - 1].stack = match[1].trim().slice(0, 1e3);
@@ -5,10 +5,10 @@ import {
5
5
  getMaxLogSizeMB,
6
6
  getTurnId,
7
7
  isTestMode
8
- } from "./chunk-UK3CMEAL.js";
8
+ } from "./chunk-VSMJK3ZJ.js";
9
9
  import {
10
10
  normalizeLoggedPath
11
- } from "./chunk-Q5U6FMDI.js";
11
+ } from "./chunk-G3RLJYA2.js";
12
12
 
13
13
  // dist/clients/latency-logger.js
14
14
  import * as path from "node:path";
@@ -54,55 +54,55 @@ import {
54
54
  reviewGraphCachePath,
55
55
  terminateReviewGraphPersistWorkerForTests,
56
56
  waitForReviewGraphPersistsForTests
57
- } from "./chunk-LSMJ6KBE.js";
57
+ } from "./chunk-V5MEBST3.js";
58
58
  import "./chunk-3MED75HT.js";
59
- import "./chunk-3I5QFT3N.js";
60
- import "./chunk-TVN5N6GY.js";
61
- import "./chunk-ARFCXG7S.js";
62
- import "./chunk-OAXNDZJ7.js";
59
+ import "./chunk-IMSQR4WO.js";
60
+ import "./chunk-MTDRLSI7.js";
61
+ import "./chunk-OZJINN4O.js";
62
+ import "./chunk-3JSEWUWI.js";
63
63
  import "./chunk-XIMYZ3JA.js";
64
- import "./chunk-B3I2UUT4.js";
65
- import "./chunk-DIULIWKU.js";
66
- import "./chunk-VDBPVIKD.js";
64
+ import "./chunk-IQZXOZ7S.js";
65
+ import "./chunk-LNOMA3MP.js";
66
+ import "./chunk-U52SAGRM.js";
67
67
  import "./chunk-5W3R6LFT.js";
68
- import "./chunk-LW6XKDZQ.js";
68
+ import "./chunk-UEAHAMEI.js";
69
69
  import "./chunk-Z54ZSOBZ.js";
70
- import "./chunk-TGPXLY2J.js";
70
+ import "./chunk-KJCWXUUS.js";
71
71
  import "./chunk-QOZXJ4NA.js";
72
- import "./chunk-V7R425XG.js";
73
- import "./chunk-PAK6IDME.js";
74
- import "./chunk-GUOGVTCQ.js";
75
- import "./chunk-AJVLWNFN.js";
76
- import "./chunk-YGVYKNSN.js";
77
- import "./chunk-LNAKEO63.js";
72
+ import "./chunk-6XX5HCLK.js";
73
+ import "./chunk-S6AMWKPC.js";
74
+ import "./chunk-F5VLZHUW.js";
75
+ import "./chunk-AXKPQ6ZI.js";
76
+ import "./chunk-7BX5DWSA.js";
77
+ import "./chunk-IUKPRZER.js";
78
78
  import "./chunk-Z3CCVDUB.js";
79
- import "./chunk-PWFHBTSF.js";
79
+ import "./chunk-XGUL4SLQ.js";
80
80
  import "./chunk-2BEMIWEW.js";
81
- import "./chunk-OQGFCZJ4.js";
82
- import "./chunk-RUOG5D2C.js";
83
- import "./chunk-U3VGR4VU.js";
84
- import "./chunk-NTUJEGDZ.js";
85
- import "./chunk-EOKRQ3SA.js";
86
- import "./chunk-WONERJTP.js";
87
- import "./chunk-22AVIGXS.js";
88
- import "./chunk-GVXA6CCE.js";
89
- import "./chunk-6QIUX4EP.js";
90
- import "./chunk-VHQLPIRJ.js";
91
- import "./chunk-VN2AXLEX.js";
81
+ import "./chunk-LD7WFTRX.js";
82
+ import "./chunk-IUR76K6A.js";
83
+ import "./chunk-T4QZ6FEH.js";
84
+ import "./chunk-D6YF5HKX.js";
85
+ import "./chunk-CMU4RMJB.js";
86
+ import "./chunk-O7HZX7CA.js";
87
+ import "./chunk-VYKKMYVT.js";
88
+ import "./chunk-BNKLYOOO.js";
89
+ import "./chunk-USHG4DLH.js";
90
+ import "./chunk-H5EV3VMF.js";
91
+ import "./chunk-T54VJRAD.js";
92
92
  import "./chunk-BW5KFIQC.js";
93
93
  import "./chunk-QYF5S6P6.js";
94
- import "./chunk-5ZEJHV35.js";
95
- import "./chunk-DQ2NZ7C4.js";
96
- import "./chunk-VNMT7C64.js";
94
+ import "./chunk-64LU2OVH.js";
95
+ import "./chunk-N2IRDBZI.js";
96
+ import "./chunk-Z6BB4JLQ.js";
97
97
  import "./chunk-2EECBNC5.js";
98
- import "./chunk-N3YQJI6O.js";
99
- import "./chunk-O6TQT6RI.js";
100
- import "./chunk-5THXD6X5.js";
101
- import "./chunk-UK3CMEAL.js";
98
+ import "./chunk-7ELY2CSM.js";
99
+ import "./chunk-34OCDWOS.js";
100
+ import "./chunk-3PNFWVHT.js";
101
+ import "./chunk-VSMJK3ZJ.js";
102
102
  import "./chunk-LJDODBBZ.js";
103
- import "./chunk-NMABWBZN.js";
103
+ import "./chunk-UGSMCQ4D.js";
104
104
  import "./chunk-ABBOA7UD.js";
105
- import "./chunk-Q5U6FMDI.js";
105
+ import "./chunk-G3RLJYA2.js";
106
106
  import "./chunk-NXL4FFQQ.js";
107
107
  export {
108
108
  GRAPH_PERSIST_MAX_ELEMENTS_DEFAULT,
@@ -2,7 +2,7 @@ import { createRequire as __pilensCreateRequire } from "node:module"; const requ
2
2
  import {
3
3
  createAvailabilityProbeFlight,
4
4
  probeToolAsync
5
- } from "./chunk-EOKRQ3SA.js";
5
+ } from "./chunk-CMU4RMJB.js";
6
6
  import {
7
7
  classifyProbeFailure,
8
8
  createAvailabilityLatch,
@@ -10,13 +10,13 @@ import {
10
10
  describeProbeEvidence,
11
11
  logAvailabilityDecision,
12
12
  startHostStallSampler
13
- } from "./chunk-WONERJTP.js";
13
+ } from "./chunk-O7HZX7CA.js";
14
14
  import {
15
15
  createSingleFlight
16
16
  } from "./chunk-BW5KFIQC.js";
17
17
  import {
18
18
  createSubsystemLogger
19
- } from "./chunk-O6TQT6RI.js";
19
+ } from "./chunk-34OCDWOS.js";
20
20
 
21
21
  // dist/clients/security-scan-client.js
22
22
  import * as path from "node:path";
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __pilensCreateRequire } from "node:module"; const require = __pilensCreateRequire(import.meta.url);
2
2
  import {
3
3
  findNearestDirWithMarker
4
- } from "./chunk-VNMT7C64.js";
4
+ } from "./chunk-Z6BB4JLQ.js";
5
5
  import {
6
6
  isWindowsPath
7
- } from "./chunk-Q5U6FMDI.js";
7
+ } from "./chunk-G3RLJYA2.js";
8
8
 
9
9
  // dist/clients/file-kinds.js
10
10
  import { basename, extname, win32 } from "node:path";
@@ -12,21 +12,21 @@ import {
12
12
  isStartupScanVerdictFresh,
13
13
  resolveStartupScanContext,
14
14
  resolveStartupScanContextAsync
15
- } from "./chunk-5RXBNSW2.js";
16
- import "./chunk-LNAKEO63.js";
17
- import "./chunk-VHQLPIRJ.js";
18
- import "./chunk-VN2AXLEX.js";
15
+ } from "./chunk-6P54TMWL.js";
16
+ import "./chunk-IUKPRZER.js";
17
+ import "./chunk-H5EV3VMF.js";
18
+ import "./chunk-T54VJRAD.js";
19
19
  import "./chunk-QYF5S6P6.js";
20
- import "./chunk-DQ2NZ7C4.js";
21
- import "./chunk-VNMT7C64.js";
20
+ import "./chunk-N2IRDBZI.js";
21
+ import "./chunk-Z6BB4JLQ.js";
22
22
  import "./chunk-2EECBNC5.js";
23
- import "./chunk-N3YQJI6O.js";
24
- import "./chunk-O6TQT6RI.js";
25
- import "./chunk-5THXD6X5.js";
26
- import "./chunk-UK3CMEAL.js";
23
+ import "./chunk-7ELY2CSM.js";
24
+ import "./chunk-34OCDWOS.js";
25
+ import "./chunk-3PNFWVHT.js";
26
+ import "./chunk-VSMJK3ZJ.js";
27
27
  import "./chunk-LJDODBBZ.js";
28
28
  import "./chunk-ABBOA7UD.js";
29
- import "./chunk-Q5U6FMDI.js";
29
+ import "./chunk-G3RLJYA2.js";
30
30
  import "./chunk-NXL4FFQQ.js";
31
31
  export {
32
32
  MAX_STARTUP_SCAN_ENTRIES,