@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,400 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Startup scan safety — gates eager cache warmups to real project roots.
|
|
3
|
-
*
|
|
4
|
-
* Prevents pi-lens from scanning $HOME or generic directories at session
|
|
5
|
-
* start, which would hang or produce meaningless results.
|
|
6
|
-
*
|
|
7
|
-
* Credit: alexx-ftw (PR #1)
|
|
8
|
-
*/
|
|
9
|
-
import * as os from "node:os";
|
|
10
|
-
import * as path from "node:path";
|
|
11
|
-
import { BoundedLruCache } from "./bounded-cache.js";
|
|
12
|
-
import { normalizeMapKey } from "./path-utils.js";
|
|
13
|
-
import { lazyEnvNumber } from "./env-utils.js";
|
|
14
|
-
import { getProjectIgnoreMatcher, } from "./file-utils.js";
|
|
15
|
-
import { isAtOrAboveHomeDir } from "./path-utils.js";
|
|
16
|
-
import { getStartupScanMaxSourceFilesDerived } from "./project-scale.js";
|
|
17
|
-
import { shouldRecurseIntoDir, walkTreeStackAsync, walkTreeStackSync, } from "./source-walker.js";
|
|
18
|
-
import { getDirectoryMarkers, registerWorkspaceTopologyReset, } from "./workspace-topology.js";
|
|
19
|
-
const PROJECT_ROOT_MARKERS = [
|
|
20
|
-
".git",
|
|
21
|
-
"package.json",
|
|
22
|
-
"pyproject.toml",
|
|
23
|
-
"Cargo.toml",
|
|
24
|
-
"go.mod",
|
|
25
|
-
"composer.json",
|
|
26
|
-
];
|
|
27
|
-
// #758: hard ceiling on the number of directory entries the startup source
|
|
28
|
-
// count walk will visit before it gives up and declares the tree too big to
|
|
29
|
-
// a project has MANY source files — a repo with FEW source files but a huge
|
|
30
|
-
// pile of non-source files (e.g. a game mod: 300 scripts among 84k data files)
|
|
31
|
-
// never trips it, so the pre-#758 walk traversed the entire tree, dominated by
|
|
32
|
-
// one ignoreMatcher.isIgnored() call per entry, blocking session_start for
|
|
33
|
-
// seconds. Capping total entries bounds that worst case deterministically. The
|
|
34
|
-
// same pattern already guards jscpd-client.ts's hasSourceFilesRecursive walk.
|
|
35
|
-
export const MAX_STARTUP_SCAN_ENTRIES = 50_000;
|
|
36
|
-
const SOURCE_FILE_PATTERN = /\.(ts|tsx|js|jsx|py|go|rs|rb)$/;
|
|
37
|
-
// Default TTL for a persisted `too-many-source-files` verdict (#699): 24h.
|
|
38
|
-
const DEFAULT_STARTUP_SCAN_VERDICT_TTL_MS = 24 * 60 * 60 * 1000;
|
|
39
|
-
/**
|
|
40
|
-
* How long a persisted `too-many-source-files` verdict stays reusable before
|
|
41
|
-
* a session re-walks the tree to refresh it (#699).
|
|
42
|
-
*
|
|
43
|
-
* Resolution order: `PI_LENS_STARTUP_SCAN_VERDICT_TTL_MS` env var, else the
|
|
44
|
-
* 24h default. Lazy + memoized (via `lazyEnvNumber`, #763) so importing this
|
|
45
|
-
* module never touches `process.env` at load time (house style — see
|
|
46
|
-
* `runtime-config.ts` / `slow-fs.ts` / `subagent-mode.ts`).
|
|
47
|
-
*/
|
|
48
|
-
const _ttl = lazyEnvNumber("PI_LENS_STARTUP_SCAN_VERDICT_TTL_MS", DEFAULT_STARTUP_SCAN_VERDICT_TTL_MS);
|
|
49
|
-
export const getStartupScanVerdictTtlMs = _ttl.get;
|
|
50
|
-
/** Test-only: clears the memoized TTL so a subsequent call re-reads the env
|
|
51
|
-
* var (matching the `_resetForTests` convention). */
|
|
52
|
-
export const _resetStartupScanVerdictTtlForTests = _ttl._resetForTests;
|
|
53
|
-
/**
|
|
54
|
-
* Total directory-entry ceiling for the startup source-count walk (#758).
|
|
55
|
-
*
|
|
56
|
-
* Resolution order: `PI_LENS_STARTUP_SCAN_MAX_ENTRIES` env var, else the
|
|
57
|
-
* `MAX_STARTUP_SCAN_ENTRIES` default. Lazy + memoized (via `lazyEnvNumber`,
|
|
58
|
-
* #763) so importing this module never touches `process.env` at load time
|
|
59
|
-
* (same house style as `getStartupScanVerdictTtlMs`).
|
|
60
|
-
*/
|
|
61
|
-
const _maxEntries = lazyEnvNumber("PI_LENS_STARTUP_SCAN_MAX_ENTRIES", MAX_STARTUP_SCAN_ENTRIES);
|
|
62
|
-
export const getStartupScanMaxEntries = _maxEntries.get;
|
|
63
|
-
/** Test-only: clears the memoized entry cap so a subsequent call re-reads the
|
|
64
|
-
* env var (matching the `_resetForTests` convention). */
|
|
65
|
-
export const _resetStartupScanMaxEntriesForTests = _maxEntries._resetForTests;
|
|
66
|
-
/**
|
|
67
|
-
* Whether a persisted startup-scan verdict is still safe to reuse without
|
|
68
|
-
* re-walking the project tree (#699).
|
|
69
|
-
*
|
|
70
|
-
* The content-derived reasons `too-many-source-files` and `too-many-entries`
|
|
71
|
-
* (#758) are the ones that are TTL'd. They can go stale on their own: the repo
|
|
72
|
-
* can shrink below the source-file cap (or below the entry ceiling)
|
|
73
|
-
* between sessions, and nothing else would notice
|
|
74
|
-
* — the seq-based freshness check that guards every other
|
|
75
|
-
* `project-snapshot.json` field never fires for them, because pi-lens never
|
|
76
|
-
* writes anything while `canWarmCaches` is false, so the snapshot's seq
|
|
77
|
-
* never advances on its own. Trade-off, by design: a shrunk repo recovers
|
|
78
|
-
* automatically once the TTL expires and the next session re-walks, in
|
|
79
|
-
* exchange for skipping a walk that (per #699) can cost 17s+ on a large
|
|
80
|
-
* monorepo, on every single process start, for a result nothing could use.
|
|
81
|
-
*
|
|
82
|
-
* `home-dir` / `no-project-root` describe the resolved root's location
|
|
83
|
-
* relative to $HOME, not its contents, so they don't drift the same way —
|
|
84
|
-
* reused indefinitely here (still gated by the snapshot's own seq-freshness
|
|
85
|
-
* check upstream). `canWarmCaches: true` verdicts aren't TTL'd by this
|
|
86
|
-
* function either; a fresh snapshot's `seq` match already implies the
|
|
87
|
-
* project state hasn't moved since it warmed successfully.
|
|
88
|
-
*
|
|
89
|
-
* Fails closed on a verdict with no `computedAt` (e.g. hand-written test
|
|
90
|
-
* fixture, or a pre-#699 snapshot) — treated as stale so it gets refreshed
|
|
91
|
-
* rather than trusted indefinitely.
|
|
92
|
-
*/
|
|
93
|
-
export function isStartupScanVerdictFresh(verdict, now = Date.now()) {
|
|
94
|
-
if (verdict.reason !== "too-many-source-files" &&
|
|
95
|
-
verdict.reason !== "too-many-entries")
|
|
96
|
-
return true;
|
|
97
|
-
if (typeof verdict.computedAt !== "number")
|
|
98
|
-
return false;
|
|
99
|
-
return now - verdict.computedAt < getStartupScanVerdictTtlMs();
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Nearest ancestor (inclusive) of `startDir` containing any of
|
|
103
|
-
* `PROJECT_ROOT_MARKERS`, or `null` if none found before the filesystem root.
|
|
104
|
-
*
|
|
105
|
-
* #807: the per-directory marker check now reads through
|
|
106
|
-
* `workspace-topology.ts`'s `getDirectoryMarkers` (one cached `readdir` per
|
|
107
|
-
* directory) instead of doing `PROJECT_ROOT_MARKERS.length` separate
|
|
108
|
-
* `existsSync` stats per directory — same dedup win as the rest of the #806
|
|
109
|
-
* migration. Deliberately NOT routed through the topology service's
|
|
110
|
-
* home-guarded `findNearestDirWithMarker`/`findNearestDirWithAnyBasename`
|
|
111
|
-
* walkers, though: this function's callers (`computeStartupScanContext` /
|
|
112
|
-
* `resolveStartupScanContextAsync`, below) need the ACTUAL directory a marker
|
|
113
|
-
* resolved to — including one AT or ABOVE `$HOME` — to tell the
|
|
114
|
-
* `"home-dir"` verdict apart from `"no-project-root"` and to populate
|
|
115
|
-
* `scanRoot`/`projectRoot` for diagnostics (see the `startup-scan-home-ceiling`
|
|
116
|
-
* tests: a marker found in an ancestor of `$HOME` must still be *returned*
|
|
117
|
-
* here, with the home rejection applied by the caller). A guarded walker that
|
|
118
|
-
* stops before ever looking at/above `$HOME` would go blind exactly where
|
|
119
|
-
* this function's contract requires it to keep looking, silently turning a
|
|
120
|
-
* `"home-dir"` verdict into `"no-project-root"`. The walk-UP loop itself
|
|
121
|
-
* therefore stays hand-written, unbounded by `$HOME`/depth, matching its
|
|
122
|
-
* pre-#807 behavior exactly.
|
|
123
|
-
*/
|
|
124
|
-
export function findNearestProjectRoot(startDir) {
|
|
125
|
-
let current = path.resolve(startDir);
|
|
126
|
-
while (true) {
|
|
127
|
-
const entryNames = getDirectoryMarkers(current).entryNames;
|
|
128
|
-
if (PROJECT_ROOT_MARKERS.some((marker) => entryNames.has(marker))) {
|
|
129
|
-
return current;
|
|
130
|
-
}
|
|
131
|
-
const parent = path.dirname(current);
|
|
132
|
-
if (parent === current)
|
|
133
|
-
return null;
|
|
134
|
-
current = parent;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Per-entry step of the source-count walk (#761), plugged into both the sync
|
|
139
|
-
* and async {@link walkTreeStackSync}/`Async` drivers, which differ only in
|
|
140
|
-
* yield cadence. Applies both bounds in their historical order:
|
|
141
|
-
* - `limit`: source-file early-exit (existing behavior) — fires as soon as
|
|
142
|
-
* more than `limit` source files are seen.
|
|
143
|
-
* - `maxEntries`: total directory-entry ceiling (#758) — fires as soon as
|
|
144
|
-
* `maxEntries` entries have been visited (`visited >= maxEntries`, checked
|
|
145
|
-
* AFTER classification), flagging `entryBudgetExceeded` so a mixed
|
|
146
|
-
* source/non-source tree can't drag the walk across the whole tree.
|
|
147
|
-
* The source-limit check precedes the entry-budget check, so an entry that
|
|
148
|
-
* trips both stops as a source-limit hit (`entryBudgetExceeded` stays false).
|
|
149
|
-
*
|
|
150
|
-
* Directories here never check for generated-artifact names. Symlinked
|
|
151
|
-
* directories are NEVER traversed — not by policy but by classification
|
|
152
|
-
* (#775 audit follow-up): `fs.Dirent` reports a symlink-to-directory as
|
|
153
|
-
* `isSymbolicLink() === true` / `isDirectory() === false` (junctions
|
|
154
|
-
* included), so such entries fall through to the file branch below and are
|
|
155
|
-
* merely counted as entries. The `followSymlinks: true` passed to
|
|
156
|
-
* `shouldRecurseIntoDir` is therefore inert here; a symlink cycle cannot
|
|
157
|
-
* hang this walk. Pinned by tests/clients/startup-scan-symlink-cycle.test.ts.
|
|
158
|
-
*/
|
|
159
|
-
function makeSourceCountVisitor(state, ignoreMatcher, limit, maxEntries) {
|
|
160
|
-
return (entry, fullPath) => {
|
|
161
|
-
state.visited += 1;
|
|
162
|
-
if (entry.isDirectory()) {
|
|
163
|
-
const recurse = shouldRecurseIntoDir(entry, fullPath, {
|
|
164
|
-
ignoreMatcher,
|
|
165
|
-
followSymlinks: true,
|
|
166
|
-
});
|
|
167
|
-
if (state.visited >= maxEntries) {
|
|
168
|
-
state.entryBudgetExceeded = true;
|
|
169
|
-
return "stop";
|
|
170
|
-
}
|
|
171
|
-
return recurse ? "recurse" : "skip";
|
|
172
|
-
}
|
|
173
|
-
// #1974: extension-pattern gate before isIgnored — isIgnored recompiles
|
|
174
|
-
// minimatch patterns per ancestor dir per call, so it should only run for
|
|
175
|
-
// entries the cheap regex already flags as source.
|
|
176
|
-
if (entry.isFile() &&
|
|
177
|
-
SOURCE_FILE_PATTERN.test(entry.name) &&
|
|
178
|
-
!ignoreMatcher.isIgnored(fullPath, false)) {
|
|
179
|
-
state.count += 1;
|
|
180
|
-
if (state.count > limit)
|
|
181
|
-
return "stop";
|
|
182
|
-
}
|
|
183
|
-
if (state.visited >= maxEntries) {
|
|
184
|
-
state.entryBudgetExceeded = true;
|
|
185
|
-
return "stop";
|
|
186
|
-
}
|
|
187
|
-
return "skip";
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Core synchronous source-count walk shared by the public
|
|
192
|
-
* `countSourceFilesWithinLimit` wrapper and `computeStartupScanContext`.
|
|
193
|
-
* Bounds are documented on `makeSourceCountVisitor`.
|
|
194
|
-
*/
|
|
195
|
-
function walkSourceCount(dir, limit, maxEntries) {
|
|
196
|
-
const state = {
|
|
197
|
-
count: 0,
|
|
198
|
-
visited: 0,
|
|
199
|
-
entryBudgetExceeded: false,
|
|
200
|
-
};
|
|
201
|
-
const rootDir = path.resolve(dir);
|
|
202
|
-
const ignoreMatcher = getProjectIgnoreMatcher(rootDir);
|
|
203
|
-
walkTreeStackSync(rootDir, makeSourceCountVisitor(state, ignoreMatcher, limit, maxEntries));
|
|
204
|
-
return { count: state.count, entryBudgetExceeded: state.entryBudgetExceeded };
|
|
205
|
-
}
|
|
206
|
-
export function countSourceFilesWithinLimit(dir, limit) {
|
|
207
|
-
// Public wrapper keeps its pre-#758 contract: only the source-file limit
|
|
208
|
-
// bounds it (no entry ceiling). The #758 entry budget applies solely to the
|
|
209
|
-
// startup-scan verdict path via `walkSourceCount`.
|
|
210
|
-
return walkSourceCount(dir, limit, Number.POSITIVE_INFINITY).count;
|
|
211
|
-
}
|
|
212
|
-
// Session-lifetime memo for the (cwd, homeDir, maxSourceFiles) tuple. The
|
|
213
|
-
// underlying computation walks the entire project root counting source
|
|
214
|
-
// files and is dominated by ignoreMatcher.isIgnored() calls; on a 2k-file
|
|
215
|
-
// project it costs ~2-3s the first time. The topology-reset registry clears
|
|
216
|
-
// this memo at session start, so each session re-derives its answer. The memo
|
|
217
|
-
// remains valid until the next session-start reset.
|
|
218
|
-
const startupScanContextCache = new BoundedLruCache(32);
|
|
219
|
-
registerWorkspaceTopologyReset(() => startupScanContextCache.clear());
|
|
220
|
-
function startupScanCacheKey(cwd, options) {
|
|
221
|
-
return [
|
|
222
|
-
normalizeMapKey(path.resolve(cwd)),
|
|
223
|
-
options.homeDir ? normalizeMapKey(path.resolve(options.homeDir)) : "",
|
|
224
|
-
options.maxSourceFiles ?? "",
|
|
225
|
-
options.maxScanEntries ?? "",
|
|
226
|
-
].join("|");
|
|
227
|
-
}
|
|
228
|
-
export const __testing = { startupScanCacheKey };
|
|
229
|
-
export function resolveStartupScanContext(cwd, options = {}) {
|
|
230
|
-
const cacheKey = startupScanCacheKey(cwd, options);
|
|
231
|
-
const cached = startupScanContextCache.get(cacheKey);
|
|
232
|
-
if (cached)
|
|
233
|
-
return cached;
|
|
234
|
-
const result = {
|
|
235
|
-
...computeStartupScanContext(cwd, options),
|
|
236
|
-
computedAt: Date.now(),
|
|
237
|
-
};
|
|
238
|
-
startupScanContextCache.set(cacheKey, result);
|
|
239
|
-
return result;
|
|
240
|
-
}
|
|
241
|
-
function computeStartupScanContext(cwd, options = {}) {
|
|
242
|
-
const resolvedCwd = path.resolve(cwd);
|
|
243
|
-
const homeDir = path.resolve(options.homeDir ?? os.homedir());
|
|
244
|
-
const maxSourceFiles = options.maxSourceFiles ?? getStartupScanMaxSourceFilesDerived(resolvedCwd);
|
|
245
|
-
const maxScanEntries = options.maxScanEntries ?? getStartupScanMaxEntries();
|
|
246
|
-
const projectRoot = findNearestProjectRoot(resolvedCwd);
|
|
247
|
-
if (!projectRoot) {
|
|
248
|
-
return {
|
|
249
|
-
cwd: resolvedCwd,
|
|
250
|
-
scanRoot: resolvedCwd,
|
|
251
|
-
projectRoot: null,
|
|
252
|
-
canWarmCaches: false,
|
|
253
|
-
reason: isAtOrAboveHomeDir(resolvedCwd, homeDir)
|
|
254
|
-
? "home-dir"
|
|
255
|
-
: "no-project-root",
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
// A marker resolved at $HOME — OR at an ancestor of it (e.g. /home,
|
|
259
|
-
// C:\Users) — means the upward search escaped the workspace; warming caches
|
|
260
|
-
// would walk an unrelated tree (#250/#253). The old exact `=== homeDir`
|
|
261
|
-
// check missed the above-home case.
|
|
262
|
-
if (isAtOrAboveHomeDir(projectRoot, homeDir)) {
|
|
263
|
-
return {
|
|
264
|
-
cwd: resolvedCwd,
|
|
265
|
-
scanRoot: projectRoot,
|
|
266
|
-
projectRoot,
|
|
267
|
-
canWarmCaches: false,
|
|
268
|
-
reason: "home-dir",
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
const { count: sourceFileCount, entryBudgetExceeded } = walkSourceCount(projectRoot, maxSourceFiles, maxScanEntries);
|
|
272
|
-
if (sourceFileCount > maxSourceFiles || entryBudgetExceeded) {
|
|
273
|
-
return {
|
|
274
|
-
cwd: resolvedCwd,
|
|
275
|
-
scanRoot: projectRoot,
|
|
276
|
-
projectRoot,
|
|
277
|
-
canWarmCaches: false,
|
|
278
|
-
reason: entryBudgetExceeded
|
|
279
|
-
? "too-many-entries"
|
|
280
|
-
: "too-many-source-files",
|
|
281
|
-
sourceFileCount,
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
return {
|
|
285
|
-
cwd: resolvedCwd,
|
|
286
|
-
scanRoot: projectRoot,
|
|
287
|
-
projectRoot,
|
|
288
|
-
canWarmCaches: true,
|
|
289
|
-
sourceFileCount,
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
// ---------------------------------------------------------------------------
|
|
293
|
-
// Async, chunked-yield counterparts used by the cold-start warmup pipeline
|
|
294
|
-
// (see runtime-session.ts handleSessionStart). The synchronous variants above
|
|
295
|
-
// block the Node event loop for the full duration of the project walk, which
|
|
296
|
-
// is fine when called from a non-interactive code path but freezes the TUI
|
|
297
|
-
// when called during `session_start`. These async variants do the same work
|
|
298
|
-
// but yield control via `await new Promise(setImmediate)` every N directory
|
|
299
|
-
// entries, so stdin handlers (i.e. keystrokes) stay responsive.
|
|
300
|
-
//
|
|
301
|
-
// They share the same memo (`startupScanContextCache`) as their sync siblings,
|
|
302
|
-
// so whichever runs first warms the cache for the other. By design the
|
|
303
|
-
// warmup pipeline runs the async version 2s after a cold-start "quick" return,
|
|
304
|
-
// then the user's first /new sees a sync-path cache hit and skips the work
|
|
305
|
-
// entirely.
|
|
306
|
-
// ---------------------------------------------------------------------------
|
|
307
|
-
/**
|
|
308
|
-
* Async core of the source-count walk (the yield-cadence twin of
|
|
309
|
-
* `walkSourceCount`). Same visitor and two bounds — `limit` (source files) and
|
|
310
|
-
* `maxEntries` (total entries, #758) — driven through the shared
|
|
311
|
-
* {@link walkTreeStackAsync} engine (#761), which yields via `setImmediate`
|
|
312
|
-
* every `yieldEvery` entries to keep `session_start` keystrokes responsive.
|
|
313
|
-
*/
|
|
314
|
-
async function walkSourceCountAsync(dir, limit, maxEntries, opts = {}) {
|
|
315
|
-
const state = {
|
|
316
|
-
count: 0,
|
|
317
|
-
visited: 0,
|
|
318
|
-
entryBudgetExceeded: false,
|
|
319
|
-
};
|
|
320
|
-
const rootDir = path.resolve(dir);
|
|
321
|
-
const ignoreMatcher = getProjectIgnoreMatcher(rootDir);
|
|
322
|
-
await walkTreeStackAsync(rootDir, makeSourceCountVisitor(state, ignoreMatcher, limit, maxEntries), {
|
|
323
|
-
// Yield every 100 entries by default. Empirically each yield costs
|
|
324
|
-
// ~0.1ms of overhead and a 2k-file project produces ~20 yields, so the
|
|
325
|
-
// total async overhead is well under 5ms while keeping per-burst sync
|
|
326
|
-
// work under 50ms (the perceptual threshold for "instant" keystrokes).
|
|
327
|
-
budgetMs: opts.budgetMs ?? 8,
|
|
328
|
-
// #703: prime the tracked-files set ONCE before the walk (not per file)
|
|
329
|
-
// so a tracked file matching a `.gitignore`/global pattern isn't dropped
|
|
330
|
-
// from the startup source-file count. Fail-open: resolves even when git
|
|
331
|
-
// is absent, and `isIgnored` degrades to pattern-only if this never
|
|
332
|
-
// resolves before a caller inspects results.
|
|
333
|
-
beforeWalk: () => ignoreMatcher.ensureTrackedIndex(),
|
|
334
|
-
});
|
|
335
|
-
return { count: state.count, entryBudgetExceeded: state.entryBudgetExceeded };
|
|
336
|
-
}
|
|
337
|
-
export async function countSourceFilesWithinLimitAsync(dir, limit, opts = {}) {
|
|
338
|
-
// Public wrapper keeps its pre-#758 contract: only the source-file limit
|
|
339
|
-
// bounds it (no entry ceiling).
|
|
340
|
-
return (await walkSourceCountAsync(dir, limit, Number.POSITIVE_INFINITY, opts)).count;
|
|
341
|
-
}
|
|
342
|
-
export async function resolveStartupScanContextAsync(cwd, options = {}) {
|
|
343
|
-
const cacheKey = startupScanCacheKey(cwd, options);
|
|
344
|
-
const cached = startupScanContextCache.get(cacheKey);
|
|
345
|
-
if (cached)
|
|
346
|
-
return cached;
|
|
347
|
-
const resolvedCwd = path.resolve(cwd);
|
|
348
|
-
const homeDir = path.resolve(options.homeDir ?? os.homedir());
|
|
349
|
-
const maxSourceFiles = options.maxSourceFiles ?? getStartupScanMaxSourceFilesDerived(resolvedCwd);
|
|
350
|
-
const maxScanEntries = options.maxScanEntries ?? getStartupScanMaxEntries();
|
|
351
|
-
const projectRoot = findNearestProjectRoot(resolvedCwd);
|
|
352
|
-
let result;
|
|
353
|
-
if (!projectRoot) {
|
|
354
|
-
result = {
|
|
355
|
-
cwd: resolvedCwd,
|
|
356
|
-
scanRoot: resolvedCwd,
|
|
357
|
-
projectRoot: null,
|
|
358
|
-
canWarmCaches: false,
|
|
359
|
-
reason: isAtOrAboveHomeDir(resolvedCwd, homeDir)
|
|
360
|
-
? "home-dir"
|
|
361
|
-
: "no-project-root",
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
else if (isAtOrAboveHomeDir(projectRoot, homeDir)) {
|
|
365
|
-
result = {
|
|
366
|
-
cwd: resolvedCwd,
|
|
367
|
-
scanRoot: projectRoot,
|
|
368
|
-
projectRoot,
|
|
369
|
-
canWarmCaches: false,
|
|
370
|
-
reason: "home-dir",
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
const { count: sourceFileCount, entryBudgetExceeded } = await walkSourceCountAsync(projectRoot, maxSourceFiles, maxScanEntries);
|
|
375
|
-
if (sourceFileCount > maxSourceFiles || entryBudgetExceeded) {
|
|
376
|
-
result = {
|
|
377
|
-
cwd: resolvedCwd,
|
|
378
|
-
scanRoot: projectRoot,
|
|
379
|
-
projectRoot,
|
|
380
|
-
canWarmCaches: false,
|
|
381
|
-
reason: entryBudgetExceeded
|
|
382
|
-
? "too-many-entries"
|
|
383
|
-
: "too-many-source-files",
|
|
384
|
-
sourceFileCount,
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
result = {
|
|
389
|
-
cwd: resolvedCwd,
|
|
390
|
-
scanRoot: projectRoot,
|
|
391
|
-
projectRoot,
|
|
392
|
-
canWarmCaches: true,
|
|
393
|
-
sourceFileCount,
|
|
394
|
-
};
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
result = { ...result, computedAt: Date.now() };
|
|
398
|
-
startupScanContextCache.set(cacheKey, result);
|
|
399
|
-
return result;
|
|
400
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { performance } from "node:perf_hooks";
|
|
2
|
-
// #1434 S3d: import the constant from the side-effect-free module, not from
|
|
3
|
-
// `console-guard-install.ts` — that module installs the console guard as an
|
|
4
|
-
// import side effect, so importing it here (for a single constant, from a
|
|
5
|
-
// module measuring load time) would have silently installed the guard
|
|
6
|
-
// wherever this file is imported, including test-only measurement code that
|
|
7
|
-
// has no business flipping a global switch.
|
|
8
|
-
import { PI_LENS_EVAL_STARTED_MS } from "./eval-timestamp.js";
|
|
9
|
-
import { getProcessSingleton, nextModuleEvaluationOrdinal, } from "./process-singletons.js";
|
|
10
|
-
/**
|
|
11
|
-
* Startup timing for pi-lens.
|
|
12
|
-
*
|
|
13
|
-
* `performance.now()` is measured relative to `performance.timeOrigin`, which
|
|
14
|
-
* is the moment the host pi process started. Capturing it the instant pi-lens
|
|
15
|
-
* has finished loading therefore yields the wall-clock cost of pi loading +
|
|
16
|
-
* (under source mode) jiti-transpiling every pi-lens module before any of our
|
|
17
|
-
* code runs. With the precompiled `dist/` (#182) that transpile cost is gone,
|
|
18
|
-
* so this number is how we verify the startup win instead of guessing at it.
|
|
19
|
-
*/
|
|
20
|
-
/** "dist" when pi-lens loaded from compiled JS, "source" when jiti-transpiled. */
|
|
21
|
-
export const PI_LENS_LOADED_FROM = import.meta.url.endsWith(".js")
|
|
22
|
-
? "dist"
|
|
23
|
-
: "source";
|
|
24
|
-
// `loadMs`/`loadedAtMs` deliberately stay at module scope: they measure THIS
|
|
25
|
-
// evaluation's own load cost, so a second evaluation must get its own numbers
|
|
26
|
-
// rather than adopt the first's (#2146 class sweep — per-evaluation by design).
|
|
27
|
-
let loadMs;
|
|
28
|
-
let loadedAtMs;
|
|
29
|
-
/**
|
|
30
|
-
* The host-ready anchor is a once-PER-PROCESS latch, so it lives on the shared
|
|
31
|
-
* process singleton (#2146). Left at module scope it was consumed once per
|
|
32
|
-
* module evaluation, which meant a nine-evaluation process could emit the
|
|
33
|
-
* "first session" host-ready delay nine times.
|
|
34
|
-
*/
|
|
35
|
-
const HOST_READY_ANCHOR_FAMILY = "startup-timing.host-ready-anchor";
|
|
36
|
-
const HOST_READY_ANCHOR_VERSION = 1;
|
|
37
|
-
function hostReadyAnchorState() {
|
|
38
|
-
return getProcessSingleton(HOST_READY_ANCHOR_FAMILY, HOST_READY_ANCHOR_VERSION, () => ({ consumed: false }));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 1-based count of pi-lens module-graph evaluations in this process (#2146).
|
|
42
|
-
*
|
|
43
|
-
* Captured at module scope so it advances exactly once per evaluation, and
|
|
44
|
-
* carried on `host_boot.metadata.evaluationOrdinal` so multi-evaluation hosts
|
|
45
|
-
* are greppable in `latency.log`.
|
|
46
|
-
*/
|
|
47
|
-
export const PI_LENS_EVALUATION_ORDINAL = nextModuleEvaluationOrdinal();
|
|
48
|
-
/**
|
|
49
|
-
* Record the load-complete time. Call once, as the first statement in the
|
|
50
|
-
* extension entry's module body — by then every import has been evaluated, so
|
|
51
|
-
* the full transpile/load cost has been paid. Idempotent: later calls return
|
|
52
|
-
* the first captured value.
|
|
53
|
-
*/
|
|
54
|
-
export function markPiLensLoaded() {
|
|
55
|
-
if (loadMs === undefined) {
|
|
56
|
-
loadedAtMs = performance.now();
|
|
57
|
-
loadMs = Math.round(loadedAtMs);
|
|
58
|
-
}
|
|
59
|
-
return loadMs;
|
|
60
|
-
}
|
|
61
|
-
/** Monotonic instant when pi-lens finished loading, for cross-hook spans. */
|
|
62
|
-
export function getPiLensLoadedAtMs() {
|
|
63
|
-
return loadedAtMs;
|
|
64
|
-
}
|
|
65
|
-
/** Consume the process-lifetime first-session host-ready anchor exactly once. */
|
|
66
|
-
export function consumeHostReadyDelayAnchor() {
|
|
67
|
-
const state = hostReadyAnchorState();
|
|
68
|
-
if (state.consumed)
|
|
69
|
-
return false;
|
|
70
|
-
state.consumed = true;
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
/** Test seam for the process-lifetime session-state registry probe boundary. */
|
|
74
|
-
export function resetHostReadyDelayAnchorForTests() {
|
|
75
|
-
hostReadyAnchorState().consumed = false;
|
|
76
|
-
}
|
|
77
|
-
/** ms from pi process start to pi-lens load-complete, or undefined if unmarked. */
|
|
78
|
-
export function getPiLensLoadMs() {
|
|
79
|
-
return loadMs;
|
|
80
|
-
}
|
|
81
|
-
/** ms from host process start until pi-lens evaluation began. */
|
|
82
|
-
export const PI_LENS_HOST_BOOT_MS = Math.round(PI_LENS_EVAL_STARTED_MS);
|
|
83
|
-
/** pi-lens module-graph evaluation time once markPiLensLoaded() has run. */
|
|
84
|
-
export function getPiLensEvalMs() {
|
|
85
|
-
return loadMs === undefined
|
|
86
|
-
? undefined
|
|
87
|
-
: Math.max(0, loadMs - PI_LENS_HOST_BOOT_MS);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Build the three startup latency records the extension entry emits at module
|
|
91
|
-
* scope (`extension_loaded`, `host_boot`, `extension_eval`).
|
|
92
|
-
*
|
|
93
|
-
* A builder rather than three inline `logLatency` calls in `index.ts` so the
|
|
94
|
-
* record CONTENT is testable: `logLatency` is a no-op under `PI_LENS_TEST_MODE`,
|
|
95
|
-
* and `index.ts`'s module body cannot be re-run per assertion. `index.ts` maps
|
|
96
|
-
* the returned records straight into `logLatency`, so this is the production
|
|
97
|
-
* shape, not a parallel path.
|
|
98
|
-
*
|
|
99
|
-
* `host_boot` carries `evaluationOrdinal` (#2146): one `host_boot` line is one
|
|
100
|
-
* module-graph evaluation, and the ordinal makes a multi-evaluation host
|
|
101
|
-
* greppable instead of inferable by counting lines per pid.
|
|
102
|
-
*/
|
|
103
|
-
export function buildStartupTimingRecords(input) {
|
|
104
|
-
return [
|
|
105
|
-
{
|
|
106
|
-
type: "phase",
|
|
107
|
-
filePath: "<pi-lens>",
|
|
108
|
-
phase: "extension_loaded",
|
|
109
|
-
durationMs: input.loadMs,
|
|
110
|
-
metadata: { loadedFrom: PI_LENS_LOADED_FROM },
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: "phase",
|
|
114
|
-
filePath: "<pi-lens>",
|
|
115
|
-
phase: "host_boot",
|
|
116
|
-
durationMs: PI_LENS_HOST_BOOT_MS,
|
|
117
|
-
metadata: {
|
|
118
|
-
loadedFrom: PI_LENS_LOADED_FROM,
|
|
119
|
-
evaluationOrdinal: PI_LENS_EVALUATION_ORDINAL,
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
type: "phase",
|
|
124
|
-
filePath: "<pi-lens>",
|
|
125
|
-
phase: "extension_eval",
|
|
126
|
-
durationMs: input.evalMs,
|
|
127
|
-
metadata: { loadedFrom: PI_LENS_LOADED_FROM },
|
|
128
|
-
},
|
|
129
|
-
];
|
|
130
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ordinal (code-unit) string comparator for identity-feeding sorts — cache
|
|
3
|
-
* keys, dedupe keys, hashes, and signatures. Refs #2155, #2165.
|
|
4
|
-
*
|
|
5
|
-
* `localeCompare` orders strings by locale-dependent collation (the DEFAULT
|
|
6
|
-
* `Array.prototype.sort`, with no comparator, does not — it compares UTF-16
|
|
7
|
-
* code units, which is already ordinal). Locale-dependent order is fine for
|
|
8
|
-
* a list a human reads. It is a bug (SonarCloud S2871) when the sorted
|
|
9
|
-
* result feeds an identity: two processes — or one process whose locale
|
|
10
|
-
* changes — can order the same input differently under `localeCompare` and
|
|
11
|
-
* mint different keys for equivalent state, producing a silent cache or
|
|
12
|
-
* dedupe miss.
|
|
13
|
-
*
|
|
14
|
-
* Use this comparator whenever a sort's output becomes a key, a hash input,
|
|
15
|
-
* or a signature compared for equality later. Keep `localeCompare` for
|
|
16
|
-
* sorting that only affects what a person reads.
|
|
17
|
-
*/
|
|
18
|
-
export function compareOrdinal(a, b) {
|
|
19
|
-
return a < b ? -1 : a > b ? 1 : 0;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Escape a string for safe interpolation into a `RegExp` source, so every
|
|
23
|
-
* regex metacharacter it contains is matched literally instead of taking on
|
|
24
|
-
* its regex meaning. This is the ONE runtime copy (#2558) — string-utils.ts
|
|
25
|
-
* is a leaf (no imports of its own), so importing it never creates a cycle.
|
|
26
|
-
* Before #2558 this same body was hand-copied under this name (and as
|
|
27
|
-
* `escapeRegExpChar`/`escapeRegExpLiteral`) into ~8 production modules and 3
|
|
28
|
-
* test helpers; fold new call sites onto this export instead of re-copying
|
|
29
|
-
* it.
|
|
30
|
-
*/
|
|
31
|
-
export function escapeRegExp(value) {
|
|
32
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
33
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subagent light mode (#449 slice 0; broadened #507).
|
|
3
|
-
*
|
|
4
|
-
* Two known subagent-spawning ecosystems set different env vocabularies in
|
|
5
|
-
* every spawned child's environment:
|
|
6
|
-
*
|
|
7
|
-
* - nicobailon/pi-subagents sets `PI_SUBAGENT_CHILD=1` unconditionally on
|
|
8
|
-
* every process that hosts a child session — the only var light mode keys
|
|
9
|
-
* on for this vocabulary. It ALSO used to set `PI_SUBAGENT_RUN_ID` /
|
|
10
|
-
* `PI_SUBAGENT_CHILD_AGENT` alongside it for best-effort identity, but
|
|
11
|
-
* removed both entirely in `pi-subagents@0.65.0`'s native-AgentSession
|
|
12
|
-
* rewrite (grep-verified absent from the whole 0.66.0 source tree, #2581/
|
|
13
|
-
* #2680) — child identity now travels through an in-process object, not
|
|
14
|
-
* env vars. `getSubagentIdentity()` below already treats identity as
|
|
15
|
-
* optional best-effort metadata, so this permanent absence for the
|
|
16
|
-
* nicobailon vocabulary needed no behavior change, only the doc update.
|
|
17
|
-
* - avtc-pi-subagent (the spawn engine under avtc-pi-feature-flow) is the same
|
|
18
|
-
* execution model — real child-process `pi --mode rpc` / `--mode json -p`
|
|
19
|
-
* spawns, full env inheritance — but never sets `PI_SUBAGENT_CHILD`. It sets
|
|
20
|
-
* `PI_SUBAGENT_CHILD_AGENT` + `PI_SUBAGENT_PARENT_PID` instead (#507,
|
|
21
|
-
* grep-verified against avtc-pi-subagent@1.0.3).
|
|
22
|
-
*
|
|
23
|
-
* Every child currently loads pi-lens fully by default, so a fan-out of N
|
|
24
|
-
* subagents pays N full LSP pre-warms + N sets of heavyweight startup scans
|
|
25
|
-
* in the same cwd — mostly wasted on short-lived task agents.
|
|
26
|
-
*
|
|
27
|
-
* Detection requires the avtc PAIR (`PI_SUBAGENT_CHILD_AGENT` AND
|
|
28
|
-
* `PI_SUBAGENT_PARENT_PID`, both non-empty) rather than either var alone —
|
|
29
|
-
* deliberate false-positive protection, since a lone var set by some
|
|
30
|
-
* unrelated tool must not trigger light mode.
|
|
31
|
-
*
|
|
32
|
-
* This module only classifies the session; it does not change any behavior
|
|
33
|
-
* itself. Callers (`runtime-session.ts`) gate the LSP pre-warm and the seven
|
|
34
|
-
* heavyweight external-CLI startup scans on `isSubagentSession()`. Per-edit
|
|
35
|
-
* LSP dispatch is untouched — light mode must not disable diagnostics.
|
|
36
|
-
*
|
|
37
|
-
* Escape hatch: `PI_LENS_SUBAGENT_FULL=1` forces full (non-light) behavior
|
|
38
|
-
* even inside a detected subagent session, for either vocabulary.
|
|
39
|
-
*
|
|
40
|
-
* Follows the lazy-memoized-config house style (see `runtime-config.ts` /
|
|
41
|
-
* `slow-fs.ts`): env values are read lazily at call time, not module load.
|
|
42
|
-
*/
|
|
43
|
-
/** Lazily computed once per process (until `_resetSubagentModeForTests`),
|
|
44
|
-
* matching the memoized-getter house style. */
|
|
45
|
-
let cachedClassification;
|
|
46
|
-
function classifySubagentSession() {
|
|
47
|
-
if (cachedClassification !== undefined)
|
|
48
|
-
return cachedClassification;
|
|
49
|
-
if (process.env.PI_SUBAGENT_CHILD === "1") {
|
|
50
|
-
cachedClassification = { isSubagent: true, marker: "pi-subagents" };
|
|
51
|
-
return cachedClassification;
|
|
52
|
-
}
|
|
53
|
-
const childAgent = process.env.PI_SUBAGENT_CHILD_AGENT || undefined;
|
|
54
|
-
const parentPid = process.env.PI_SUBAGENT_PARENT_PID || undefined;
|
|
55
|
-
if (childAgent !== undefined && parentPid !== undefined) {
|
|
56
|
-
cachedClassification = { isSubagent: true, marker: "avtc-pi-subagent" };
|
|
57
|
-
return cachedClassification;
|
|
58
|
-
}
|
|
59
|
-
cachedClassification = { isSubagent: false };
|
|
60
|
-
return cachedClassification;
|
|
61
|
-
}
|
|
62
|
-
/** True iff pi-lens is running inside a detected subagent child `pi` process
|
|
63
|
-
* (nicobailon/pi-subagents' `PI_SUBAGENT_CHILD=1`, or avtc-pi-subagent's
|
|
64
|
-
* `PI_SUBAGENT_CHILD_AGENT` + `PI_SUBAGENT_PARENT_PID` pair), and the caller
|
|
65
|
-
* has not forced full behavior via the escape hatch. */
|
|
66
|
-
export function isSubagentSession() {
|
|
67
|
-
if (process.env.PI_LENS_SUBAGENT_FULL === "1")
|
|
68
|
-
return false;
|
|
69
|
-
return classifySubagentSession().isSubagent;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Best-effort identity of the current subagent, read from the env vars the
|
|
73
|
-
* detected extension sets alongside its subagent marker. Returns `undefined`
|
|
74
|
-
* when neither identity var is present — not a subagent session, an
|
|
75
|
-
* extension that never set them, OR nicobailon/pi-subagents@0.65.0+, which
|
|
76
|
-
* removed both identity vars upstream while still setting `PI_SUBAGENT_CHILD`
|
|
77
|
-
* (#2581/#2680): light mode still engages via `isSubagentSession()` alone,
|
|
78
|
-
* `marker` is still populated, only `runId`/`agentName` degrade to
|
|
79
|
-
* `undefined`. Identity is metadata for observability, never a light-mode
|
|
80
|
-
* gate — callers must not treat its absence as "not a subagent".
|
|
81
|
-
*/
|
|
82
|
-
export function getSubagentIdentity() {
|
|
83
|
-
const runId = process.env.PI_SUBAGENT_RUN_ID || undefined;
|
|
84
|
-
const agentName = process.env.PI_SUBAGENT_CHILD_AGENT || undefined;
|
|
85
|
-
const parentPidRaw = process.env.PI_SUBAGENT_PARENT_PID || undefined;
|
|
86
|
-
const parsedParentPid = parentPidRaw === undefined ? undefined : Number(parentPidRaw);
|
|
87
|
-
const parentPid = parsedParentPid !== undefined &&
|
|
88
|
-
Number.isSafeInteger(parsedParentPid) &&
|
|
89
|
-
parsedParentPid > 0
|
|
90
|
-
? parsedParentPid
|
|
91
|
-
: undefined;
|
|
92
|
-
const classification = classifySubagentSession();
|
|
93
|
-
if (runId === undefined &&
|
|
94
|
-
agentName === undefined &&
|
|
95
|
-
parentPid === undefined &&
|
|
96
|
-
!classification.isSubagent) {
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
99
|
-
return { runId, agentName, marker: classification.marker, parentPid };
|
|
100
|
-
}
|
|
101
|
-
/** Human-readable degradation notice surfaced once per session when subagent
|
|
102
|
-
* light mode engages, so a subagent never sees a silently-empty scan result. */
|
|
103
|
-
export function subagentLightModeNotice() {
|
|
104
|
-
return "subagent session — skipped background code-quality scans (set PI_LENS_SUBAGENT_FULL=1 to override)";
|
|
105
|
-
}
|
|
106
|
-
/** Test-only: clears the memoized classification so tests can flip env vars
|
|
107
|
-
* between cases (matching the `_resetForTests` convention used by
|
|
108
|
-
* `runtime-config.ts` / `slow-fs.ts`). */
|
|
109
|
-
export function _resetSubagentModeForTests() {
|
|
110
|
-
cachedClassification = undefined;
|
|
111
|
-
}
|