@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,630 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent+user disposition layer over dispatch diagnostics (#690, unifying #181/
|
|
3
|
-
* #503/#504's discussion). Four dispositions:
|
|
4
|
-
*
|
|
5
|
-
* false-positive — the rule misfired. Project-persistent, routed nowhere
|
|
6
|
-
* special yet (telemetry hookup is a fast-follow).
|
|
7
|
-
* suppress — real finding, deliberate policy not to fix. Persistent,
|
|
8
|
-
* but the mechanism is an inline `pi-lens-ignore` comment
|
|
9
|
-
* written into the source (see suppress-writer.ts), not
|
|
10
|
-
* just a store entry — portable, git-visible, discoverable
|
|
11
|
-
* without pi-lens's own store. The store entry here is an
|
|
12
|
-
* audit-trail mirror, not the enforcement point.
|
|
13
|
-
* defer — fix later, not now. Session-ephemeral: held in memory
|
|
14
|
-
* only, so it naturally resurfaces on process restart —
|
|
15
|
-
* never persisted, never needs pruning.
|
|
16
|
-
* flagged — user wants the agent to fix this. Persistent until
|
|
17
|
-
* resolved; surfaced through the existing lens_diagnostics
|
|
18
|
-
* query (tagged), not a separate file/tool the agent has
|
|
19
|
-
* to separately poll.
|
|
20
|
-
*
|
|
21
|
-
* Anchoring: TWO flavors, chosen per-disposition because each one binds to a
|
|
22
|
-
* different thing conceptually:
|
|
23
|
-
*
|
|
24
|
-
* STRICT ("dd:" prefix) — relativeFile|tool|rule|normalizedMessage|
|
|
25
|
-
* lineContentHash(diagnostic's own line). Used ONLY for false-positive: a
|
|
26
|
-
* false-positive judgment is about THIS specific piece of code — if the
|
|
27
|
-
* line is rewritten, the rule earned a fresh chance to fire on the new
|
|
28
|
-
* content, so the mark should NOT follow it. Reuses read-guard's
|
|
29
|
-
* lineContentHash so a no-op formatter/whitespace pass doesn't rot the
|
|
30
|
-
* anchor, while a semantic edit to the flagged line correctly invalidates
|
|
31
|
-
* it.
|
|
32
|
-
* WEAK ("ddw:" prefix) — relativeFile|tool|rule|normalizedMessage, no line
|
|
33
|
-
* hash at all. Used for defer, flagged, and suppress: these are
|
|
34
|
-
* intent-level judgments ("I'll get to this", "fix this", "policy says
|
|
35
|
-
* don't") about a finding identity, not about one exact line's bytes —
|
|
36
|
-
* they must survive incidental edits elsewhere on the flagged line
|
|
37
|
-
* (reformatting, a nearby rename) without silently dropping the mark.
|
|
38
|
-
* suppress's real enforcement is the inline comment (see
|
|
39
|
-
* suppress-writer.ts) which travels with the code by construction; the
|
|
40
|
-
* weak-anchored store entry is just an audit mirror plus a second,
|
|
41
|
-
* belt-and-braces filter.
|
|
42
|
-
*
|
|
43
|
-
* Distinct prefixes ("dd:" vs "ddw:") keep the two id spaces from ever
|
|
44
|
-
* colliding in the same store.
|
|
45
|
-
*
|
|
46
|
-
* Content is hashed only from the diagnostic's own line (for the strict
|
|
47
|
-
* anchor), not a surrounding window as #181's original sketch considered.
|
|
48
|
-
* Two diagnostics on the same file/tool/rule/message whose flagged line
|
|
49
|
-
* happens to have identical content collide on the SAME strict anchor —
|
|
50
|
-
* deliberately: identical content at the same rule/message is a semantically
|
|
51
|
-
* equivalent finding, so marking one intentionally marks all of them (e.g. a
|
|
52
|
-
* copy-pasted line repeated a few times in the same file). If that
|
|
53
|
-
* assumption proves wrong in practice, a surrounding-window hash can be
|
|
54
|
-
* layered on later without changing the store shape.
|
|
55
|
-
*/
|
|
56
|
-
import * as fs from "node:fs";
|
|
57
|
-
import * as path from "node:path";
|
|
58
|
-
import { commitDurableStore } from "./durable-store.js";
|
|
59
|
-
import { logDispositionEvent } from "./disposition-logger.js";
|
|
60
|
-
import { publishDisposition } from "./disposition-publish.js";
|
|
61
|
-
import { getProjectDataDir } from "./file-utils.js";
|
|
62
|
-
import { normalizeMessage as sharedNormalizeMessage, relativeFile as sharedRelativeFile, stableFindingId, } from "./finding-identity.js";
|
|
63
|
-
import { normalizeMapKey } from "./path-utils.js";
|
|
64
|
-
import { lineContentHash } from "./read-guard.js";
|
|
65
|
-
// "defer" is session-ephemeral by design (#690) — held only in memory so it
|
|
66
|
-
// resurfaces for free on the next process run, with no expiry/pruning logic
|
|
67
|
-
// needed. Stores WEAK anchors (see module doc) so a deferred finding stays
|
|
68
|
-
// hidden all session even if the flagged line itself is edited.
|
|
69
|
-
//
|
|
70
|
-
// Review-round F3 (#1625): this Set is process-GLOBAL, but a weak anchor
|
|
71
|
-
// itself only encodes a RELATIVE path (`relativeFile` derives it from
|
|
72
|
-
// `path.relative(cwd, filePath)`, never the cwd's own identity) plus
|
|
73
|
-
// tool/rule/normalizedMessage — two unrelated projects sharing the same
|
|
74
|
-
// relative path/tool/rule/message (e.g. "src/auth.ts" flagged by the same
|
|
75
|
-
// eslint rule in project A and project B) collapse onto the IDENTICAL weak
|
|
76
|
-
// anchor string. A defer in project A therefore silently suppressed the same
|
|
77
|
-
// finding in project B for the rest of the process's life. Every read/write
|
|
78
|
-
// below goes through `deferredKey`, which folds the resolved cwd into the Set
|
|
79
|
-
// key, so the two projects can no longer collide.
|
|
80
|
-
const deferredThisSession = new Set();
|
|
81
|
-
let widgetDispositionReconciler = null;
|
|
82
|
-
/** Register the widget's mirror of the durable disposition state. */
|
|
83
|
-
export function registerWidgetDispositionReconciler(reconciler) {
|
|
84
|
-
widgetDispositionReconciler = reconciler;
|
|
85
|
-
}
|
|
86
|
-
function deferredKey(cwd, anchor) {
|
|
87
|
-
return `${normalizeMapKey(cwd)}::${anchor}`;
|
|
88
|
-
}
|
|
89
|
-
/** Exported (#802) so lens-diagnostic-mark's cross-check against live widget
|
|
90
|
-
* diagnostics matches a message the same way anchor derivation does — a
|
|
91
|
-
* second, slightly different normalizer would make a real match invisible.
|
|
92
|
-
* Re-exports the shared `finding-identity.js` normalizer (#1816) so this
|
|
93
|
-
* module keeps its existing public surface. */
|
|
94
|
-
export const normalizeMessage = sharedNormalizeMessage;
|
|
95
|
-
// Anchor derivation chokepoint (#1024, #210 class): the `dd:`/`ddw:` id builders
|
|
96
|
-
// (computeStrictAnchor/computeWeakAnchor) both derive their path component here,
|
|
97
|
-
// so a mark and its later lookup diverge whenever the two callers pass different
|
|
98
|
-
// path FORMS of the same file. That is exactly the bug: the mark tool
|
|
99
|
-
// (lens-diagnostic-mark.ts) passes a RAW cwd / `path.resolve(cwd, arg)`, while
|
|
100
|
-
// the dispatch read side (dispatcher.ts createDispatchContext) passes
|
|
101
|
-
// `normalizeMapKey`-canonicalized cwd/filePath — so a Windows drive/segment
|
|
102
|
-
// case, symlink/realpath, or slash difference between the two forms silently
|
|
103
|
-
// orphans the agent's own false-positive/flagged mark (a #533 dropped-signal).
|
|
104
|
-
// Canonicalize BOTH inputs through `normalizeMapKey` (the SAME normalizer the
|
|
105
|
-
// read side already relies on — realpathSync.native on Windows, and on POSIX
|
|
106
|
-
// too since #3098) BEFORE computing
|
|
107
|
-
// the relative path, so write and read produce identical anchors regardless of
|
|
108
|
-
// the form the caller held. `normalizeMapKey` is idempotent, so the already-
|
|
109
|
-
// canonicalized read side is unaffected; the realpath I/O is acceptable here
|
|
110
|
-
// because dispositions are marked/applied far less often than the per-write
|
|
111
|
-
// widget hot path, and the read side already pays exactly this cost. Semantics
|
|
112
|
-
// are unchanged: the `..`-escape fallback still returns the canonical filePath,
|
|
113
|
-
// only now in the same canonical form the non-escape branch uses.
|
|
114
|
-
//
|
|
115
|
-
// #1816: this used to be a local copy; it is now `finding-identity.js`'s
|
|
116
|
-
// `relativeFile` (identical body — canonicalize both inputs through
|
|
117
|
-
// `normalizeMapKey` before relativizing), re-exported so the rest of this
|
|
118
|
-
// file, and the module doc/comments above referencing `relativeFile`, keep
|
|
119
|
-
// working unchanged.
|
|
120
|
-
const relativeFile = sharedRelativeFile;
|
|
121
|
-
/**
|
|
122
|
-
* The SPAN component of a strict anchor: the `lineContentHash` of the
|
|
123
|
-
* diagnostic's OWN line in `content`. `undefined` when there is no line to
|
|
124
|
-
* hash — no content, no line, or a line outside the content's range.
|
|
125
|
-
*
|
|
126
|
-
* Exported for #3183. The widget store's retention lifetime asks the same
|
|
127
|
-
* question a strict anchor does — "is the marked line still in this file?" —
|
|
128
|
-
* so it reuses this derivation rather than re-spelling it; a second spelling is
|
|
129
|
-
* how the store's answer drifts from the filter's (the retention identity's own
|
|
130
|
-
* drift from `computeWeakAnchor`'s parts cost #3158 a round). Note what is NOT
|
|
131
|
-
* here: the cwd/path component `stableFindingId` adds. Both sides of a
|
|
132
|
-
* retention comparison are the same file, so the span alone discriminates
|
|
133
|
-
* exactly as well while needing no `cwd` — which is why the store can ask it at
|
|
134
|
-
* all (see `retentionIdentity` in `clients/widget-state.ts`).
|
|
135
|
-
*/
|
|
136
|
-
export function strictAnchorSpan(content, line) {
|
|
137
|
-
if (content === undefined || line === undefined)
|
|
138
|
-
return undefined;
|
|
139
|
-
const lines = content.split(/\r?\n/);
|
|
140
|
-
if (line < 1 || line > lines.length)
|
|
141
|
-
return undefined;
|
|
142
|
-
return lineContentHash(lines[line - 1] ?? "");
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Every span {@link strictAnchorSpan} could produce for `content` — one hash
|
|
146
|
-
* per line (#3183). Membership answers "does the line a mark was made against
|
|
147
|
-
* still exist in this file", wherever it has since moved to.
|
|
148
|
-
*/
|
|
149
|
-
export function strictAnchorSpansIn(content) {
|
|
150
|
-
const spans = new Set();
|
|
151
|
-
for (const line of content.split(/\r?\n/))
|
|
152
|
-
spans.add(lineContentHash(line));
|
|
153
|
-
return spans;
|
|
154
|
-
}
|
|
155
|
-
/** Site-specific anchor — see module doc. Used only for false-positive. */
|
|
156
|
-
export function computeStrictAnchor(args) {
|
|
157
|
-
return stableFindingId("dd:", {
|
|
158
|
-
cwd: args.cwd,
|
|
159
|
-
filePath: args.filePath,
|
|
160
|
-
parts: [
|
|
161
|
-
args.tool ?? "",
|
|
162
|
-
args.rule ?? "",
|
|
163
|
-
normalizeMessage(args.message),
|
|
164
|
-
// An absent/out-of-range line hashes the empty string, exactly as the
|
|
165
|
-
// pre-#3183 `lines[args.line - 1] ?? ""` fallback did: stable, but less
|
|
166
|
-
// resistant to a same-file/rule/message collision (see
|
|
167
|
-
// `DispositionAnchorArgs.content`).
|
|
168
|
-
strictAnchorSpan(args.content, args.line) ?? lineContentHash(""),
|
|
169
|
-
],
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
/** Intent-level anchor — see module doc. Used for defer/flagged/suppress. */
|
|
173
|
-
function computeWeakAnchor(args) {
|
|
174
|
-
return stableFindingId("ddw:", {
|
|
175
|
-
cwd: args.cwd,
|
|
176
|
-
filePath: args.filePath,
|
|
177
|
-
parts: [args.tool ?? "", args.rule ?? "", normalizeMessage(args.message)],
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
/** Both anchors a stored/filtered diagnostic would compute — the one shared
|
|
181
|
-
* derivation both the dispatch-pipeline filter and lens-diagnostics' flagged
|
|
182
|
-
* tag lookup must use so a mark and a fresh diagnostic converge on the same
|
|
183
|
-
* ids. */
|
|
184
|
-
export function anchorsForDiagnostic(cwd, filePath, diagnostic, content) {
|
|
185
|
-
const args = {
|
|
186
|
-
cwd,
|
|
187
|
-
filePath,
|
|
188
|
-
tool: diagnostic.tool,
|
|
189
|
-
rule: diagnostic.rule,
|
|
190
|
-
message: diagnostic.message,
|
|
191
|
-
line: diagnostic.line,
|
|
192
|
-
content,
|
|
193
|
-
};
|
|
194
|
-
return { strict: computeStrictAnchor(args), weak: computeWeakAnchor(args) };
|
|
195
|
-
}
|
|
196
|
-
function statePath(cwd) {
|
|
197
|
-
return path.join(getProjectDataDir(cwd), "cache", "diagnostic-dispositions.json");
|
|
198
|
-
}
|
|
199
|
-
let stateCache = null;
|
|
200
|
-
const DISPOSITION_LOCK_WAIT_MS = 2_000;
|
|
201
|
-
const DISPOSITION_LOCK_RETRY_MS = 10;
|
|
202
|
-
let beforeDispositionCommitForTests = null;
|
|
203
|
-
let beforeDispositionCacheRefreshForTests = null;
|
|
204
|
-
let dispositionStatSync = fs.statSync;
|
|
205
|
-
/** Test seam after the caller's cached read and before commit lock acquisition. */
|
|
206
|
-
export function _setBeforeDispositionCommitForTests(hook) {
|
|
207
|
-
beforeDispositionCommitForTests = hook;
|
|
208
|
-
}
|
|
209
|
-
/** Test seam immediately before the committed state refreshes the cache. */
|
|
210
|
-
export function _setBeforeDispositionCacheRefreshForTests(hook) {
|
|
211
|
-
beforeDispositionCacheRefreshForTests = hook;
|
|
212
|
-
}
|
|
213
|
-
export function _setDispositionStatForTests(statSync) {
|
|
214
|
-
dispositionStatSync = statSync ?? fs.statSync;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Zero-I/O guard for cache-only callers (lens_diagnostics delta/all): true
|
|
218
|
-
* when ANY disposition mark or session defer exists, so a caller can skip its
|
|
219
|
-
* whole strict/weak filter — including every file stat/read the strict branch
|
|
220
|
-
* would need — in the overwhelmingly common no-marks case. Same hoist shape as
|
|
221
|
-
* applyDispositionsMultiFile's #1625 F2 empty-store early return; `readState`
|
|
222
|
-
* is mtime+size stat-cached, so repeated calls cost one stat.
|
|
223
|
-
*/
|
|
224
|
-
export function hasAnyDispositionMarks(cwd) {
|
|
225
|
-
return Boolean(readState(cwd).dispositions) || deferredThisSession.size > 0;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* True when the project's disposition store holds at least one STRICT-anchored
|
|
229
|
-
* `false-positive` mark — the only disposition kind whose immediate application
|
|
230
|
-
* needs file content. A store with only weak suppress/defer marks can never
|
|
231
|
-
* produce a strict-anchor match, so cache-only callers can serve them through
|
|
232
|
-
* the zero-I/O weak filter and skip every stat/read the strict path would
|
|
233
|
-
* charge.
|
|
234
|
-
*/
|
|
235
|
-
export function hasStrictDispositionMarks(cwd) {
|
|
236
|
-
const dispositions = readState(cwd).dispositions;
|
|
237
|
-
if (!dispositions)
|
|
238
|
-
return false;
|
|
239
|
-
for (const key of Object.keys(dispositions)) {
|
|
240
|
-
if (dispositions[key]?.disposition === "false-positive")
|
|
241
|
-
return true;
|
|
242
|
-
}
|
|
243
|
-
return false;
|
|
244
|
-
}
|
|
245
|
-
// Test seam for `applyDispositionsMultiFile`'s per-group content read (#1625
|
|
246
|
-
// F2) — Vitest can't `vi.spyOn` a bare ESM `node:fs` named export directly
|
|
247
|
-
// ("Module namespace is not configurable in ESM"), so the F2 regression test
|
|
248
|
-
// (proving the empty-store hoist means zero reads, not just fast ones)
|
|
249
|
-
// swaps this indirection instead, mirroring `dispositionStatSync` above.
|
|
250
|
-
let multiFileReadFileSync = fs.readFileSync;
|
|
251
|
-
export function _setMultiFileReadForTests(readFileSync) {
|
|
252
|
-
multiFileReadFileSync = readFileSync ?? fs.readFileSync;
|
|
253
|
-
}
|
|
254
|
-
function readState(cwd) {
|
|
255
|
-
const p = statePath(cwd);
|
|
256
|
-
let stat;
|
|
257
|
-
try {
|
|
258
|
-
stat = dispositionStatSync(p);
|
|
259
|
-
}
|
|
260
|
-
catch {
|
|
261
|
-
if (stateCache && stateCache.path === p && stateCache.missing) {
|
|
262
|
-
return stateCache.state;
|
|
263
|
-
}
|
|
264
|
-
const empty = {};
|
|
265
|
-
stateCache = {
|
|
266
|
-
path: p,
|
|
267
|
-
missing: true,
|
|
268
|
-
mtimeMs: -1,
|
|
269
|
-
size: -1,
|
|
270
|
-
state: empty,
|
|
271
|
-
};
|
|
272
|
-
return empty;
|
|
273
|
-
}
|
|
274
|
-
if (stateCache &&
|
|
275
|
-
stateCache.path === p &&
|
|
276
|
-
!stateCache.missing &&
|
|
277
|
-
stateCache.mtimeMs === stat.mtimeMs &&
|
|
278
|
-
stateCache.size === stat.size) {
|
|
279
|
-
return stateCache.state;
|
|
280
|
-
}
|
|
281
|
-
let state;
|
|
282
|
-
try {
|
|
283
|
-
const parsed = JSON.parse(fs.readFileSync(p, "utf-8"));
|
|
284
|
-
state =
|
|
285
|
-
parsed && typeof parsed === "object"
|
|
286
|
-
? parsed
|
|
287
|
-
: {};
|
|
288
|
-
}
|
|
289
|
-
catch {
|
|
290
|
-
// Now that writeState is tmp+rename atomic, a torn read (another process
|
|
291
|
-
// mid-write) can no longer land here — this only fires on genuine
|
|
292
|
-
// corruption/wrong-shape content. Caching `{}` against this stat is still
|
|
293
|
-
// correct, not a permanent trap: any future rewrite of the file (a fix,
|
|
294
|
-
// or this process's own next writeState) changes mtime/size, which
|
|
295
|
-
// invalidates the cache below on the next readState call. Only a file
|
|
296
|
-
// that never changes again would serve empty state forever — and
|
|
297
|
-
// reparsing the same invalid bytes every hot-path call would yield the
|
|
298
|
-
// same `{}` anyway, so the cache costs nothing in that case.
|
|
299
|
-
state = {};
|
|
300
|
-
}
|
|
301
|
-
stateCache = {
|
|
302
|
-
path: p,
|
|
303
|
-
missing: false,
|
|
304
|
-
mtimeMs: stat.mtimeMs,
|
|
305
|
-
size: stat.size,
|
|
306
|
-
state,
|
|
307
|
-
};
|
|
308
|
-
return state;
|
|
309
|
-
}
|
|
310
|
-
function deserializeState(contents) {
|
|
311
|
-
try {
|
|
312
|
-
const parsed = JSON.parse(contents ?? "");
|
|
313
|
-
return parsed && typeof parsed === "object"
|
|
314
|
-
? parsed
|
|
315
|
-
: {};
|
|
316
|
-
}
|
|
317
|
-
catch {
|
|
318
|
-
return {};
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
// Atomic tmp+rename via clients/atomic-write.ts (#762; shared with
|
|
322
|
-
// instance-registry.ts / recent-touches.ts / review-graph/builder.ts): a
|
|
323
|
-
// cross-process reader must never observe a partially-written file —
|
|
324
|
-
// rename() replaces the destination atomically on both POSIX and Windows
|
|
325
|
-
// (libuv uses MOVEFILE_REPLACE_EXISTING), so a concurrent readState sees
|
|
326
|
-
// either the old JSON or the new JSON, never a torn write that fails to
|
|
327
|
-
// parse. Unlike those best-effort writers, `bestEffort: false` here means a
|
|
328
|
-
// failure still propagates (matches the pre-atomic writeFileSync's behavior,
|
|
329
|
-
// which never swallowed errors either) — a disposition mark silently vanishing
|
|
330
|
-
// is a correctness bug for this store, not just a lost observability sample.
|
|
331
|
-
function refreshStateCache(p, state) {
|
|
332
|
-
// Refresh the cache from the write we just did instead of invalidating it —
|
|
333
|
-
// avoids an immediate re-stat+re-parse of the file we already have in hand,
|
|
334
|
-
// and guards against coarse filesystem mtime granularity making a
|
|
335
|
-
// read-immediately-after-write look like a cache hit on stale data.
|
|
336
|
-
const stat = fs.statSync(p);
|
|
337
|
-
stateCache = {
|
|
338
|
-
path: p,
|
|
339
|
-
missing: false,
|
|
340
|
-
mtimeMs: stat.mtimeMs,
|
|
341
|
-
size: stat.size,
|
|
342
|
-
state,
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
function commitDisposition(cwd, anchor, entry) {
|
|
346
|
-
const p = statePath(cwd);
|
|
347
|
-
fs.mkdirSync(path.dirname(p), { recursive: true });
|
|
348
|
-
const hook = beforeDispositionCommitForTests;
|
|
349
|
-
beforeDispositionCommitForTests = null;
|
|
350
|
-
hook?.();
|
|
351
|
-
commitDurableStore({
|
|
352
|
-
path: p,
|
|
353
|
-
deserialize: deserializeState,
|
|
354
|
-
merge: (state) => {
|
|
355
|
-
state.dispositions ??= {};
|
|
356
|
-
state.dispositions[anchor] = entry;
|
|
357
|
-
return state;
|
|
358
|
-
},
|
|
359
|
-
serialize: (state) => JSON.stringify(state, null, 2),
|
|
360
|
-
waitMs: DISPOSITION_LOCK_WAIT_MS,
|
|
361
|
-
retryMs: DISPOSITION_LOCK_RETRY_MS,
|
|
362
|
-
timeoutMessage: "timed out acquiring diagnostic disposition store lock",
|
|
363
|
-
onContention: "throw",
|
|
364
|
-
afterWriteLocked: (state) => {
|
|
365
|
-
const cacheHook = beforeDispositionCacheRefreshForTests;
|
|
366
|
-
beforeDispositionCacheRefreshForTests = null;
|
|
367
|
-
cacheHook?.();
|
|
368
|
-
refreshStateCache(p, state);
|
|
369
|
-
},
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
/** Test-only escape hatch — the state cache is module-level, so tests that
|
|
373
|
-
* write the store file out-of-band (or across separate cwds sharing a stat
|
|
374
|
-
* coincidence) need to reset it between cases. */
|
|
375
|
-
export function _resetStateCacheForTests() {
|
|
376
|
-
stateCache = null;
|
|
377
|
-
}
|
|
378
|
-
/** Fire-and-forget mark telemetry (see markDisposition's doc): the NDJSON log
|
|
379
|
-
* entry (project-relative path — rule-tuning data, not machine layout) and
|
|
380
|
-
* the bus event (absolute normalized path — in-process consumers navigate).
|
|
381
|
-
* Neither can throw into the mark path; both are already internally
|
|
382
|
-
* fail-safe, but the try/catch keeps a future regression in either from
|
|
383
|
-
* breaking a mark. */
|
|
384
|
-
function emitMarkTelemetry(cwd, target, disposition, anchor, reason, existing, identity) {
|
|
385
|
-
try {
|
|
386
|
-
logDispositionEvent({
|
|
387
|
-
event: "mark",
|
|
388
|
-
disposition,
|
|
389
|
-
tool: target.tool,
|
|
390
|
-
rule: target.rule,
|
|
391
|
-
filePath: relativeFile(target.filePath, cwd),
|
|
392
|
-
line: target.line,
|
|
393
|
-
reason,
|
|
394
|
-
anchor,
|
|
395
|
-
previousDisposition: existing?.disposition,
|
|
396
|
-
model: identity?.model || undefined,
|
|
397
|
-
provider: identity?.provider || undefined,
|
|
398
|
-
});
|
|
399
|
-
publishDisposition({
|
|
400
|
-
cwd,
|
|
401
|
-
filePath: target.filePath,
|
|
402
|
-
message: target.message,
|
|
403
|
-
disposition,
|
|
404
|
-
tool: target.tool,
|
|
405
|
-
rule: target.rule,
|
|
406
|
-
line: target.line,
|
|
407
|
-
anchor,
|
|
408
|
-
reason,
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
catch {
|
|
412
|
-
// never let telemetry break a mark
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Record a disposition. Picks the anchor flavor per-disposition (see module
|
|
417
|
-
* doc): strict for false-positive, weak for everything else. Returns the
|
|
418
|
-
* anchor actually used, so callers (the mark tool) can report/verify it.
|
|
419
|
-
*
|
|
420
|
-
* This is THE single choke point for mark telemetry — the NDJSON log
|
|
421
|
-
* (disposition-logger.ts, #181's FP-rule-tuning signal) and the
|
|
422
|
-
* `pilens:diagnostic:disposition` bus event (disposition-publish.ts) both
|
|
423
|
-
* hang off it, so the agent tool and any future UI caller are covered without
|
|
424
|
-
* per-caller wiring.
|
|
425
|
-
*/
|
|
426
|
-
export function markDisposition(cwd, target, disposition, reason, identity) {
|
|
427
|
-
const anchor = disposition === "false-positive"
|
|
428
|
-
? computeStrictAnchor(target)
|
|
429
|
-
: computeWeakAnchor(target);
|
|
430
|
-
// Captured for BOTH branches: a defer never writes the store, but a store
|
|
431
|
-
// entry can already exist at the same weak anchor (a prior flagged/suppress
|
|
432
|
-
// mark) — the log should record what this mark shadowed either way.
|
|
433
|
-
const existing = readState(cwd).dispositions?.[anchor];
|
|
434
|
-
if (disposition === "defer") {
|
|
435
|
-
deferredThisSession.add(deferredKey(cwd, anchor));
|
|
436
|
-
widgetDispositionReconciler?.(cwd, target, disposition);
|
|
437
|
-
emitMarkTelemetry(cwd, target, disposition, anchor, reason, existing, identity);
|
|
438
|
-
return anchor;
|
|
439
|
-
}
|
|
440
|
-
const now = new Date().toISOString();
|
|
441
|
-
const capturesFixContext = disposition === "flagged";
|
|
442
|
-
const lineText = capturesFixContext
|
|
443
|
-
? (target.content?.split(/\r?\n/)[target.line !== undefined ? target.line - 1 : -1] ?? existing?.lineText)?.trim()
|
|
444
|
-
: existing?.lineText;
|
|
445
|
-
const entry = {
|
|
446
|
-
disposition,
|
|
447
|
-
reason: reason ?? existing?.reason,
|
|
448
|
-
createdAt: existing?.createdAt ?? now,
|
|
449
|
-
lastSeenAt: now,
|
|
450
|
-
line: capturesFixContext ? (target.line ?? existing?.line) : existing?.line,
|
|
451
|
-
lineText,
|
|
452
|
-
};
|
|
453
|
-
commitDisposition(cwd, anchor, entry);
|
|
454
|
-
// The durable commit is the guard for this mirror: a failed commit must not
|
|
455
|
-
// make the in-memory widget claim that a mark exists.
|
|
456
|
-
widgetDispositionReconciler?.(cwd, target, disposition);
|
|
457
|
-
emitMarkTelemetry(cwd, target, disposition, anchor, reason, existing, identity);
|
|
458
|
-
return anchor;
|
|
459
|
-
}
|
|
460
|
-
export function getDisposition(cwd, anchor) {
|
|
461
|
-
return readState(cwd).dispositions?.[anchor];
|
|
462
|
-
}
|
|
463
|
-
/** #1625 F3: `anchor` alone is ambiguous across projects — a weak anchor
|
|
464
|
-
* encodes only a RELATIVE path plus tool/rule/message, never the project's
|
|
465
|
-
* own identity, so `cwd` must be supplied to disambiguate which project's
|
|
466
|
-
* defer is being checked. */
|
|
467
|
-
export function isDeferredThisSession(cwd, anchor) {
|
|
468
|
-
return deferredThisSession.has(deferredKey(cwd, anchor));
|
|
469
|
-
}
|
|
470
|
-
/** Test-only escape hatch — defer state is module-level (one process = one
|
|
471
|
-
* session), so tests need to reset it between cases. */
|
|
472
|
-
export function _resetDeferredForTests() {
|
|
473
|
-
deferredThisSession.clear();
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Drop diagnostics disposed false-positive/suppress, or deferred this session,
|
|
477
|
-
* from `diagnostics`. `flagged` diagnostics are kept as-is — callers that want
|
|
478
|
-
* to surface the flag (e.g. lens_diagnostics' rendering) look it up separately
|
|
479
|
-
* via getDisposition on the WEAK anchor (anchorsForDiagnostic(...).weak).
|
|
480
|
-
*
|
|
481
|
-
* Computes both anchors per diagnostic (cheap — same hash primitive, twice)
|
|
482
|
-
* since false-positive is keyed strict while defer/suppress are keyed weak;
|
|
483
|
-
* see module doc for why each disposition binds the way it does.
|
|
484
|
-
*
|
|
485
|
-
* Review-round F1 (#1625): a `d.semantic === "blocking"` diagnostic can be
|
|
486
|
-
* dropped ONLY by the STRICT (false-positive) branch — never by a WEAK-
|
|
487
|
-
* anchored suppress or defer. Two distinct secrets sharing the same
|
|
488
|
-
* rule/message (e.g. two different AWS keys on different lines) collapse
|
|
489
|
-
* onto the SAME weak anchor, so a weak suppress/defer on one would silently
|
|
490
|
-
* silence the other too; unacceptable for a STOP-tier finding. `flagged` is
|
|
491
|
-
* unaffected either way — it never drops anything, blocking or not.
|
|
492
|
-
*/
|
|
493
|
-
export function applyDispositions(diagnostics, cwd, filePath, content) {
|
|
494
|
-
if (!diagnostics.length)
|
|
495
|
-
return diagnostics;
|
|
496
|
-
const dispositions = readState(cwd).dispositions;
|
|
497
|
-
if (!dispositions && deferredThisSession.size === 0)
|
|
498
|
-
return diagnostics;
|
|
499
|
-
return diagnostics.filter((d) => {
|
|
500
|
-
const { strict, weak } = anchorsForDiagnostic(cwd, filePath, d, content);
|
|
501
|
-
const isBlocking = d.semantic === "blocking";
|
|
502
|
-
if (!isBlocking && deferredThisSession.has(deferredKey(cwd, weak))) {
|
|
503
|
-
return false;
|
|
504
|
-
}
|
|
505
|
-
if (dispositions?.[strict]?.disposition === "false-positive")
|
|
506
|
-
return false;
|
|
507
|
-
// Belt-and-braces: the inline `pi-lens-ignore` comment is the real
|
|
508
|
-
// suppress enforcement (see suppress-writer.ts) and normally already
|
|
509
|
-
// dropped this finding upstream via applyInlineSuppressions. This is a
|
|
510
|
-
// harmless second cover for the store-only audit trail case — gated
|
|
511
|
-
// off blocking findings per F1 above (the inline comment, unaffected
|
|
512
|
-
// by this gate, remains the real suppress mechanism for those too).
|
|
513
|
-
if (!isBlocking && dispositions?.[weak]?.disposition === "suppress") {
|
|
514
|
-
return false;
|
|
515
|
-
}
|
|
516
|
-
return true;
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
/**
|
|
520
|
-
* WEAK-anchor-only disposition filter for the "instant" (cache-only)
|
|
521
|
-
* lens_diagnostics modes (delta/all). Drops diagnostics disposed `suppress`
|
|
522
|
-
* or deferred this session — both WEAK-anchored (`file|tool|rule|message`, no
|
|
523
|
-
* line-content hash; see module doc), so this needs ZERO file I/O: it computes
|
|
524
|
-
* only the weak anchor and never touches the diagnostic's line content.
|
|
525
|
-
*
|
|
526
|
-
* `false-positive` is deliberately NOT filtered here: it is STRICT-anchored,
|
|
527
|
-
* which requires the flagged line's content to re-derive its hash, and reading
|
|
528
|
-
* every findings file just for that would defeat the instant contract of these
|
|
529
|
-
* cache-only modes. A false-positive mark still filters at the next per-edit
|
|
530
|
-
* dispatch (`dispatcher.ts`) and in `mode=full`'s merge — both of which already
|
|
531
|
-
* have file content in hand and call `applyDispositions` (the full,
|
|
532
|
-
* content-based filter). suppress/defer, being intent-level and weak-anchored,
|
|
533
|
-
* are the marks that must apply the instant a query re-serves cached findings,
|
|
534
|
-
* and they do so here without any read.
|
|
535
|
-
*
|
|
536
|
-
* Review-round F1 (#1625): this filter is ENTIRELY weak-anchored — it has no
|
|
537
|
-
* strict-anchor branch to fall back to — so a `d.semantic === "blocking"`
|
|
538
|
-
* diagnostic is never dropped here at all, regardless of any suppress/defer
|
|
539
|
-
* mark. The full `applyDispositions` (content in hand, at the next per-edit
|
|
540
|
-
* dispatch or mode=full merge) is the only place a blocking finding can ever
|
|
541
|
-
* be suppressed, and only via its STRICT branch.
|
|
542
|
-
*/
|
|
543
|
-
export function applyWeakDispositions(diagnostics, cwd, filePath) {
|
|
544
|
-
if (!diagnostics.length)
|
|
545
|
-
return diagnostics;
|
|
546
|
-
const dispositions = readState(cwd).dispositions;
|
|
547
|
-
if (!dispositions && deferredThisSession.size === 0)
|
|
548
|
-
return diagnostics;
|
|
549
|
-
return diagnostics.filter((d) => {
|
|
550
|
-
if (d.semantic === "blocking")
|
|
551
|
-
return true;
|
|
552
|
-
const weak = computeWeakAnchor({
|
|
553
|
-
cwd,
|
|
554
|
-
filePath,
|
|
555
|
-
tool: d.tool,
|
|
556
|
-
rule: d.rule,
|
|
557
|
-
message: d.message,
|
|
558
|
-
line: d.line,
|
|
559
|
-
});
|
|
560
|
-
if (deferredThisSession.has(deferredKey(cwd, weak)))
|
|
561
|
-
return false;
|
|
562
|
-
if (dispositions?.[weak]?.disposition === "suppress")
|
|
563
|
-
return false;
|
|
564
|
-
return true;
|
|
565
|
-
});
|
|
566
|
-
}
|
|
567
|
-
/**
|
|
568
|
-
* Multi-file variant of {@link applyDispositions} for lanes whose findings
|
|
569
|
-
* span many files in ONE report — gitleaks/trivy/govulncheck/opengrep
|
|
570
|
-
* project-wide scans (#1617), unlike the dispatch path's one-`ctx.filePath`-
|
|
571
|
-
* at-a-time shape. Groups by `filePathOf(diagnostic)`, reads each file's
|
|
572
|
-
* CURRENT content once, then delegates to `applyDispositions` per group —
|
|
573
|
-
* same anchor derivation, same strict/weak split, no cloned logic (#1617's
|
|
574
|
-
* single-source-of-truth requirement).
|
|
575
|
-
*
|
|
576
|
-
* Content read is best-effort: a file that no longer exists, or that this
|
|
577
|
-
* process can't read, degrades to `content: ""` for that group rather than
|
|
578
|
-
* dropping its diagnostics outright. `applyDispositions` already treats a
|
|
579
|
-
* missing/empty content argument safely — the STRICT (false-positive) anchor
|
|
580
|
-
* hashes the diagnostic's own line, so an empty content can't collide with a
|
|
581
|
-
* mark made against the file's real content and the finding simply isn't
|
|
582
|
-
* matched (fails OPEN — still reported); the WEAK anchor (suppress/defer)
|
|
583
|
-
* never looks at content at all, so those marks keep applying regardless.
|
|
584
|
-
* This is a deliberate choice, not an oversight: a security finding must
|
|
585
|
-
* never silently vanish just because its file went unreadable at filter
|
|
586
|
-
* time (a security finding staying VISIBLE on a read failure is the safe
|
|
587
|
-
* default; a stale mark quietly reappearing is recoverable, a leaked secret
|
|
588
|
-
* quietly disappearing is not).
|
|
589
|
-
*
|
|
590
|
-
* Review-round F2 (#1625): the empty-store early return is checked HERE,
|
|
591
|
-
* before any per-group file read — not left to `applyDispositions` to notice
|
|
592
|
-
* once already inside the per-group loop. Every mode=full analyzer call
|
|
593
|
-
* (9 lanes) runs through this on every scan, and the overwhelmingly common
|
|
594
|
-
* case is zero marks in the project; measured ~270ms of synchronous
|
|
595
|
-
* `fs.readFileSync` per analyzer per run for that common case before this
|
|
596
|
-
* hoist (reading every finding's file just to discover there was nothing to
|
|
597
|
-
* filter), ~0-1ms after.
|
|
598
|
-
*/
|
|
599
|
-
export function applyDispositionsMultiFile(diagnostics, cwd, filePathOf) {
|
|
600
|
-
if (!diagnostics.length)
|
|
601
|
-
return diagnostics;
|
|
602
|
-
const dispositions = readState(cwd).dispositions;
|
|
603
|
-
if (!dispositions && deferredThisSession.size === 0)
|
|
604
|
-
return diagnostics;
|
|
605
|
-
const groups = new Map();
|
|
606
|
-
for (const d of diagnostics) {
|
|
607
|
-
const filePath = filePathOf(d);
|
|
608
|
-
const group = groups.get(filePath);
|
|
609
|
-
if (group)
|
|
610
|
-
group.push(d);
|
|
611
|
-
else
|
|
612
|
-
groups.set(filePath, [d]);
|
|
613
|
-
}
|
|
614
|
-
const kept = new Set();
|
|
615
|
-
for (const [filePath, group] of groups) {
|
|
616
|
-
let content = "";
|
|
617
|
-
try {
|
|
618
|
-
content = multiFileReadFileSync(filePath, "utf-8");
|
|
619
|
-
}
|
|
620
|
-
catch {
|
|
621
|
-
// Unreadable/missing — fail open, see doc above.
|
|
622
|
-
}
|
|
623
|
-
for (const d of applyDispositions(group, cwd, filePath, content)) {
|
|
624
|
-
kept.add(d);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
// Preserve the caller's original order/dedup by reference rather than the
|
|
628
|
-
// per-group insertion order above.
|
|
629
|
-
return diagnostics.filter((d) => kept.has(d));
|
|
630
|
-
}
|