@herbertgao/pi-extensions 2026.10.1 → 2026.10.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/README.md +14 -17
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-audit.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-debt.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-gain.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-help.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-review.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
- package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/README.md +68 -72
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +7 -0
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
- package/node_modules/@dietrichgebert/ponytail/package.json +2 -2
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -32
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +17 -16
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +9 -10
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -57
- package/node_modules/{remote-pi → @herbertgao/pi-agency}/LICENSE +1 -1
- package/node_modules/@herbertgao/pi-agency/README.md +40 -0
- package/node_modules/@herbertgao/pi-agency/package.json +53 -0
- package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
- package/node_modules/@herbertgao/pi-subagents/README.md +1 -1
- package/node_modules/@herbertgao/pi-subagents/package.json +4 -5
- package/node_modules/@herbertgao/pi-subagents/src/index.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/invocation-config.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/mention-clone.ts +48 -72
- package/node_modules/@herbertgao/pi-subagents/src/nested-tools.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/output-file.ts +15 -6
- package/node_modules/@herbertgao/pi-subagents/src/workflow/collisions.ts +4 -1
- package/node_modules/@herbertgao/pi-subagents/src/workflow/json-schema.ts +9 -8
- package/node_modules/@narumitw/pi-caffeinate/dist/index.ts +6 -1
- package/node_modules/@narumitw/pi-caffeinate/dist/index.ts.map +2 -2
- package/node_modules/@narumitw/pi-caffeinate/package.json +3 -3
- package/node_modules/@narumitw/pi-caffeinate/src/dbus-inhibit.ts +13 -1
- package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
- package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
- package/node_modules/@tifan/pi-recap/package.json +1 -1
- package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
- package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
- package/node_modules/pi-antigravity/README.md +23 -2
- package/node_modules/pi-antigravity/package.json +5 -3
- package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
- package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
- package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
- package/node_modules/pi-antigravity/src/image/image.ts +86 -47
- package/node_modules/pi-antigravity/src/image/native.ts +69 -0
- package/node_modules/pi-antigravity/src/index.ts +52 -137
- package/node_modules/pi-antigravity/src/search/search.ts +130 -31
- package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
- package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
- package/node_modules/pi-antigravity/src/types/types.ts +1 -1
- package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
- package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
- package/node_modules/pi-lens/CHANGELOG.md +1159 -0
- package/node_modules/pi-lens/README.md +116 -25
- package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
- package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
- package/node_modules/pi-lens/dist/chunk-2FQ62SPM.js +83 -0
- package/node_modules/pi-lens/dist/chunk-2UMYMRI3.js +118 -0
- package/node_modules/pi-lens/dist/chunk-34OCDWOS.js +48 -0
- package/node_modules/pi-lens/dist/chunk-3FERWMCH.js +144 -0
- package/node_modules/pi-lens/dist/chunk-3JL6IFD7.js +97 -0
- package/node_modules/pi-lens/dist/chunk-3JSEWUWI.js +327 -0
- package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
- package/node_modules/pi-lens/dist/chunk-3MRXIJ6I.js +79 -0
- package/node_modules/pi-lens/dist/chunk-3P4PF2BX.js +2250 -0
- package/node_modules/pi-lens/dist/chunk-3PNFWVHT.js +201 -0
- package/node_modules/pi-lens/dist/chunk-3TTPKMEF.js +162 -0
- package/node_modules/pi-lens/dist/chunk-5JHXUETW.js +326 -0
- package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
- package/node_modules/pi-lens/dist/chunk-64LU2OVH.js +341 -0
- package/node_modules/pi-lens/dist/chunk-6B5I6ICN.js +44 -0
- package/node_modules/pi-lens/dist/chunk-6P54TMWL.js +274 -0
- package/node_modules/pi-lens/dist/chunk-6UYA642J.js +145 -0
- package/node_modules/pi-lens/dist/chunk-6XX5HCLK.js +398 -0
- package/node_modules/pi-lens/dist/chunk-7AXO3ZDF.js +30 -0
- package/node_modules/pi-lens/dist/chunk-7BX5DWSA.js +1907 -0
- package/node_modules/pi-lens/dist/chunk-7ELY2CSM.js +902 -0
- package/node_modules/pi-lens/dist/chunk-7M4T5N3V.js +38 -0
- package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
- package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
- package/node_modules/pi-lens/dist/chunk-AFZYMAIV.js +756 -0
- package/node_modules/pi-lens/dist/chunk-ALQRYH6O.js +112 -0
- package/node_modules/pi-lens/dist/chunk-AXKPQ6ZI.js +1610 -0
- package/node_modules/pi-lens/dist/chunk-BHWHXMQ2.js +62 -0
- package/node_modules/pi-lens/dist/chunk-BJF25SUG.js +22 -0
- package/node_modules/pi-lens/dist/chunk-BNKLYOOO.js +18 -0
- package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
- package/node_modules/pi-lens/dist/chunk-CBD2B5CP.js +599 -0
- package/node_modules/pi-lens/dist/chunk-CFYISHUW.js +42 -0
- package/node_modules/pi-lens/dist/chunk-CMU4RMJB.js +30 -0
- package/node_modules/pi-lens/dist/chunk-CULQYFLU.js +14 -0
- package/node_modules/pi-lens/dist/chunk-D65GOCJB.js +289 -0
- package/node_modules/pi-lens/dist/chunk-D6YF5HKX.js +59 -0
- package/node_modules/pi-lens/dist/chunk-DMS52BEP.js +342 -0
- package/node_modules/pi-lens/dist/chunk-ELVWJYRV.js +211 -0
- package/node_modules/pi-lens/dist/chunk-EUT3B22Y.js +27 -0
- package/node_modules/pi-lens/dist/chunk-F5VLZHUW.js +146 -0
- package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
- package/node_modules/pi-lens/dist/chunk-FGALODG3.js +55 -0
- package/node_modules/pi-lens/dist/chunk-G3RLJYA2.js +2358 -0
- package/node_modules/pi-lens/dist/chunk-GAYGGICG.js +32 -0
- package/node_modules/pi-lens/dist/chunk-H2W2AXD3.js +419 -0
- package/node_modules/pi-lens/dist/chunk-H5EV3VMF.js +114 -0
- package/node_modules/pi-lens/dist/chunk-HREZQCT3.js +106 -0
- package/node_modules/pi-lens/dist/chunk-HSIRMK2D.js +517 -0
- package/node_modules/pi-lens/dist/chunk-IMSQR4WO.js +184 -0
- package/node_modules/pi-lens/dist/chunk-IQZXOZ7S.js +4816 -0
- package/node_modules/pi-lens/dist/chunk-IR6XFA5P.js +37 -0
- package/node_modules/pi-lens/dist/chunk-IUKPRZER.js +78 -0
- package/node_modules/pi-lens/dist/chunk-IUR76K6A.js +262 -0
- package/node_modules/pi-lens/dist/chunk-J3FZR3YY.js +98 -0
- package/node_modules/pi-lens/dist/chunk-J6DFZDFA.js +562 -0
- package/node_modules/pi-lens/dist/chunk-J7WJZ6W7.js +50 -0
- package/node_modules/pi-lens/dist/chunk-JONGANYH.js +202 -0
- package/node_modules/pi-lens/dist/chunk-KJCWXUUS.js +425 -0
- package/node_modules/pi-lens/dist/chunk-KJN4IOEJ.js +17 -0
- package/node_modules/pi-lens/dist/chunk-KMGPUKFD.js +25 -0
- package/node_modules/pi-lens/dist/chunk-LD7WFTRX.js +4533 -0
- package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LNOMA3MP.js +169 -0
- package/node_modules/pi-lens/dist/chunk-MGIWSROG.js +2334 -0
- package/node_modules/pi-lens/dist/chunk-MQA2YBAH.js +308 -0
- package/node_modules/pi-lens/dist/chunk-MTDRLSI7.js +21720 -0
- package/node_modules/pi-lens/dist/chunk-N2IRDBZI.js +2355 -0
- package/node_modules/pi-lens/dist/chunk-N77WFUL7.js +50 -0
- package/node_modules/pi-lens/dist/chunk-N7YNJE5R.js +466 -0
- package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
- package/node_modules/pi-lens/dist/chunk-NFXP47RV.js +999 -0
- package/node_modules/pi-lens/dist/chunk-NJF2X5XF.js +45 -0
- package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
- package/node_modules/pi-lens/dist/chunk-O7HZX7CA.js +309 -0
- package/node_modules/pi-lens/dist/chunk-OC7LYAU5.js +708 -0
- package/node_modules/pi-lens/dist/chunk-OEX24ECI.js +348 -0
- package/node_modules/pi-lens/dist/chunk-OYOB3ZFG.js +78 -0
- package/node_modules/pi-lens/dist/chunk-OYTMZXRF.js +41 -0
- package/node_modules/pi-lens/dist/chunk-OZJINN4O.js +84 -0
- package/node_modules/pi-lens/dist/chunk-PCHDGUKT.js +23 -0
- package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
- package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
- package/node_modules/pi-lens/dist/chunk-RJFED73B.js +79 -0
- package/node_modules/pi-lens/dist/chunk-RTQNRM5X.js +27 -0
- package/node_modules/pi-lens/dist/chunk-S6AMWKPC.js +189 -0
- package/node_modules/pi-lens/dist/chunk-T4QZ6FEH.js +308 -0
- package/node_modules/pi-lens/dist/chunk-T54VJRAD.js +5456 -0
- package/node_modules/pi-lens/dist/chunk-TA5L5KWQ.js +167 -0
- package/node_modules/pi-lens/dist/chunk-TQFBZVCG.js +27 -0
- package/node_modules/pi-lens/dist/chunk-U52SAGRM.js +62 -0
- package/node_modules/pi-lens/dist/chunk-UEAHAMEI.js +5814 -0
- package/node_modules/pi-lens/dist/chunk-UGSMCQ4D.js +327 -0
- package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
- package/node_modules/pi-lens/dist/chunk-USHG4DLH.js +459 -0
- package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
- package/node_modules/pi-lens/dist/chunk-V5MEBST3.js +4139 -0
- package/node_modules/pi-lens/dist/chunk-VGEVL5EQ.js +29 -0
- package/node_modules/pi-lens/dist/chunk-VPWKF3GN.js +87 -0
- package/node_modules/pi-lens/dist/chunk-VSMJK3ZJ.js +1250 -0
- package/node_modules/pi-lens/dist/chunk-VYKKMYVT.js +560 -0
- package/node_modules/pi-lens/dist/chunk-VZHJS6DR.js +442 -0
- package/node_modules/pi-lens/dist/chunk-WATC3IQR.js +213 -0
- package/node_modules/pi-lens/dist/chunk-WPE5FPGR.js +54 -0
- package/node_modules/pi-lens/dist/chunk-WSEWKCXU.js +188 -0
- package/node_modules/pi-lens/dist/chunk-WW5BLB74.js +659 -0
- package/node_modules/pi-lens/dist/chunk-XGUL4SLQ.js +406 -0
- package/node_modules/pi-lens/dist/chunk-XHSCVSOL.js +170 -0
- package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
- package/node_modules/pi-lens/dist/chunk-YLN4K6WD.js +385 -0
- package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
- package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
- package/node_modules/pi-lens/dist/chunk-Z6BB4JLQ.js +478 -0
- package/node_modules/pi-lens/dist/chunk-Z7QQA2KT.js +27 -0
- package/node_modules/pi-lens/dist/chunk-ZETYB3XG.js +2626 -0
- package/node_modules/pi-lens/dist/chunk-ZMOMPX2Z.js +87 -0
- package/node_modules/pi-lens/dist/chunk-ZOEYVXSV.js +149 -0
- package/node_modules/pi-lens/dist/chunk-ZZUFZUQZ.js +12120 -0
- package/node_modules/pi-lens/dist/index.js +39712 -29876
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
- package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
- package/node_modules/pi-lens/dist/mcp/server.js +22688 -1573
- package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
- package/node_modules/pi-lens/dist/probes/installer.js +135 -0
- package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
- package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
- package/node_modules/pi-lens/docs/agent-guide.md +13 -4
- package/node_modules/pi-lens/docs/agent-tools.md +42 -0
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +5 -4
- package/node_modules/pi-lens/docs/configuration.md +28 -2
- package/node_modules/pi-lens/docs/custom-rules.md +25 -2
- package/node_modules/pi-lens/docs/environment-variables.md +86 -8
- package/node_modules/pi-lens/docs/features.md +45 -5
- package/node_modules/pi-lens/docs/globalconfig.md +2 -1
- package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +37 -4
- package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
- package/node_modules/pi-lens/docs/mcp.md +21 -5
- package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
- package/node_modules/pi-lens/docs/pi-lens-fixer.md +160 -88
- package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +736 -0
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +75 -7
- package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +189 -48
- package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
- package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
- package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
- package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
- package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/node_modules/pi-lens/docs/schema/pi-lens-config-v1.json +530 -0
- package/node_modules/pi-lens/docs/servercapabilities.md +56 -49
- package/node_modules/pi-lens/docs/settings.md +1 -0
- package/node_modules/pi-lens/docs/usage.md +5 -1
- package/node_modules/pi-lens/docs/word-index.md +6 -0
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
- package/node_modules/pi-lens/package.json +18 -6
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-identity-operator-on-literals-test.yml +12 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/throw-new-error-js-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/throw-new-error-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-identity-operator-on-literals.yml +20 -12
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/throw-new-error-js.yml +2 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/throw-new-error.yml +2 -2
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
- package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
- package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
- package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
- package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
- package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
- package/node_modules/pi-web-access/CHANGELOG.md +28 -0
- package/node_modules/pi-web-access/README.md +10 -6
- package/node_modules/pi-web-access/ceramic.ts +219 -0
- package/node_modules/pi-web-access/curator-page.ts +3 -1
- package/node_modules/pi-web-access/curator-server.ts +1 -0
- package/node_modules/pi-web-access/dist/index.js +846 -588
- package/node_modules/pi-web-access/dist/mcp-cli.js +725 -516
- package/node_modules/pi-web-access/gemini-search.ts +8 -4
- package/node_modules/pi-web-access/github-extract.ts +34 -2
- package/node_modules/pi-web-access/index.ts +72 -30
- package/node_modules/pi-web-access/openai-search.ts +3 -3
- package/node_modules/pi-web-access/package.json +2 -2
- package/node_modules/pi-web-access/page-query.ts +6 -9
- package/node_modules/pi-web-access/parallel-mcp.ts +2 -0
- package/node_modules/pi-web-access/query-rewrite.ts +2 -2
- package/node_modules/pi-web-access/storage.ts +49 -0
- package/node_modules/pi-web-access/summary-review.ts +7 -6
- package/node_modules/pi-web-access/utils.ts +21 -6
- package/node_modules/pi-web-access/web-tool-core.ts +1 -0
- package/package.json +19 -19
- package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ja.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.zh-CN.md +0 -212
- package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
- package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
- package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
- package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
- package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
- package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
- package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
- package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
- package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
- package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
- package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
- package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
- package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
- package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
- package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
- package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
- package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
- package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
- package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
- package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
- package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
- package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
- package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
- package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
- package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
- package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
- package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
- package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
- package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
- package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
- package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
- package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
- package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
- package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
- package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
- package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
- package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
- package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
- package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
- package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
- package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
- package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
- package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
- package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
- package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
- package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
- package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
- package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
- package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
- package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
- package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
- package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
- package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
- package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
- package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
- package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
- package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
- package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
- package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
- package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
- package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
- package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
- package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
- package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
- package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
- package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
- package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
- package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
- package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
- package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
- package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
- package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
- package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
- package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
- package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
- package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
- package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
- package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
- package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
- package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
- package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
- package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
- package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
- package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
- package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
- package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
- package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
- package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
- package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
- package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
- package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
- package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
- package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
- package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
- package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
- package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
- package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
- package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
- package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
- package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
- package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
- package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
- package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
- package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
- package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
- package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
- package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
- package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
- package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
- package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
- package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
- package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
- package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
- package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
- package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
- package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
- package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
- package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
- package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
- package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
- package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
- package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
- package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
- package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
- package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
- package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
- package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
- package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
- package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
- package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
- package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
- package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
- package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
- package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
- package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
- package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
- package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
- package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
- package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
- package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
- package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
- package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
- package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
- package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
- package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
- package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
- package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
- package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
- package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
- package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
- package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
- package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
- package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
- package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
- package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
- package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
- package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
- package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
- package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
- package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
- package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
- package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
- package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
- package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
- package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
- package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
- package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
- package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
- package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
- package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
- package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
- package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
- package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
- package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
- package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
- package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
- package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
- package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
- package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
- package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
- package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
- package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
- package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
- package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
- package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
- package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
- package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
- package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
- package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
- package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
- package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
- package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
- package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
- package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
- package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
- package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
- package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
- package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
- package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
- package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
- package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
- package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
- package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
- package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
- package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
- package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
- package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
- package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
- package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
- package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
- package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
- package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
- package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
- package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
- package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
- package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
- package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
- package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
- package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
- package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
- package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
- package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
- package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
- package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
- package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
- package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
- package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
- package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
- package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
- package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
- package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
- package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
- package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
- package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
- package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
- package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
- package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
- package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
- package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
- package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
- package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
- package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
- package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
- package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
- package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
- package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
- package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
- package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
- package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
- package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
- package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
- package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
- package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
- package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
- package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
- package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
- package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
- package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
- package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
- package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
- package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
- package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
- package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
- package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
- package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
- package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
- package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
- package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
- package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
- package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
- package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
- package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
- package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
- package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
- package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
- package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
- package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
- package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
- package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
- package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
- package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
- package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
- package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
- package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
- package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
- package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
- package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
- package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
- package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
- package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
- package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
- package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
- package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
- package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
- package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
- package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
- package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
- package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
- package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
- package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
- package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
- package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
- package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
- package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
- package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
- package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
- package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
- package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
- package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
- package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
- package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
- package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
- package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
- package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
- package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
- package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
- package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
- package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
- package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
- package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
- package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
- package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
- package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
- package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
- package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
- package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
- package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
- package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
- package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
- package/node_modules/pi-lens/dist/i18n.js +0 -69
- package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
- package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
- package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
- package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
- package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
- package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
- package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
- package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
- package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
- package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
- package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
- package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
- package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
- package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
- package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
- package/node_modules/pi-lens/dist/tools/shared.js +0 -29
- package/node_modules/pi-lens/dist/tools/symbol-search.js +0 -155
- package/node_modules/pi-web-access/opencode-session-headers.ts +0 -24
- package/node_modules/remote-pi/README.md +0 -675
- package/node_modules/remote-pi/dist/actions/handlers.d.ts +0 -122
- package/node_modules/remote-pi/dist/actions/handlers.js +0 -160
- package/node_modules/remote-pi/dist/actions/handlers.js.map +0 -1
- package/node_modules/remote-pi/dist/actions/registry.d.ts +0 -39
- package/node_modules/remote-pi/dist/actions/registry.js +0 -58
- package/node_modules/remote-pi/dist/actions/registry.js.map +0 -1
- package/node_modules/remote-pi/dist/bin/supervisord.d.ts +0 -2
- package/node_modules/remote-pi/dist/bin/supervisord.js +0 -86
- package/node_modules/remote-pi/dist/bin/supervisord.js.map +0 -1
- package/node_modules/remote-pi/dist/commands/builtin_mirror.d.ts +0 -58
- package/node_modules/remote-pi/dist/commands/builtin_mirror.js +0 -71
- package/node_modules/remote-pi/dist/commands/builtin_mirror.js.map +0 -1
- package/node_modules/remote-pi/dist/commands/list_commands.d.ts +0 -60
- package/node_modules/remote-pi/dist/commands/list_commands.js +0 -73
- package/node_modules/remote-pi/dist/commands/list_commands.js.map +0 -1
- package/node_modules/remote-pi/dist/config.d.ts +0 -62
- package/node_modules/remote-pi/dist/config.js +0 -115
- package/node_modules/remote-pi/dist/config.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/client.d.ts +0 -20
- package/node_modules/remote-pi/dist/daemon/client.js +0 -131
- package/node_modules/remote-pi/dist/daemon/client.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/control_protocol.d.ts +0 -176
- package/node_modules/remote-pi/dist/daemon/control_protocol.js +0 -63
- package/node_modules/remote-pi/dist/daemon/control_protocol.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/cron_log.d.ts +0 -45
- package/node_modules/remote-pi/dist/daemon/cron_log.js +0 -72
- package/node_modules/remote-pi/dist/daemon/cron_log.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/cron_registry.d.ts +0 -80
- package/node_modules/remote-pi/dist/daemon/cron_registry.js +0 -194
- package/node_modules/remote-pi/dist/daemon/cron_registry.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/id.d.ts +0 -24
- package/node_modules/remote-pi/dist/daemon/id.js +0 -36
- package/node_modules/remote-pi/dist/daemon/id.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/install.d.ts +0 -170
- package/node_modules/remote-pi/dist/daemon/install.js +0 -547
- package/node_modules/remote-pi/dist/daemon/install.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/registry.d.ts +0 -63
- package/node_modules/remote-pi/dist/daemon/registry.js +0 -153
- package/node_modules/remote-pi/dist/daemon/registry.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/rpc_child.d.ts +0 -194
- package/node_modules/remote-pi/dist/daemon/rpc_child.js +0 -389
- package/node_modules/remote-pi/dist/daemon/rpc_child.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/supervisor.d.ts +0 -93
- package/node_modules/remote-pi/dist/daemon/supervisor.js +0 -596
- package/node_modules/remote-pi/dist/daemon/supervisor.js.map +0 -1
- package/node_modules/remote-pi/dist/extension_ui_bridge.d.ts +0 -26
- package/node_modules/remote-pi/dist/extension_ui_bridge.js +0 -341
- package/node_modules/remote-pi/dist/extension_ui_bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/index.d.ts +0 -213
- package/node_modules/remote-pi/dist/index.js +0 -4996
- package/node_modules/remote-pi/dist/index.js.map +0 -1
- package/node_modules/remote-pi/dist/mcp/mesh_result.d.ts +0 -10
- package/node_modules/remote-pi/dist/mcp/mesh_result.js +0 -42
- package/node_modules/remote-pi/dist/mcp/mesh_result.js.map +0 -1
- package/node_modules/remote-pi/dist/mcp/mesh_server.d.ts +0 -16
- package/node_modules/remote-pi/dist/mcp/mesh_server.js +0 -327
- package/node_modules/remote-pi/dist/mcp/mesh_server.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/canonical.d.ts +0 -30
- package/node_modules/remote-pi/dist/mesh/canonical.js +0 -61
- package/node_modules/remote-pi/dist/mesh/canonical.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/client.d.ts +0 -18
- package/node_modules/remote-pi/dist/mesh/client.js +0 -125
- package/node_modules/remote-pi/dist/mesh/client.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/encoding.d.ts +0 -38
- package/node_modules/remote-pi/dist/mesh/encoding.js +0 -216
- package/node_modules/remote-pi/dist/mesh/encoding.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/self_revoke.d.ts +0 -73
- package/node_modules/remote-pi/dist/mesh/self_revoke.js +0 -401
- package/node_modules/remote-pi/dist/mesh/self_revoke.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/siblings.d.ts +0 -49
- package/node_modules/remote-pi/dist/mesh/siblings.js +0 -159
- package/node_modules/remote-pi/dist/mesh/siblings.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/types.d.ts +0 -34
- package/node_modules/remote-pi/dist/mesh/types.js +0 -11
- package/node_modules/remote-pi/dist/mesh/types.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/verify.d.ts +0 -17
- package/node_modules/remote-pi/dist/mesh/verify.js +0 -86
- package/node_modules/remote-pi/dist/mesh/verify.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/crypto.d.ts +0 -8
- package/node_modules/remote-pi/dist/pairing/crypto.js +0 -22
- package/node_modules/remote-pi/dist/pairing/crypto.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/handshake.d.ts +0 -28
- package/node_modules/remote-pi/dist/pairing/handshake.js +0 -113
- package/node_modules/remote-pi/dist/pairing/handshake.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/noise-sha256.d.ts +0 -16
- package/node_modules/remote-pi/dist/pairing/noise-sha256.js +0 -103
- package/node_modules/remote-pi/dist/pairing/noise-sha256.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/qr.d.ts +0 -59
- package/node_modules/remote-pi/dist/pairing/qr.js +0 -125
- package/node_modules/remote-pi/dist/pairing/qr.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/storage.d.ts +0 -120
- package/node_modules/remote-pi/dist/pairing/storage.js +0 -604
- package/node_modules/remote-pi/dist/pairing/storage.js.map +0 -1
- package/node_modules/remote-pi/dist/protocol/codec.d.ts +0 -7
- package/node_modules/remote-pi/dist/protocol/codec.js +0 -49
- package/node_modules/remote-pi/dist/protocol/codec.js.map +0 -1
- package/node_modules/remote-pi/dist/protocol/types.d.ts +0 -393
- package/node_modules/remote-pi/dist/protocol/types.js +0 -2
- package/node_modules/remote-pi/dist/protocol/types.js.map +0 -1
- package/node_modules/remote-pi/dist/rooms.d.ts +0 -29
- package/node_modules/remote-pi/dist/rooms.js +0 -57
- package/node_modules/remote-pi/dist/rooms.js.map +0 -1
- package/node_modules/remote-pi/dist/session/address.d.ts +0 -49
- package/node_modules/remote-pi/dist/session/address.js +0 -58
- package/node_modules/remote-pi/dist/session/address.js.map +0 -1
- package/node_modules/remote-pi/dist/session/agent_bridge.d.ts +0 -55
- package/node_modules/remote-pi/dist/session/agent_bridge.js +0 -146
- package/node_modules/remote-pi/dist/session/agent_bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/session/bridge.d.ts +0 -37
- package/node_modules/remote-pi/dist/session/bridge.js +0 -130
- package/node_modules/remote-pi/dist/session/bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/session/broker.d.ts +0 -189
- package/node_modules/remote-pi/dist/session/broker.js +0 -507
- package/node_modules/remote-pi/dist/session/broker.js.map +0 -1
- package/node_modules/remote-pi/dist/session/broker_remote.d.ts +0 -74
- package/node_modules/remote-pi/dist/session/broker_remote.js +0 -583
- package/node_modules/remote-pi/dist/session/broker_remote.js.map +0 -1
- package/node_modules/remote-pi/dist/session/cwd_lock.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/cwd_lock.js +0 -126
- package/node_modules/remote-pi/dist/session/cwd_lock.js.map +0 -1
- package/node_modules/remote-pi/dist/session/envelope.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/envelope.js +0 -117
- package/node_modules/remote-pi/dist/session/envelope.js.map +0 -1
- package/node_modules/remote-pi/dist/session/global_config.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/global_config.js +0 -73
- package/node_modules/remote-pi/dist/session/global_config.js.map +0 -1
- package/node_modules/remote-pi/dist/session/ipc.d.ts +0 -27
- package/node_modules/remote-pi/dist/session/ipc.js +0 -22
- package/node_modules/remote-pi/dist/session/ipc.js.map +0 -1
- package/node_modules/remote-pi/dist/session/leader_election.d.ts +0 -32
- package/node_modules/remote-pi/dist/session/leader_election.js +0 -106
- package/node_modules/remote-pi/dist/session/leader_election.js.map +0 -1
- package/node_modules/remote-pi/dist/session/local_config.d.ts +0 -55
- package/node_modules/remote-pi/dist/session/local_config.js +0 -157
- package/node_modules/remote-pi/dist/session/local_config.js.map +0 -1
- package/node_modules/remote-pi/dist/session/mesh_message.d.ts +0 -20
- package/node_modules/remote-pi/dist/session/mesh_message.js +0 -28
- package/node_modules/remote-pi/dist/session/mesh_message.js.map +0 -1
- package/node_modules/remote-pi/dist/session/mesh_node.d.ts +0 -116
- package/node_modules/remote-pi/dist/session/mesh_node.js +0 -573
- package/node_modules/remote-pi/dist/session/mesh_node.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer.d.ts +0 -139
- package/node_modules/remote-pi/dist/session/peer.js +0 -451
- package/node_modules/remote-pi/dist/session/peer.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer_inventory.d.ts +0 -13
- package/node_modules/remote-pi/dist/session/peer_inventory.js +0 -48
- package/node_modules/remote-pi/dist/session/peer_inventory.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer_limits.d.ts +0 -9
- package/node_modules/remote-pi/dist/session/peer_limits.js +0 -21
- package/node_modules/remote-pi/dist/session/peer_limits.js.map +0 -1
- package/node_modules/remote-pi/dist/session/setup_wizard.d.ts +0 -39
- package/node_modules/remote-pi/dist/session/setup_wizard.js +0 -63
- package/node_modules/remote-pi/dist/session/setup_wizard.js.map +0 -1
- package/node_modules/remote-pi/dist/session/tool_gate.d.ts +0 -5
- package/node_modules/remote-pi/dist/session/tool_gate.js +0 -11
- package/node_modules/remote-pi/dist/session/tool_gate.js.map +0 -1
- package/node_modules/remote-pi/dist/session/tools.d.ts +0 -24
- package/node_modules/remote-pi/dist/session/tools.js +0 -252
- package/node_modules/remote-pi/dist/session/tools.js.map +0 -1
- package/node_modules/remote-pi/dist/session/wizard.d.ts +0 -13
- package/node_modules/remote-pi/dist/session/wizard.js +0 -20
- package/node_modules/remote-pi/dist/session/wizard.js.map +0 -1
- package/node_modules/remote-pi/dist/settings.d.ts +0 -15
- package/node_modules/remote-pi/dist/settings.js +0 -52
- package/node_modules/remote-pi/dist/settings.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/peer_channel.d.ts +0 -37
- package/node_modules/remote-pi/dist/transport/peer_channel.js +0 -98
- package/node_modules/remote-pi/dist/transport/peer_channel.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/pi_forward_client.d.ts +0 -29
- package/node_modules/remote-pi/dist/transport/pi_forward_client.js +0 -62
- package/node_modules/remote-pi/dist/transport/pi_forward_client.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/relay_client.d.ts +0 -91
- package/node_modules/remote-pi/dist/transport/relay_client.js +0 -206
- package/node_modules/remote-pi/dist/transport/relay_client.js.map +0 -1
- package/node_modules/remote-pi/dist/ui/footer.d.ts +0 -32
- package/node_modules/remote-pi/dist/ui/footer.js +0 -34
- package/node_modules/remote-pi/dist/ui/footer.js.map +0 -1
- package/node_modules/remote-pi/docs/daemon.md +0 -289
- package/node_modules/remote-pi/package.json +0 -92
- package/node_modules/remote-pi/service-templates/launchd.plist.template +0 -35
- package/node_modules/remote-pi/service-templates/systemd.service.template +0 -19
- package/node_modules/remote-pi/service-templates/task-launcher.vbs.template +0 -10
- package/node_modules/remote-pi/service-templates/task-scheduler.xml.template +0 -38
- package/node_modules/remote-pi/skills/agent-network/SKILL.md +0 -310
|
@@ -1,746 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP Process Launch Utilities
|
|
3
|
-
*
|
|
4
|
-
* Handles spawning LSP servers via various methods:
|
|
5
|
-
* - Direct binary execution (using absolute paths on Windows)
|
|
6
|
-
* - Node.js scripts (npx/bun)
|
|
7
|
-
* - Package manager execution
|
|
8
|
-
*/
|
|
9
|
-
import { execFileSync, spawn as nodeSpawn, } from "node:child_process";
|
|
10
|
-
import fs from "node:fs";
|
|
11
|
-
import os from "node:os";
|
|
12
|
-
import path from "node:path";
|
|
13
|
-
import { isTestMode } from "../env-utils.js";
|
|
14
|
-
import { getGlobalPiLensDir } from "../file-utils.js";
|
|
15
|
-
import { getGlobalPiLensLogDir } from "../probe-home-state.js";
|
|
16
|
-
import { isFullyQualified } from "../path-utils.js";
|
|
17
|
-
import { findGlobalBinary } from "../package-manager.js";
|
|
18
|
-
import { redactSecrets } from "../redact/secrets.js";
|
|
19
|
-
import { classifySpawnFailure, holdOwnChildPid, isOwnLiveChild, SpawnFailureError, } from "../safe-spawn.js";
|
|
20
|
-
import { getRubyVersionDirNamesAsync } from "./ruby-drive-dirs.js";
|
|
21
|
-
const isWindows = process.platform === "win32";
|
|
22
|
-
/**
|
|
23
|
-
* Whether a resolved command must be spawned through a shell on Windows.
|
|
24
|
-
* `.cmd`/`.bat` are scripts cmd.exe must interpret; extensionless or spaced-path
|
|
25
|
-
* commands also go through the shell so cmd resolves/quotes them.
|
|
26
|
-
*/
|
|
27
|
-
function computeNeedsShell(resolvedCommand) {
|
|
28
|
-
return (isWindows &&
|
|
29
|
-
(resolvedCommand.includes(" ") ||
|
|
30
|
-
/\.(cmd|bat)$/i.test(resolvedCommand) ||
|
|
31
|
-
!/\.(exe|cmd|bat)$/i.test(resolvedCommand)));
|
|
32
|
-
}
|
|
33
|
-
const DEFAULT_STARTUP_FAILURE_WINDOW_MS = 50;
|
|
34
|
-
const WINDOWS_NAV_STARTUP_FAILURE_WINDOW_MS = 500;
|
|
35
|
-
const SESSIONSTART_LOG_DIR = getGlobalPiLensLogDir();
|
|
36
|
-
const SESSIONSTART_LOG = path.join(SESSIONSTART_LOG_DIR, "sessionstart.log");
|
|
37
|
-
const PI_LENS_BIN_DIR = path.join(getGlobalPiLensDir(), "bin");
|
|
38
|
-
const PI_LENS_TOOLS_BIN_DIR = path.join(getGlobalPiLensDir(), "tools", "node_modules", ".bin");
|
|
39
|
-
function logSessionStart(msg) {
|
|
40
|
-
if (isTestMode()) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Crash-adjacent: keep this write synchronous so a hard launch failure
|
|
44
|
-
// cannot discard the final diagnostic from an async logger queue.
|
|
45
|
-
const line = redactSecrets(`[${new Date().toISOString()}] ${msg}\n`);
|
|
46
|
-
try {
|
|
47
|
-
fs.mkdirSync(SESSIONSTART_LOG_DIR, { recursive: true });
|
|
48
|
-
fs.appendFileSync(SESSIONSTART_LOG, line);
|
|
49
|
-
}
|
|
50
|
-
catch { }
|
|
51
|
-
}
|
|
52
|
-
function compactLogValue(value, max = 280) {
|
|
53
|
-
const normalized = value.replace(/\s+/g, " ").trim();
|
|
54
|
-
if (!normalized)
|
|
55
|
-
return "";
|
|
56
|
-
return normalized.length > max
|
|
57
|
-
? `${normalized.slice(0, max)}...`
|
|
58
|
-
: normalized;
|
|
59
|
-
}
|
|
60
|
-
function delimiterForPlatform(platform) {
|
|
61
|
-
return platform === "win32" ? ";" : ":";
|
|
62
|
-
}
|
|
63
|
-
function splitPathEntries(value, delimiter) {
|
|
64
|
-
if (!value)
|
|
65
|
-
return [];
|
|
66
|
-
return value
|
|
67
|
-
.split(delimiter)
|
|
68
|
-
.map((entry) => entry.trim())
|
|
69
|
-
.filter((entry) => entry.length > 0);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Dedupe key for one PATH entry, under `platform`'s rules.
|
|
73
|
-
*
|
|
74
|
-
* #1193 P3: the body used the HOST-DEFAULT `path.normalize` inside a branch
|
|
75
|
-
* already committed to `platform` (AGENTS.md defect shape 2), so on the ubuntu
|
|
76
|
-
* lane the win32 arm lowercased without folding separators or dot segments and
|
|
77
|
-
* `C:\Tools` / `C:/Tools` / `C:\x\..\Tools` were three keys for one directory.
|
|
78
|
-
* Each arm now parses with its own `path` flavor. That is the whole fix: a
|
|
79
|
-
* `toPosix` call on the win32 arm would be INERT — `win32.normalize` already
|
|
80
|
-
* answers backslashes for either input separator (measured: adding it left
|
|
81
|
-
* every case green) — and the POSIX arm must NOT fold separators at all,
|
|
82
|
-
* because a backslash is a legal POSIX filename character and `/opt/a\b` and
|
|
83
|
-
* `/opt/a/b` are two directories there.
|
|
84
|
-
*
|
|
85
|
-
* Ephemeral by construction: the key exists only inside one
|
|
86
|
-
* `combinePathValuesForPlatform` call's `seen` set — the ORIGINAL entry string
|
|
87
|
-
* is what survives into the joined PATH — so it never reaches a persisted or
|
|
88
|
-
* cross-process record and `normalizeEphemeralMapKey`'s `process.platform` read
|
|
89
|
-
* would defeat the explicit-`platform` seam these arms exist for.
|
|
90
|
-
*/
|
|
91
|
-
function normalizePathEntry(entry, platform) {
|
|
92
|
-
if (platform !== "win32")
|
|
93
|
-
return path.posix.normalize(entry);
|
|
94
|
-
return path.win32.normalize(entry).toLowerCase();
|
|
95
|
-
}
|
|
96
|
-
export function combinePathValuesForPlatform(values, platform = process.platform) {
|
|
97
|
-
const unique = [];
|
|
98
|
-
const seen = new Set();
|
|
99
|
-
const delimiter = delimiterForPlatform(platform);
|
|
100
|
-
for (const value of values) {
|
|
101
|
-
for (const entry of splitPathEntries(value, delimiter)) {
|
|
102
|
-
const key = normalizePathEntry(entry, platform);
|
|
103
|
-
if (seen.has(key))
|
|
104
|
-
continue;
|
|
105
|
-
seen.add(key);
|
|
106
|
-
unique.push(entry);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return unique.join(delimiter);
|
|
110
|
-
}
|
|
111
|
-
function resolvePathValue(env) {
|
|
112
|
-
return combinePathValuesForPlatform([env.PATH, env.Path, env.path]);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Run an `execFileSync` probe with the #2095 stderr guard applied, returning
|
|
116
|
-
* `""` on any failure. Exported as a small test seam: production always calls
|
|
117
|
-
* it with the fixed `powershell.exe` command/args below, but a test can pass
|
|
118
|
-
* a command guaranteed to fail with real stderr output (no real Windows or
|
|
119
|
-
* powershell.exe required) to prove the guard is actually reached and not
|
|
120
|
-
* vacuous.
|
|
121
|
-
*/
|
|
122
|
-
export function runStderrGuardedProbe(command, args) {
|
|
123
|
-
try {
|
|
124
|
-
const { execFileSync } = require("node:child_process");
|
|
125
|
-
const out = execFileSync(command, args, {
|
|
126
|
-
timeout: 3000,
|
|
127
|
-
encoding: "utf8",
|
|
128
|
-
// #2095 sibling: execFileSync inherits stderr to the parent by
|
|
129
|
-
// default (only stdout is captured into `out`), so a failed
|
|
130
|
-
// powershell.exe launch would print raw diagnostics into the pi
|
|
131
|
-
// TUI even though the surrounding catch already returns "" (read as
|
|
132
|
-
// "unknown" PATH by every caller). Pipe stderr instead of inheriting it.
|
|
133
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
134
|
-
});
|
|
135
|
-
return out.trim();
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
return "";
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/** Read live system+user PATH from Windows registry (bypasses stale process.env.PATH). */
|
|
142
|
-
function readWindowsRegistryPath() {
|
|
143
|
-
return runStderrGuardedProbe("powershell.exe", [
|
|
144
|
-
"-NoProfile",
|
|
145
|
-
"-NonInteractive",
|
|
146
|
-
"-Command",
|
|
147
|
-
"[System.Environment]::GetEnvironmentVariable('Path','Machine') + ';' + [System.Environment]::GetEnvironmentVariable('Path','User')",
|
|
148
|
-
]);
|
|
149
|
-
}
|
|
150
|
-
let _liveWindowsPath = null;
|
|
151
|
-
function getLiveWindowsPath() {
|
|
152
|
-
if (_liveWindowsPath === null) {
|
|
153
|
-
_liveWindowsPath = readWindowsRegistryPath();
|
|
154
|
-
}
|
|
155
|
-
return _liveWindowsPath;
|
|
156
|
-
}
|
|
157
|
-
async function buildAugmentedPath(basePath) {
|
|
158
|
-
const candidates = [];
|
|
159
|
-
const nodeDir = path.dirname(process.execPath);
|
|
160
|
-
if (nodeDir) {
|
|
161
|
-
candidates.push(nodeDir);
|
|
162
|
-
}
|
|
163
|
-
if (isWindows) {
|
|
164
|
-
const home = os.homedir();
|
|
165
|
-
const driveRoot = path.parse(home).root; // e.g. "C:\"
|
|
166
|
-
candidates.push(path.join(home, ".cargo", "bin"));
|
|
167
|
-
candidates.push(path.join(home, "go", "bin"));
|
|
168
|
-
candidates.push(path.join(home, ".dotnet", "tools"));
|
|
169
|
-
candidates.push(PI_LENS_BIN_DIR);
|
|
170
|
-
candidates.push(PI_LENS_TOOLS_BIN_DIR);
|
|
171
|
-
candidates.push(path.join(driveRoot, "Program Files", "Go", "bin"));
|
|
172
|
-
candidates.push(path.join(driveRoot, "Go", "bin"));
|
|
173
|
-
// Ruby installer drops versioned dirs (e.g. Ruby34-x64) on the drive root.
|
|
174
|
-
// Read off the event loop and memoized once per process (#1137): a
|
|
175
|
-
// synchronous drive-root enumeration on every LSP spawn blocked the loop
|
|
176
|
-
// for the whole stall on a slow cloud/network-backed drive root.
|
|
177
|
-
for (const entry of await getRubyVersionDirNamesAsync(driveRoot)) {
|
|
178
|
-
candidates.push(path.join(driveRoot, entry, "bin"));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// On Windows, merge the live registry PATH so newly installed tools are visible
|
|
182
|
-
// even if the pi agent process started before they were installed.
|
|
183
|
-
const effectiveBase = isWindows
|
|
184
|
-
? combinePathValuesForPlatform([basePath, getLiveWindowsPath()])
|
|
185
|
-
: basePath;
|
|
186
|
-
const existing = new Set();
|
|
187
|
-
for (const entry of splitPathEntries(effectiveBase, path.delimiter)) {
|
|
188
|
-
if (!entry)
|
|
189
|
-
continue;
|
|
190
|
-
existing.add(normalizePathEntry(entry, process.platform));
|
|
191
|
-
}
|
|
192
|
-
const toAppend = [];
|
|
193
|
-
for (const candidate of candidates) {
|
|
194
|
-
if (!candidate || !fs.existsSync(candidate))
|
|
195
|
-
continue;
|
|
196
|
-
const normalized = normalizePathEntry(candidate, process.platform);
|
|
197
|
-
if (existing.has(normalized))
|
|
198
|
-
continue;
|
|
199
|
-
toAppend.push(candidate);
|
|
200
|
-
existing.add(normalized);
|
|
201
|
-
}
|
|
202
|
-
if (toAppend.length === 0)
|
|
203
|
-
return basePath ?? "";
|
|
204
|
-
if (!basePath)
|
|
205
|
-
return toAppend.join(path.delimiter);
|
|
206
|
-
return `${basePath}${path.delimiter}${toAppend.join(path.delimiter)}`;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Validate that a .cmd shim's target JS/script exists before attempting to
|
|
210
|
-
* spawn it. npm-generated .cmd files reference the actual script via a path
|
|
211
|
-
* like `"%~dp0\..\yaml-language-server\bin\yaml-language-server"`. If that
|
|
212
|
-
* target is missing the shim will exit immediately with code 1 after a 500ms
|
|
213
|
-
* startup window — pre-checking avoids the delay.
|
|
214
|
-
* Returns true if the shim is valid (or we can't determine), false if the
|
|
215
|
-
* target is definitively missing.
|
|
216
|
-
*/
|
|
217
|
-
export function isCmdShimValid(cmdPath) {
|
|
218
|
-
try {
|
|
219
|
-
const content = fs.readFileSync(cmdPath, "utf-8");
|
|
220
|
-
// npm cmd shim pattern: "%~dp0\..\<relpath>" or "%~dp0/<relpath>"
|
|
221
|
-
// The `-` ends the char class, where it is a literal and needs no escape.
|
|
222
|
-
// oxfmt formats this repository (#1844) and rewrites no regex literal, so
|
|
223
|
-
// this line needs no suppression; the directive oxfmt honors, if one is
|
|
224
|
-
// ever needed here, is `// prettier-ignore`.
|
|
225
|
-
const match = content.match(/"%~dp0[/\\]\.\.[/\\]((?:[\w./@-]|\\)+\.(?:mjs|cjs|js))"/i);
|
|
226
|
-
if (!match)
|
|
227
|
-
return true; // non-npm shim — let it through
|
|
228
|
-
const relPath = match[1].replace(/[/\\]/g, path.sep);
|
|
229
|
-
const target = path.resolve(path.dirname(cmdPath), "..", relPath);
|
|
230
|
-
return fs.existsSync(target);
|
|
231
|
-
}
|
|
232
|
-
catch {
|
|
233
|
-
return true; // can't read — be permissive
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* On Windows, npm creates .ps1 wrappers that hang indefinitely when PowerShell
|
|
238
|
-
* execution policy is Restricted or AllSigned. Bypass by preferring the .cmd
|
|
239
|
-
* sibling (runs under cmd.exe, no execution policy) or falling back to direct
|
|
240
|
-
* Node.js execution of the JS entry point extracted from the PS1 script.
|
|
241
|
-
* Returns undefined if no safe bypass is found.
|
|
242
|
-
*/
|
|
243
|
-
function bypassPs1OnWindows(ps1Path, args) {
|
|
244
|
-
// 1. Prefer the .cmd sibling — cmd.exe handles it without execution policy issues
|
|
245
|
-
const cmdPath = `${ps1Path.slice(0, -4)}.cmd`;
|
|
246
|
-
if (fs.existsSync(cmdPath)) {
|
|
247
|
-
return { command: cmdPath, args, needsShell: true };
|
|
248
|
-
}
|
|
249
|
-
// 2. Parse the .ps1 to find the JS entry point and invoke via node directly.
|
|
250
|
-
// npm-generated PS1 pattern: "$basedir/../<package>/bin/cli.js"
|
|
251
|
-
try {
|
|
252
|
-
const content = fs.readFileSync(ps1Path, "utf-8");
|
|
253
|
-
// Same char class as isCmdShimValid above, and the same note: the trailing
|
|
254
|
-
// `-` is a literal, and oxfmt leaves regex literals alone.
|
|
255
|
-
const match = content.match(/"\$basedir[/\\]\.\.[/\\]((?:[\w./@-]|\\)+\.(?:mjs|cjs|js))"/i);
|
|
256
|
-
if (match) {
|
|
257
|
-
const relPath = match[1].replace(/[/\\]/g, path.sep);
|
|
258
|
-
const jsPath = path.resolve(path.dirname(ps1Path), "..", relPath);
|
|
259
|
-
if (fs.existsSync(jsPath)) {
|
|
260
|
-
return {
|
|
261
|
-
command: process.execPath,
|
|
262
|
-
args: [jsPath, ...args],
|
|
263
|
-
needsShell: false,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
// Can't read PS1 — no bypass available
|
|
270
|
-
}
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
function findBinaryOnPath(command, env) {
|
|
274
|
-
try {
|
|
275
|
-
const result = execFileSync(isWindows ? "where" : "which", [command], {
|
|
276
|
-
encoding: "utf-8",
|
|
277
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
278
|
-
env,
|
|
279
|
-
// #1980 population sweep: this was the one synchronous
|
|
280
|
-
// child-process site in the repo with no bound at all. It runs on
|
|
281
|
-
// the LSP server spawn path, so an unresponsive `where`/`which` — a
|
|
282
|
-
// stale network PATH entry is the classic cause — parked the event
|
|
283
|
-
// loop with no ceiling, and read as ordinary compute in
|
|
284
|
-
// `loop_block`. 5s matches `isCommandAvailable`/`findCommand` in
|
|
285
|
-
// clients/safe-spawn.ts, which run these same two binaries.
|
|
286
|
-
timeout: 5000,
|
|
287
|
-
})
|
|
288
|
-
.split(/\r?\n/)
|
|
289
|
-
.map((line) => line.trim())
|
|
290
|
-
.filter(Boolean);
|
|
291
|
-
for (const candidate of result) {
|
|
292
|
-
if (fs.existsSync(candidate)) {
|
|
293
|
-
return candidate;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
catch {
|
|
298
|
-
// ignore lookup failures
|
|
299
|
-
}
|
|
300
|
-
return undefined;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Try to spawn a process, throwing immediately if it fails
|
|
304
|
-
*/
|
|
305
|
-
function trySpawn(command, args, cwd, env, needsShell) {
|
|
306
|
-
let proc;
|
|
307
|
-
if (needsShell) {
|
|
308
|
-
// Build a cmd.exe-safe command string: wrap in double quotes, escape internal
|
|
309
|
-
// quotes by doubling them, and escape cmd metacharacters (& | < > ^ ( ) !) with ^
|
|
310
|
-
const escapeCmdArg = (s) => {
|
|
311
|
-
// Escape cmd.exe metacharacters first, then wrap in quotes if needed
|
|
312
|
-
const escaped = s.replace(/([&|<>^()!])/g, "^$1");
|
|
313
|
-
return /[\s"]/.test(escaped)
|
|
314
|
-
? `"${escaped.replace(/"/g, '""')}"`
|
|
315
|
-
: escaped;
|
|
316
|
-
};
|
|
317
|
-
// shell:true justified: Windows .cmd/.bat LSP binaries (e.g. typescript-language-server.cmd)
|
|
318
|
-
// cannot be spawned via execFile — cmd.exe must interpret the script wrapper.
|
|
319
|
-
const shellCommand = `"${command}" ${args.map(escapeCmdArg).join(" ")}`;
|
|
320
|
-
// #2015 class-sweep exemption: this is a LONG-LIVED language-server launch,
|
|
321
|
-
// not a bounded probe - killing it on a timeout would be wrong, and its
|
|
322
|
-
// lifetime is owned by the LSP lifecycle, not the spawner. Exempt from the
|
|
323
|
-
// verifyToolBinary/probe tree-kill migration.
|
|
324
|
-
proc = nodeSpawn(shellCommand, [], {
|
|
325
|
-
cwd,
|
|
326
|
-
env,
|
|
327
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
328
|
-
detached: !isWindows,
|
|
329
|
-
windowsHide: true,
|
|
330
|
-
shell: true,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
// Use normal spawn without shell
|
|
335
|
-
proc = nodeSpawn(command, args, {
|
|
336
|
-
cwd,
|
|
337
|
-
env,
|
|
338
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
339
|
-
detached: !isWindows,
|
|
340
|
-
windowsHide: isWindows,
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
if (!proc.stdin || !proc.stdout || !proc.stderr) {
|
|
344
|
-
throw new Error(`Failed to spawn LSP server: ${command}`);
|
|
345
|
-
}
|
|
346
|
-
// Check if process exited immediately (spawn failure - synchronous check)
|
|
347
|
-
if (proc.exitCode !== null || proc.killed) {
|
|
348
|
-
throw new Error(`LSP server ${command} exited immediately (code: ${proc.exitCode}). ` +
|
|
349
|
-
`The binary may be missing or corrupted.`);
|
|
350
|
-
}
|
|
351
|
-
// #3091 F1-r2: take ownership HERE, while the child is provably alive. LSP
|
|
352
|
-
// servers are the one long-lived child pi-lens spawns outside
|
|
353
|
-
// `safeSpawnAsync`, so without this their first offer of verification is
|
|
354
|
-
// `stopLSP`'s group kill — by which time, on the `processExiting` path, the
|
|
355
|
-
// leader can already be dead, `/proc` is gone, and the group signal that
|
|
356
|
-
// reaps surviving grandchildren (#2026) is refused. The verdict is released
|
|
357
|
-
// by `killProcessTree` when the shutdown ladder is done with the pid.
|
|
358
|
-
holdOwnChildPid(proc.pid, "lsp-spawn");
|
|
359
|
-
return proc;
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Attach error handler to a spawned process to prevent ENOENT crashes
|
|
363
|
-
* This catches "command not found" errors and other spawn failures
|
|
364
|
-
* Returns a promise that rejects if an immediate error occurs
|
|
365
|
-
*/
|
|
366
|
-
function unrefLspProcessHandles(proc) {
|
|
367
|
-
try {
|
|
368
|
-
proc.unref();
|
|
369
|
-
}
|
|
370
|
-
catch {
|
|
371
|
-
// best-effort
|
|
372
|
-
}
|
|
373
|
-
for (const stream of [proc.stdin, proc.stdout, proc.stderr]) {
|
|
374
|
-
try {
|
|
375
|
-
stream?.unref?.();
|
|
376
|
-
}
|
|
377
|
-
catch {
|
|
378
|
-
// best-effort
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
function _attachErrorHandler(proc, context, logContext, rejectOnImmediateError) {
|
|
383
|
-
let stderrPreview = "";
|
|
384
|
-
let closeLogged = false;
|
|
385
|
-
const onStderr = (chunk) => {
|
|
386
|
-
if (stderrPreview.length >= 4000)
|
|
387
|
-
return;
|
|
388
|
-
stderrPreview += chunk.toString();
|
|
389
|
-
};
|
|
390
|
-
proc.stderr?.on("data", onStderr);
|
|
391
|
-
proc.on("error", (err) => {
|
|
392
|
-
if (logContext) {
|
|
393
|
-
logSessionStart("lsp process " +
|
|
394
|
-
context +
|
|
395
|
-
": spawn-error command=" +
|
|
396
|
-
logContext.command +
|
|
397
|
-
" args=" +
|
|
398
|
-
JSON.stringify(logContext.args) +
|
|
399
|
-
" cwd=" +
|
|
400
|
-
logContext.cwd +
|
|
401
|
-
" pid=" +
|
|
402
|
-
(logContext.pid ?? 0) +
|
|
403
|
-
" error=" +
|
|
404
|
-
err.message +
|
|
405
|
-
(stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
|
|
406
|
-
}
|
|
407
|
-
// Preserve intent at the boundary instead of leaking a raw errno check.
|
|
408
|
-
if (rejectOnImmediateError && logContext) {
|
|
409
|
-
void classifySpawnFailure(err, {
|
|
410
|
-
command: logContext.command,
|
|
411
|
-
cwd: logContext.cwd,
|
|
412
|
-
}).then(rejectOnImmediateError);
|
|
413
|
-
}
|
|
414
|
-
});
|
|
415
|
-
proc.on("close", (code, signal) => {
|
|
416
|
-
if (closeLogged)
|
|
417
|
-
return;
|
|
418
|
-
closeLogged = true;
|
|
419
|
-
proc.stderr?.off("data", onStderr);
|
|
420
|
-
if (code !== 0 && code !== null) {
|
|
421
|
-
if (logContext) {
|
|
422
|
-
logSessionStart("lsp process " +
|
|
423
|
-
context +
|
|
424
|
-
": closed code=" +
|
|
425
|
-
code +
|
|
426
|
-
(signal ? " signal=" + signal : "") +
|
|
427
|
-
" command=" +
|
|
428
|
-
logContext.command +
|
|
429
|
-
" args=" +
|
|
430
|
-
JSON.stringify(logContext.args) +
|
|
431
|
-
" cwd=" +
|
|
432
|
-
logContext.cwd +
|
|
433
|
-
" pid=" +
|
|
434
|
-
(logContext.pid ?? 0) +
|
|
435
|
-
(stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
else if (signal && logContext) {
|
|
439
|
-
logSessionStart("lsp process " +
|
|
440
|
-
context +
|
|
441
|
-
": closed signal=" +
|
|
442
|
-
signal +
|
|
443
|
-
" command=" +
|
|
444
|
-
logContext.command +
|
|
445
|
-
" args=" +
|
|
446
|
-
JSON.stringify(logContext.args) +
|
|
447
|
-
" cwd=" +
|
|
448
|
-
logContext.cwd +
|
|
449
|
-
" pid=" +
|
|
450
|
-
(logContext.pid ?? 0) +
|
|
451
|
-
(stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Spawn an LSP server process
|
|
457
|
-
*
|
|
458
|
-
* Key fixes for Windows:
|
|
459
|
-
* - Uses absolute paths (relative paths fail in shell mode)
|
|
460
|
-
* - Uses shell: true for .cmd files
|
|
461
|
-
* - Uses windowsHide to prevent console window popup
|
|
462
|
-
* - Detects immediate spawn failures (ENOENT) before returning
|
|
463
|
-
*
|
|
464
|
-
* @param command - Command to run (e.g., "typescript-language-server")
|
|
465
|
-
* @param args - Arguments (e.g., ["--stdio"])
|
|
466
|
-
* @param options - Spawn options including cwd, env
|
|
467
|
-
* @returns LSPProcess handle
|
|
468
|
-
*/
|
|
469
|
-
export async function launchLSP(command, args = [], options = {}) {
|
|
470
|
-
const cwd = String(options.cwd ?? process.cwd());
|
|
471
|
-
const mergedEnv = { ...process.env, ...options.env };
|
|
472
|
-
const augmentedPath = await buildAugmentedPath(resolvePathValue(mergedEnv));
|
|
473
|
-
const env = {
|
|
474
|
-
...mergedEnv,
|
|
475
|
-
PATH: augmentedPath,
|
|
476
|
-
...(isWindows ? { Path: augmentedPath } : {}),
|
|
477
|
-
};
|
|
478
|
-
// Resolve command path
|
|
479
|
-
// - If already absolute, use as-is
|
|
480
|
-
// - If it's a simple command (no path separators), let system find it via PATH
|
|
481
|
-
// - Otherwise, resolve relative to cwd
|
|
482
|
-
const isRelativePath = !isFullyQualified(command) &&
|
|
483
|
-
(command.includes(path.sep) || command.includes("/"));
|
|
484
|
-
const explicitCommand = isRelativePath ? path.resolve(cwd, command) : command;
|
|
485
|
-
const resolvedCommand = !isFullyQualified(command) &&
|
|
486
|
-
!command.includes(path.sep) &&
|
|
487
|
-
!command.includes("/")
|
|
488
|
-
? (findBinaryOnPath(command, env) ?? explicitCommand)
|
|
489
|
-
: explicitCommand;
|
|
490
|
-
// Compute needsShell based on command
|
|
491
|
-
// On Windows, shell: true is needed for .cmd/.bat files and extensionless binaries
|
|
492
|
-
// .exe files can be spawned directly, but .cmd/.bat require shell interpretation
|
|
493
|
-
let needsShell = computeNeedsShell(resolvedCommand);
|
|
494
|
-
// Try to spawn the process
|
|
495
|
-
// If command not found, try npm global as fallback (handles PATH caching after install)
|
|
496
|
-
let spawnCommand = resolvedCommand;
|
|
497
|
-
// First, try to find in npm global if it's a simple command name
|
|
498
|
-
if (!isFullyQualified(command) &&
|
|
499
|
-
!command.includes(path.sep) &&
|
|
500
|
-
!command.includes("/")) {
|
|
501
|
-
const globalBinPath = await findGlobalBinary(command);
|
|
502
|
-
if (globalBinPath) {
|
|
503
|
-
spawnCommand = globalBinPath;
|
|
504
|
-
// Recompute needsShell for the resolved global path
|
|
505
|
-
needsShell = computeNeedsShell(spawnCommand);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
// Pre-validate .cmd shims: if the underlying script is missing the shim will
|
|
509
|
-
// exit with code 1 after a 500ms wait. Catching this early avoids the delay.
|
|
510
|
-
if (isWindows &&
|
|
511
|
-
/\.(cmd|bat)$/i.test(spawnCommand) &&
|
|
512
|
-
!isCmdShimValid(spawnCommand)) {
|
|
513
|
-
logSessionStart(`lsp cmd-shim-invalid: ${spawnCommand} target missing — skipping candidate`);
|
|
514
|
-
const cause = Object.assign(new Error(`LSP .cmd shim target not found: ${spawnCommand}`), { code: "ENOENT" });
|
|
515
|
-
throw await classifySpawnFailure(cause, { command, cwd });
|
|
516
|
-
}
|
|
517
|
-
// P0 FIX: Never spawn .ps1 wrappers on Windows — they hang when PowerShell
|
|
518
|
-
// execution policy is Restricted/AllSigned. Prefer .cmd or direct node.
|
|
519
|
-
if (isWindows && /\.ps1$/i.test(spawnCommand)) {
|
|
520
|
-
const bypass = bypassPs1OnWindows(spawnCommand, args);
|
|
521
|
-
if (bypass) {
|
|
522
|
-
logSessionStart(`lsp ps1-bypass: ${spawnCommand} → ${bypass.command} shell=${bypass.needsShell}`);
|
|
523
|
-
spawnCommand = bypass.command;
|
|
524
|
-
args = bypass.args;
|
|
525
|
-
needsShell = bypass.needsShell;
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
logSessionStart(`lsp ps1-bypass: no .cmd or JS entry found for ${spawnCommand}, spawn may hang`);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
let proc;
|
|
532
|
-
try {
|
|
533
|
-
proc = trySpawn(spawnCommand, args, cwd, env, needsShell);
|
|
534
|
-
}
|
|
535
|
-
catch (err) {
|
|
536
|
-
// If spawn failed with simple command, try npm global
|
|
537
|
-
if (!isFullyQualified(command) &&
|
|
538
|
-
!command.includes(path.sep) &&
|
|
539
|
-
!command.includes("/")) {
|
|
540
|
-
const globalBinPath = await findGlobalBinary(command);
|
|
541
|
-
if (globalBinPath && globalBinPath !== spawnCommand) {
|
|
542
|
-
// Recompute needsShell for the resolved global path
|
|
543
|
-
const needsShellGlobal = computeNeedsShell(globalBinPath);
|
|
544
|
-
proc = trySpawn(globalBinPath, args, cwd, env, needsShellGlobal);
|
|
545
|
-
}
|
|
546
|
-
else {
|
|
547
|
-
throw await classifySpawnFailure(err, { command, cwd });
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
else {
|
|
551
|
-
throw await classifySpawnFailure(err, { command, cwd });
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
if (!proc.stdin || !proc.stdout || !proc.stderr) {
|
|
555
|
-
throw new Error(`Failed to spawn LSP server: ${command}`);
|
|
556
|
-
}
|
|
557
|
-
// Check if process exited immediately (spawn failure - synchronous check)
|
|
558
|
-
if (proc.exitCode !== null || proc.killed) {
|
|
559
|
-
throw new Error(`LSP server ${command} exited immediately (code: ${proc.exitCode}). ` +
|
|
560
|
-
`The binary may be missing or corrupted.`);
|
|
561
|
-
}
|
|
562
|
-
logSessionStart(`lsp launch: command=${command} resolved=${spawnCommand} args=${JSON.stringify(args)} cwd=${cwd} shell=${needsShell ? "true" : "false"} pid=${proc.pid ?? 0}`);
|
|
563
|
-
const formatStartupStderr = (stderr) => {
|
|
564
|
-
const normalized = compactLogValue(stderr);
|
|
565
|
-
if (!normalized)
|
|
566
|
-
return "";
|
|
567
|
-
return ` stderr=${normalized}`;
|
|
568
|
-
};
|
|
569
|
-
let startupStderr = "";
|
|
570
|
-
const onStartupStderr = (chunk) => {
|
|
571
|
-
if (startupStderr.length >= 4000)
|
|
572
|
-
return;
|
|
573
|
-
startupStderr += chunk.toString();
|
|
574
|
-
};
|
|
575
|
-
proc.stderr?.on("data", onStartupStderr);
|
|
576
|
-
// For Windows and certain spawn failures, the error is async (ENOENT)
|
|
577
|
-
// We need to wait a small tick to catch immediate spawn failures
|
|
578
|
-
try {
|
|
579
|
-
await new Promise((resolve, reject) => {
|
|
580
|
-
let settled = false;
|
|
581
|
-
// Attach error handler that can reject for immediate errors
|
|
582
|
-
proc.on("error", (err) => {
|
|
583
|
-
if (!settled) {
|
|
584
|
-
settled = true;
|
|
585
|
-
void classifySpawnFailure(err, { command, cwd }).then((failure) => {
|
|
586
|
-
const detail = formatStartupStderr(startupStderr);
|
|
587
|
-
reject(detail
|
|
588
|
-
? new SpawnFailureError(failure.kind, `${failure.message}${detail}`, failure.cause)
|
|
589
|
-
: failure);
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
});
|
|
593
|
-
// Also listen for immediate exit
|
|
594
|
-
proc.on("exit", (code) => {
|
|
595
|
-
if (!settled && code !== null) {
|
|
596
|
-
settled = true;
|
|
597
|
-
// On Windows, .cmd shims fail with code 1 when the underlying binary isn't installed
|
|
598
|
-
// This is different from ENOENT - the shim exists but can't find the binary
|
|
599
|
-
const isWindowsCmd = isWindows && command.endsWith(".cmd");
|
|
600
|
-
const errorMsg = isWindowsCmd && code === 1
|
|
601
|
-
? `npm .cmd shim failed (underlying binary not installed). Run 'npm install' in this project or use a global installation.`
|
|
602
|
-
: `The binary may be missing or corrupted.`;
|
|
603
|
-
reject(new Error(`LSP server ${command} exited immediately with code ${code}. ${errorMsg}${formatStartupStderr(startupStderr)}`));
|
|
604
|
-
}
|
|
605
|
-
});
|
|
606
|
-
const startupFailureWindowMs = (() => {
|
|
607
|
-
if (options?.startupFailureWindowMs) {
|
|
608
|
-
return options.startupFailureWindowMs;
|
|
609
|
-
}
|
|
610
|
-
if (isWindows && needsShell) {
|
|
611
|
-
return WINDOWS_NAV_STARTUP_FAILURE_WINDOW_MS;
|
|
612
|
-
}
|
|
613
|
-
return DEFAULT_STARTUP_FAILURE_WINDOW_MS;
|
|
614
|
-
})();
|
|
615
|
-
// Give shell-backed Windows launches a slightly longer window because
|
|
616
|
-
// npm/cmd shims can fail asynchronously after the initial spawn succeeds.
|
|
617
|
-
setTimeout(() => {
|
|
618
|
-
if (!settled) {
|
|
619
|
-
settled = true;
|
|
620
|
-
resolve();
|
|
621
|
-
}
|
|
622
|
-
}, startupFailureWindowMs);
|
|
623
|
-
});
|
|
624
|
-
}
|
|
625
|
-
finally {
|
|
626
|
-
proc.stderr?.off("data", onStartupStderr);
|
|
627
|
-
}
|
|
628
|
-
// Re-attach the permanent error handler now that we've passed the danger zone
|
|
629
|
-
_attachErrorHandler(proc, command, {
|
|
630
|
-
command: spawnCommand,
|
|
631
|
-
args,
|
|
632
|
-
cwd,
|
|
633
|
-
pid: proc.pid ?? 0,
|
|
634
|
-
});
|
|
635
|
-
unrefLspProcessHandles(proc);
|
|
636
|
-
return {
|
|
637
|
-
process: proc,
|
|
638
|
-
stdin: proc.stdin,
|
|
639
|
-
stdout: proc.stdout,
|
|
640
|
-
stderr: proc.stderr,
|
|
641
|
-
pid: proc.pid ?? 0,
|
|
642
|
-
command: spawnCommand,
|
|
643
|
-
args,
|
|
644
|
-
};
|
|
645
|
-
}
|
|
646
|
-
/**
|
|
647
|
-
* Spawn via Node.js directly
|
|
648
|
-
*/
|
|
649
|
-
export async function launchViaNode(scriptPath, args = [], options = {}) {
|
|
650
|
-
return launchLSP(process.execPath, [scriptPath, ...args], options);
|
|
651
|
-
}
|
|
652
|
-
/**
|
|
653
|
-
* Spawn via Python module
|
|
654
|
-
*/
|
|
655
|
-
export async function launchViaPython(moduleName, args = [], options = {}) {
|
|
656
|
-
// On Windows, prefer 'py' launcher, fall back to 'python'
|
|
657
|
-
const pythonCmd = process.platform === "win32" ? "py" : "python3";
|
|
658
|
-
return launchLSP(pythonCmd, ["-m", moduleName, ...args], options);
|
|
659
|
-
}
|
|
660
|
-
/**
|
|
661
|
-
* Stop an LSP process gracefully
|
|
662
|
-
*/
|
|
663
|
-
export async function stopLSP(handle) {
|
|
664
|
-
if (handle.process.exitCode !== null || handle.process.signalCode !== null) {
|
|
665
|
-
return;
|
|
666
|
-
}
|
|
667
|
-
return new Promise((resolve) => {
|
|
668
|
-
let settled = false;
|
|
669
|
-
let forceTimeout;
|
|
670
|
-
let giveUpTimeout;
|
|
671
|
-
const done = () => {
|
|
672
|
-
if (settled)
|
|
673
|
-
return;
|
|
674
|
-
settled = true;
|
|
675
|
-
if (forceTimeout)
|
|
676
|
-
clearTimeout(forceTimeout);
|
|
677
|
-
if (giveUpTimeout)
|
|
678
|
-
clearTimeout(giveUpTimeout);
|
|
679
|
-
handle.process.off("exit", done);
|
|
680
|
-
handle.process.off("error", done);
|
|
681
|
-
resolve();
|
|
682
|
-
};
|
|
683
|
-
handle.process.once("exit", done);
|
|
684
|
-
handle.process.once("error", done);
|
|
685
|
-
const killWindowsTree = () => {
|
|
686
|
-
if (!isWindows)
|
|
687
|
-
return false;
|
|
688
|
-
// If our child has already exited, its PID is dead and the OS may have
|
|
689
|
-
// RECYCLED it to an unrelated process. `taskkill /F /T` on a recycled PID
|
|
690
|
-
// force-kills that process AND its whole tree — in the test suite this
|
|
691
|
-
// occasionally nuked a vitest worker fork ("Worker exited unexpectedly",
|
|
692
|
-
// no fatal dump, e.g. via the "stopLSP after the process already exited"
|
|
693
|
-
// path); in production it could kill an unrelated user process. Never
|
|
694
|
-
// tree-kill a PID we no longer own — fall back to handle.process.kill(),
|
|
695
|
-
// which on Windows signals via the retained process HANDLE (not the raw
|
|
696
|
-
// PID), so it's a safe no-op on an already-exited child.
|
|
697
|
-
//
|
|
698
|
-
// #2042 folded the sign check and this exited check into the one
|
|
699
|
-
// ownership predicate every kill-by-raw-pid now shares; the handle
|
|
700
|
-
// arm below IS this paragraph, and on Windows it is the only
|
|
701
|
-
// ownership evidence available (there is no /proc to read).
|
|
702
|
-
if (!isOwnLiveChild(handle.pid, "lsp-stop-windows-tree", handle.process))
|
|
703
|
-
return false;
|
|
704
|
-
try {
|
|
705
|
-
// Absolute path avoids PATH-resolution substitution on Windows.
|
|
706
|
-
const taskkill = `${process.env.SystemRoot ?? "C:\\Windows"}\\System32\\taskkill.exe`;
|
|
707
|
-
const killer = nodeSpawn(taskkill, ["/F", "/T", "/PID", String(handle.pid)], {
|
|
708
|
-
shell: false,
|
|
709
|
-
windowsHide: true,
|
|
710
|
-
});
|
|
711
|
-
killer.once("error", done);
|
|
712
|
-
return true;
|
|
713
|
-
}
|
|
714
|
-
catch {
|
|
715
|
-
return false;
|
|
716
|
-
}
|
|
717
|
-
};
|
|
718
|
-
try {
|
|
719
|
-
// On Windows, kill the tree first; killing the direct child can orphan
|
|
720
|
-
// grandchildren (e.g. tsserver.js behind a cmd/npm shim).
|
|
721
|
-
if (!killWindowsTree()) {
|
|
722
|
-
handle.process.kill("SIGTERM");
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
catch {
|
|
726
|
-
done();
|
|
727
|
-
return;
|
|
728
|
-
}
|
|
729
|
-
forceTimeout = setTimeout(() => {
|
|
730
|
-
if (settled)
|
|
731
|
-
return;
|
|
732
|
-
try {
|
|
733
|
-
if (!killWindowsTree()) {
|
|
734
|
-
handle.process.kill("SIGKILL");
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
catch {
|
|
738
|
-
done();
|
|
739
|
-
return;
|
|
740
|
-
}
|
|
741
|
-
// If the process had already exited before listeners were attached, no
|
|
742
|
-
// exit event will arrive. Resolve rather than hanging test cleanup forever.
|
|
743
|
-
giveUpTimeout = setTimeout(done, 500);
|
|
744
|
-
}, 5000);
|
|
745
|
-
});
|
|
746
|
-
}
|