@herbertgao/pi-extensions 2026.10.1 → 2026.10.2
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 +13 -9
- 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/@herbertgao/pi-agency/LICENSE +21 -0
- 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/@narumitw/pi-caffeinate/package.json +3 -3
- 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 +1064 -0
- package/node_modules/pi-lens/README.md +115 -25
- package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
- package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
- 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-34U7PLGE.js +23 -0
- package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
- package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
- package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
- package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
- package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
- package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
- package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
- package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
- package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
- package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
- package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
- package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
- package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
- package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
- package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -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-AHDW3GPE.js +50 -0
- package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
- package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
- package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
- package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
- package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
- package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
- package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
- package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
- package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
- package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
- package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
- package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
- package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
- package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
- package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
- package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
- package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
- package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
- package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
- package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
- package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
- package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
- package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
- package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
- package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
- package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
- package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
- package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
- package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
- package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
- package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
- package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
- package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
- package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
- package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
- package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
- package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
- package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
- package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
- package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
- package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
- package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
- package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
- package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
- package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
- package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
- package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
- package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
- package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
- package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
- package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
- package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
- package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
- package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
- package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
- package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -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-RIISMHKN.js +36 -0
- package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
- package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
- package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
- package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
- package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
- package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
- package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
- package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
- package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
- package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
- package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
- package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
- package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
- package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
- package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
- package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
- package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
- package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
- package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
- package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
- package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
- package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
- package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
- package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
- package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
- package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
- package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
- package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
- package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
- package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
- package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -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-ZAWW3AF6.js +97 -0
- package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
- package/node_modules/pi-lens/dist/index.js +16456 -8335
- 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 +22589 -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 +3 -2
- package/node_modules/pi-lens/docs/configuration.md +20 -1
- package/node_modules/pi-lens/docs/environment-variables.md +52 -2
- package/node_modules/pi-lens/docs/features.md +8 -4
- package/node_modules/pi-lens/docs/globalconfig.md +1 -0
- package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -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 +156 -88
- package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
- package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -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/servercapabilities.md +53 -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/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/rules/advisory-registry-subset.yml +50 -0
- 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/package.json +15 -10
- 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
|
@@ -9,34 +9,50 @@ import { antigravityFetch } from "../utils/http.js";
|
|
|
9
9
|
import { safeError } from "../utils/security.js";
|
|
10
10
|
import { antigravityRequestEnvelope, isRecord } from "../utils/util.js";
|
|
11
11
|
|
|
12
|
-
/** Default search
|
|
13
|
-
export const DEFAULT_SEARCH_MODEL = "gemini-3-flash";
|
|
12
|
+
/** Default search model: fast grounding model for interactive tool calls. */
|
|
13
|
+
export const DEFAULT_SEARCH_MODEL = "gemini-3.5-flash-lite";
|
|
14
14
|
|
|
15
|
-
/** Fallback runtime candidates if the primary
|
|
15
|
+
/** Fallback runtime candidates if the primary model is missing or out of capacity. */
|
|
16
16
|
export const SEARCH_MODEL_FALLBACKS = [
|
|
17
17
|
DEFAULT_SEARCH_MODEL,
|
|
18
|
-
"gemini-3.
|
|
19
|
-
"gemini-
|
|
18
|
+
"gemini-3.1-flash-lite",
|
|
19
|
+
"gemini-3-flash",
|
|
20
20
|
] as const;
|
|
21
21
|
|
|
22
|
-
export const SEARCH_SYSTEM_INSTRUCTION = `You are
|
|
23
|
-
|
|
22
|
+
export const SEARCH_SYSTEM_INSTRUCTION = `You are a careful research assistant using Google Search grounding.
|
|
23
|
+
Return a compact evidence brief with exactly these sections:
|
|
24
|
+
## Findings
|
|
25
|
+
## Gaps
|
|
26
|
+
## Next checks
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
Rules:
|
|
29
|
+
- Verify each claim inside the specific item, function, or section it refers to. Do not copy an attribute from a neighboring entry on the same page.
|
|
30
|
+
- Prefer primary documentation and exact names, versions, and constraints over marketing summaries.
|
|
31
|
+
- If a fact is not supported by a retrieved source, put it under Gaps instead of stating it as a finding.
|
|
32
|
+
- Keep the brief short enough for an interactive agent tool call.`;
|
|
30
33
|
|
|
31
34
|
export type SearchSource = {
|
|
35
|
+
/** Original groundingChunks index, including gaps from skipped non-web chunks. */
|
|
36
|
+
index?: number;
|
|
32
37
|
title: string;
|
|
33
38
|
url: string;
|
|
34
39
|
};
|
|
35
40
|
|
|
41
|
+
export type SearchSupport = {
|
|
42
|
+
text: string;
|
|
43
|
+
startIndex?: number;
|
|
44
|
+
endIndex?: number;
|
|
45
|
+
partIndex?: number;
|
|
46
|
+
sourceIndices: number[];
|
|
47
|
+
};
|
|
48
|
+
|
|
36
49
|
export type SearchResult = {
|
|
37
50
|
text: string;
|
|
38
51
|
sources: SearchSource[];
|
|
39
52
|
queries: string[];
|
|
53
|
+
/** Optional so existing callers can still construct results with the original shape. */
|
|
54
|
+
parts?: Array<{ index: number; text: string }>;
|
|
55
|
+
supports?: SearchSupport[];
|
|
40
56
|
};
|
|
41
57
|
|
|
42
58
|
export type ExecuteSearchOptions = {
|
|
@@ -127,8 +143,8 @@ export function buildSearchRequest(
|
|
|
127
143
|
tools.push({ urlContext: {} });
|
|
128
144
|
}
|
|
129
145
|
|
|
130
|
-
//
|
|
131
|
-
const thinkingBudget = options.thinking ? 4096 :
|
|
146
|
+
// Default budget stays at 0 so interactive lookups stay fast. --thinking opts into planning.
|
|
147
|
+
const thinkingBudget = options.thinking ? 4096 : 0;
|
|
132
148
|
const envelope = antigravityRequestEnvelope(model, false);
|
|
133
149
|
|
|
134
150
|
return {
|
|
@@ -159,25 +175,28 @@ export function buildSearchRequest(
|
|
|
159
175
|
};
|
|
160
176
|
}
|
|
161
177
|
|
|
162
|
-
/**
|
|
163
|
-
* Parse candidate text and Grounding metadata from Antigravity API response.
|
|
164
|
-
*
|
|
165
|
-
* @param data - Raw JSON response from Antigravity generateContent API.
|
|
166
|
-
* @returns Structured SearchResult with synthesized text, web queries, and cited source URLs.
|
|
167
|
-
*/
|
|
178
|
+
/** Read candidates from either the wrapped Antigravity or direct Gemini response. */
|
|
168
179
|
function candidateList(data: unknown): unknown {
|
|
169
180
|
if (!isRecord(data)) return undefined;
|
|
170
181
|
if (isRecord(data.response)) return data.response.candidates;
|
|
171
182
|
return data.candidates;
|
|
172
183
|
}
|
|
173
184
|
|
|
185
|
+
/** Return the first array entry without assuming its response shape. */
|
|
174
186
|
function firstUnknownItem(value: unknown): unknown {
|
|
175
187
|
if (!Array.isArray(value)) return undefined;
|
|
176
188
|
return (value as unknown[])[0];
|
|
177
189
|
}
|
|
178
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Parse visible candidate text and grounding metadata from an Antigravity response.
|
|
193
|
+
* Preserve original part and source indices so UTF-8 citation offsets remain usable.
|
|
194
|
+
*
|
|
195
|
+
* @param data - Raw JSON response from Antigravity generateContent API.
|
|
196
|
+
* @returns Synthesized text, web queries, sources, and grounding supports.
|
|
197
|
+
*/
|
|
179
198
|
export function parseSearchResponse(data: unknown): SearchResult {
|
|
180
|
-
const result: SearchResult = { text: "", sources: [], queries: [] };
|
|
199
|
+
const result: SearchResult = { text: "", sources: [], queries: [], parts: [], supports: [] };
|
|
181
200
|
if (!isRecord(data)) return result;
|
|
182
201
|
|
|
183
202
|
const responseObj = isRecord(data.response) ? data.response : data;
|
|
@@ -203,11 +222,12 @@ export function parseSearchResponse(data: unknown): SearchResult {
|
|
|
203
222
|
// Extract synthesized text (ignoring thinking parts)
|
|
204
223
|
const content = isRecord(candidate.content) ? candidate.content : undefined;
|
|
205
224
|
if (Array.isArray(content?.parts)) {
|
|
206
|
-
result.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
225
|
+
result.parts = content.parts.flatMap((part, index) =>
|
|
226
|
+
isRecord(part) && !part.thought && typeof part.text === "string" && part.text
|
|
227
|
+
? [{ index, text: part.text }]
|
|
228
|
+
: [],
|
|
229
|
+
);
|
|
230
|
+
result.text = result.parts.map((part) => part.text).join("\n\n");
|
|
211
231
|
}
|
|
212
232
|
|
|
213
233
|
// Extract grounding citations & executed queries
|
|
@@ -217,22 +237,97 @@ export function parseSearchResponse(data: unknown): SearchResult {
|
|
|
217
237
|
result.queries = grounding.webSearchQueries.filter((q): q is string => typeof q === "string");
|
|
218
238
|
}
|
|
219
239
|
if (Array.isArray(grounding.groundingChunks)) {
|
|
220
|
-
for (const chunk of grounding.groundingChunks) {
|
|
240
|
+
for (const [index, chunk] of grounding.groundingChunks.entries()) {
|
|
221
241
|
if (!isRecord(chunk)) continue;
|
|
222
242
|
const web = isRecord(chunk.web) ? chunk.web : undefined;
|
|
223
243
|
if (typeof web?.uri === "string") {
|
|
224
244
|
result.sources.push({
|
|
245
|
+
index,
|
|
225
246
|
title: typeof web.title === "string" && web.title.trim() ? web.title.trim() : web.uri,
|
|
226
247
|
url: web.uri,
|
|
227
248
|
});
|
|
228
249
|
}
|
|
229
250
|
}
|
|
230
251
|
}
|
|
252
|
+
if (Array.isArray(grounding.groundingSupports)) {
|
|
253
|
+
const sourceIndices = new Set(result.sources.map((source) => source.index));
|
|
254
|
+
const textPartIndices = new Set(result.parts?.map((part) => part.index));
|
|
255
|
+
for (const support of grounding.groundingSupports) {
|
|
256
|
+
if (!isRecord(support) || !isRecord(support.segment)) continue;
|
|
257
|
+
if (
|
|
258
|
+
typeof support.segment.text !== "string" ||
|
|
259
|
+
!Array.isArray(support.groundingChunkIndices)
|
|
260
|
+
)
|
|
261
|
+
continue;
|
|
262
|
+
const partIndex = support.segment.partIndex ?? 0;
|
|
263
|
+
if (typeof partIndex !== "number" || !textPartIndices.has(partIndex)) continue;
|
|
264
|
+
const indices = support.groundingChunkIndices.filter(
|
|
265
|
+
(index): index is number =>
|
|
266
|
+
typeof index === "number" && Number.isInteger(index) && sourceIndices.has(index),
|
|
267
|
+
);
|
|
268
|
+
if (indices.length === 0) continue;
|
|
269
|
+
result.supports?.push({
|
|
270
|
+
text: support.segment.text,
|
|
271
|
+
startIndex:
|
|
272
|
+
typeof support.segment.startIndex === "number" ? support.segment.startIndex : undefined,
|
|
273
|
+
endIndex:
|
|
274
|
+
typeof support.segment.endIndex === "number" ? support.segment.endIndex : undefined,
|
|
275
|
+
partIndex:
|
|
276
|
+
typeof support.segment.partIndex === "number" ? support.segment.partIndex : undefined,
|
|
277
|
+
sourceIndices: indices,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
231
281
|
}
|
|
232
282
|
|
|
233
283
|
return result;
|
|
234
284
|
}
|
|
235
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Google's offsets are UTF-8 bytes within a content Part, not JS character indices.
|
|
288
|
+
* Verify each segment before inserting citations; skip unsafe mappings.
|
|
289
|
+
*/
|
|
290
|
+
function citeSearchText(res: SearchResult): string {
|
|
291
|
+
if (!res.supports?.length) return res.text;
|
|
292
|
+
const textParts = res.parts ?? [{ index: 0, text: res.text }];
|
|
293
|
+
// Respect callers editing result.text; original offsets no longer apply.
|
|
294
|
+
if (textParts.map((part) => part.text).join("\n\n") !== res.text) {
|
|
295
|
+
return res.text;
|
|
296
|
+
}
|
|
297
|
+
const sourceIndices = new Set(res.sources.map((source, index) => source.index ?? index));
|
|
298
|
+
const parts = textParts.map((part) => {
|
|
299
|
+
const bytes = Buffer.from(part.text, "utf8");
|
|
300
|
+
const insertions = new Map<number, Set<number>>();
|
|
301
|
+
for (const support of res.supports ?? []) {
|
|
302
|
+
const start = support.startIndex ?? 0;
|
|
303
|
+
const end = support.endIndex;
|
|
304
|
+
if (
|
|
305
|
+
(support.partIndex ?? 0) !== part.index ||
|
|
306
|
+
!Number.isInteger(start) ||
|
|
307
|
+
start < 0 ||
|
|
308
|
+
end === undefined ||
|
|
309
|
+
!Number.isInteger(end) ||
|
|
310
|
+
end <= start ||
|
|
311
|
+
end > bytes.length ||
|
|
312
|
+
bytes.subarray(start, end).toString("utf8") !== support.text
|
|
313
|
+
)
|
|
314
|
+
continue;
|
|
315
|
+
const indices = insertions.get(end) ?? new Set<number>();
|
|
316
|
+
for (const index of support.sourceIndices) {
|
|
317
|
+
if (Number.isInteger(index) && index >= 0 && sourceIndices.has(index)) indices.add(index);
|
|
318
|
+
}
|
|
319
|
+
insertions.set(end, indices);
|
|
320
|
+
}
|
|
321
|
+
let cited = bytes;
|
|
322
|
+
for (const [end, indices] of [...insertions].sort(([a], [b]) => b - a)) {
|
|
323
|
+
const references = [...indices].map((index) => `[${index + 1}]`).join("");
|
|
324
|
+
cited = Buffer.concat([cited.subarray(0, end), Buffer.from(references), cited.subarray(end)]);
|
|
325
|
+
}
|
|
326
|
+
return cited.toString("utf8");
|
|
327
|
+
});
|
|
328
|
+
return parts.join("\n\n") || res.text;
|
|
329
|
+
}
|
|
330
|
+
|
|
236
331
|
/**
|
|
237
332
|
* Formats structured SearchResult into clean Markdown for agent consumption.
|
|
238
333
|
*
|
|
@@ -242,12 +337,16 @@ export function parseSearchResponse(data: unknown): SearchResult {
|
|
|
242
337
|
export function formatSearchResult(res: SearchResult): string {
|
|
243
338
|
const sections: string[] = [];
|
|
244
339
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
340
|
+
const cited = citeSearchText(res);
|
|
341
|
+
if (cited) sections.push(cited);
|
|
248
342
|
|
|
249
343
|
if (res.sources.length > 0) {
|
|
250
|
-
const list = res.sources
|
|
344
|
+
const list = res.sources
|
|
345
|
+
.map(
|
|
346
|
+
(s, index) =>
|
|
347
|
+
`- ${res.supports?.length ? `[${(s.index ?? index) + 1}] ` : ""}[${s.title}](${s.url})`,
|
|
348
|
+
)
|
|
349
|
+
.join("\n");
|
|
251
350
|
sections.push(`### Sources\n${list}`);
|
|
252
351
|
}
|
|
253
352
|
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
getThinkingConfig,
|
|
51
51
|
PROVIDER_ID,
|
|
52
52
|
} from "../models/models.js";
|
|
53
|
-
import { redactSecrets, safeError } from "../utils/security.js";
|
|
53
|
+
import { extractValidationUrl, redactSecrets, safeError } from "../utils/security.js";
|
|
54
54
|
import {
|
|
55
55
|
ANTIGRAVITY_API,
|
|
56
56
|
type ActiveBlock,
|
|
@@ -957,7 +957,10 @@ export function buildRequest(
|
|
|
957
957
|
(m) => m.role === "assistant" && m.stopReason !== "error" && m.stopReason !== "aborted",
|
|
958
958
|
).length ?? 0;
|
|
959
959
|
|
|
960
|
-
const { conversationId, trajectoryId } = resolveSessionTrajectory(
|
|
960
|
+
const { conversationId, trajectoryId, sessionId } = resolveSessionTrajectory(
|
|
961
|
+
context,
|
|
962
|
+
options.sessionId,
|
|
963
|
+
);
|
|
961
964
|
|
|
962
965
|
const envelope = antigravityRequestEnvelope(runtimeModel, {
|
|
963
966
|
isClaude,
|
|
@@ -967,8 +970,9 @@ export function buildRequest(
|
|
|
967
970
|
requestIndex,
|
|
968
971
|
conversationId,
|
|
969
972
|
trajectoryId,
|
|
973
|
+
sessionId,
|
|
970
974
|
});
|
|
971
|
-
request.sessionId =
|
|
975
|
+
request.sessionId = envelope.sessionId;
|
|
972
976
|
request.labels = envelope.labels;
|
|
973
977
|
|
|
974
978
|
return {
|
|
@@ -1017,10 +1021,14 @@ export function friendlyAntigravityError(status: number | undefined, text: strin
|
|
|
1017
1021
|
return "Antigravity authentication failed. Next: run /login antigravity, then retry.";
|
|
1018
1022
|
}
|
|
1019
1023
|
if (status === 403) {
|
|
1020
|
-
|
|
1024
|
+
const verifyUrl = extractValidationUrl(text);
|
|
1025
|
+
const verifyHint = verifyUrl
|
|
1026
|
+
? ` Open this link in a browser signed in to the same Google account to verify: ${verifyUrl}`
|
|
1027
|
+
: "";
|
|
1028
|
+
if (/permission|forbidden|access/i.test(msg) && !verifyUrl) {
|
|
1021
1029
|
return "Antigravity access was denied for this account or project. Next: try another model, re-login, or use an account with access.";
|
|
1022
1030
|
}
|
|
1023
|
-
return `Antigravity denied this request. Next: re-login or try another model. Backend said: ${msg}`;
|
|
1031
|
+
return `Antigravity denied this request. Next: re-login or try another model. Backend said: ${msg}${verifyHint}`;
|
|
1024
1032
|
}
|
|
1025
1033
|
if (status === 404) {
|
|
1026
1034
|
if (/Requested entity was not found/i.test(msg)) {
|
|
@@ -1257,9 +1265,149 @@ export async function streamResponse(
|
|
|
1257
1265
|
let started = false;
|
|
1258
1266
|
let currentBlock: ActiveBlock | null = null;
|
|
1259
1267
|
let hasContent = false;
|
|
1268
|
+
let sawFinishReason = false;
|
|
1269
|
+
let stray = "";
|
|
1260
1270
|
const blocks = output.content;
|
|
1261
1271
|
const blockIndex = () => blocks.length - 1;
|
|
1262
1272
|
|
|
1273
|
+
const consumeStray = (line: string) => {
|
|
1274
|
+
const trimmed = line.trim();
|
|
1275
|
+
if (!trimmed || trimmed.startsWith(":")) return;
|
|
1276
|
+
stray = stray ? `${stray}\n${trimmed}` : trimmed;
|
|
1277
|
+
const start = stray.indexOf("{");
|
|
1278
|
+
if (start < 0) return;
|
|
1279
|
+
let parsed: unknown;
|
|
1280
|
+
try {
|
|
1281
|
+
parsed = JSON.parse(stray.slice(start));
|
|
1282
|
+
} catch {
|
|
1283
|
+
return;
|
|
1284
|
+
}
|
|
1285
|
+
if (!parsed || typeof parsed !== "object" || !("error" in parsed)) return;
|
|
1286
|
+
const record = parsed as { error?: { code?: unknown; message?: unknown } };
|
|
1287
|
+
const status = typeof record.error?.code === "number" ? record.error.code : undefined;
|
|
1288
|
+
if (status !== undefined) setLastStatus(status);
|
|
1289
|
+
const friendly = friendlyAntigravityError(status, stray.slice(start));
|
|
1290
|
+
throw new Error(status ? `${friendly} (${status})` : friendly);
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
const handleLine = (line: string) => {
|
|
1294
|
+
if (!line.startsWith("data:")) {
|
|
1295
|
+
consumeStray(line);
|
|
1296
|
+
return;
|
|
1297
|
+
}
|
|
1298
|
+
const json = line.slice(5).trim();
|
|
1299
|
+
if (!json || json === "[DONE]") return;
|
|
1300
|
+
|
|
1301
|
+
let chunk: StreamChunk;
|
|
1302
|
+
try {
|
|
1303
|
+
chunk = JSON.parse(json) as StreamChunk;
|
|
1304
|
+
} catch {
|
|
1305
|
+
return;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
if (chunk.error) {
|
|
1309
|
+
const status = typeof chunk.error.code === "number" ? chunk.error.code : undefined;
|
|
1310
|
+
if (status !== undefined) setLastStatus(status);
|
|
1311
|
+
const friendly = friendlyAntigravityError(status, JSON.stringify({ error: chunk.error }));
|
|
1312
|
+
throw new Error(status ? `${friendly} (${status})` : chunk.error.message || friendly);
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1315
|
+
const responseData = chunk.response || chunk;
|
|
1316
|
+
const candidate = responseData.candidates?.[0];
|
|
1317
|
+
|
|
1318
|
+
for (const part of candidate?.content?.parts || []) {
|
|
1319
|
+
if (part.text !== undefined) {
|
|
1320
|
+
hasContent = true;
|
|
1321
|
+
const isThinking = part.thought === true;
|
|
1322
|
+
const type = isThinking ? "thinking" : "text";
|
|
1323
|
+
if (!currentBlock || currentBlock.type !== type) {
|
|
1324
|
+
finishCurrent();
|
|
1325
|
+
currentBlock = isThinking
|
|
1326
|
+
? { type: "thinking", thinking: "", thinkingSignature: undefined }
|
|
1327
|
+
: { type: "text", text: "" };
|
|
1328
|
+
blocks.push(currentBlock);
|
|
1329
|
+
ensureStarted();
|
|
1330
|
+
stream.push({
|
|
1331
|
+
type: isThinking ? "thinking_start" : "text_start",
|
|
1332
|
+
contentIndex: blockIndex(),
|
|
1333
|
+
partial: output,
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1336
|
+
if (isThinking && currentBlock.type === "thinking") {
|
|
1337
|
+
currentBlock.thinking += part.text;
|
|
1338
|
+
if (part.thoughtSignature) currentBlock.thinkingSignature = part.thoughtSignature;
|
|
1339
|
+
stream.push({
|
|
1340
|
+
type: "thinking_delta",
|
|
1341
|
+
contentIndex: blockIndex(),
|
|
1342
|
+
delta: part.text,
|
|
1343
|
+
partial: output,
|
|
1344
|
+
});
|
|
1345
|
+
} else if (!isThinking && currentBlock.type === "text") {
|
|
1346
|
+
currentBlock.text += part.text;
|
|
1347
|
+
if (part.thoughtSignature) currentBlock.textSignature = part.thoughtSignature;
|
|
1348
|
+
stream.push({
|
|
1349
|
+
type: "text_delta",
|
|
1350
|
+
contentIndex: blockIndex(),
|
|
1351
|
+
delta: part.text,
|
|
1352
|
+
partial: output,
|
|
1353
|
+
});
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
if (part.functionCall) {
|
|
1358
|
+
hasContent = true;
|
|
1359
|
+
finishCurrent();
|
|
1360
|
+
const rawId = part.functionCall.id || "";
|
|
1361
|
+
const toolCall: ToolCall = {
|
|
1362
|
+
type: "toolCall",
|
|
1363
|
+
id: sanitizeToolCallId(rawId, part.functionCall.name),
|
|
1364
|
+
name: part.functionCall.name || "",
|
|
1365
|
+
arguments: asToolCallArguments(part.functionCall.args),
|
|
1366
|
+
...(part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {}),
|
|
1367
|
+
};
|
|
1368
|
+
blocks.push(toolCall);
|
|
1369
|
+
ensureStarted();
|
|
1370
|
+
stream.push({ type: "toolcall_start", contentIndex: blockIndex(), partial: output });
|
|
1371
|
+
stream.push({
|
|
1372
|
+
type: "toolcall_delta",
|
|
1373
|
+
contentIndex: blockIndex(),
|
|
1374
|
+
delta: JSON.stringify(toolCall.arguments),
|
|
1375
|
+
partial: output,
|
|
1376
|
+
});
|
|
1377
|
+
stream.push({
|
|
1378
|
+
type: "toolcall_end",
|
|
1379
|
+
contentIndex: blockIndex(),
|
|
1380
|
+
toolCall,
|
|
1381
|
+
partial: output,
|
|
1382
|
+
});
|
|
1383
|
+
}
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
if (candidate?.finishReason) {
|
|
1387
|
+
sawFinishReason = true;
|
|
1388
|
+
output.rawStopReason = candidate.finishReason;
|
|
1389
|
+
output.stopReason = blocks.some((b) => b.type === "toolCall")
|
|
1390
|
+
? StopReason.ToolUse
|
|
1391
|
+
: mapStopReason(candidate.finishReason);
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
if (responseData.usageMetadata) {
|
|
1395
|
+
const prompt = responseData.usageMetadata.promptTokenCount || 0;
|
|
1396
|
+
const cacheRead = responseData.usageMetadata.cachedContentTokenCount || 0;
|
|
1397
|
+
const thoughts = responseData.usageMetadata.thoughtsTokenCount || 0;
|
|
1398
|
+
output.usage.input = prompt - cacheRead;
|
|
1399
|
+
output.usage.output = (responseData.usageMetadata.candidatesTokenCount || 0) + thoughts;
|
|
1400
|
+
output.usage.reasoning = thoughts;
|
|
1401
|
+
output.usage.cacheRead = cacheRead;
|
|
1402
|
+
output.usage.totalTokens = responseData.usageMetadata.totalTokenCount || 0;
|
|
1403
|
+
if (model?.cost) {
|
|
1404
|
+
calculateCost(model, output.usage);
|
|
1405
|
+
} else {
|
|
1406
|
+
output.usage.cost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 };
|
|
1407
|
+
}
|
|
1408
|
+
}
|
|
1409
|
+
};
|
|
1410
|
+
|
|
1263
1411
|
const ensureStarted = () => {
|
|
1264
1412
|
if (!started) {
|
|
1265
1413
|
stream.push({ type: "start", partial: output });
|
|
@@ -1297,114 +1445,7 @@ export async function streamResponse(
|
|
|
1297
1445
|
while ((newlineIdx = buffer.indexOf("\n", scanStart)) !== -1) {
|
|
1298
1446
|
const line = buffer.slice(scanStart, newlineIdx);
|
|
1299
1447
|
scanStart = newlineIdx + 1;
|
|
1300
|
-
|
|
1301
|
-
const json = line.slice(5).trim();
|
|
1302
|
-
if (!json || json === "[DONE]") continue;
|
|
1303
|
-
|
|
1304
|
-
let chunk: StreamChunk;
|
|
1305
|
-
try {
|
|
1306
|
-
chunk = JSON.parse(json) as StreamChunk;
|
|
1307
|
-
} catch {
|
|
1308
|
-
continue;
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
if (chunk.error) {
|
|
1312
|
-
throw new Error(chunk.error.message || JSON.stringify(chunk.error));
|
|
1313
|
-
}
|
|
1314
|
-
|
|
1315
|
-
const responseData = chunk.response || chunk;
|
|
1316
|
-
const candidate = responseData.candidates?.[0];
|
|
1317
|
-
|
|
1318
|
-
for (const part of candidate?.content?.parts || []) {
|
|
1319
|
-
if (part.text !== undefined) {
|
|
1320
|
-
hasContent = true;
|
|
1321
|
-
const isThinking = part.thought === true;
|
|
1322
|
-
const type = isThinking ? "thinking" : "text";
|
|
1323
|
-
if (!currentBlock || currentBlock.type !== type) {
|
|
1324
|
-
finishCurrent();
|
|
1325
|
-
currentBlock = isThinking
|
|
1326
|
-
? { type: "thinking", thinking: "", thinkingSignature: undefined }
|
|
1327
|
-
: { type: "text", text: "" };
|
|
1328
|
-
blocks.push(currentBlock);
|
|
1329
|
-
ensureStarted();
|
|
1330
|
-
stream.push({
|
|
1331
|
-
type: isThinking ? "thinking_start" : "text_start",
|
|
1332
|
-
contentIndex: blockIndex(),
|
|
1333
|
-
partial: output,
|
|
1334
|
-
});
|
|
1335
|
-
}
|
|
1336
|
-
if (isThinking && currentBlock.type === "thinking") {
|
|
1337
|
-
currentBlock.thinking += part.text;
|
|
1338
|
-
if (part.thoughtSignature) currentBlock.thinkingSignature = part.thoughtSignature;
|
|
1339
|
-
stream.push({
|
|
1340
|
-
type: "thinking_delta",
|
|
1341
|
-
contentIndex: blockIndex(),
|
|
1342
|
-
delta: part.text,
|
|
1343
|
-
partial: output,
|
|
1344
|
-
});
|
|
1345
|
-
} else if (!isThinking && currentBlock.type === "text") {
|
|
1346
|
-
currentBlock.text += part.text;
|
|
1347
|
-
if (part.thoughtSignature) currentBlock.textSignature = part.thoughtSignature;
|
|
1348
|
-
stream.push({
|
|
1349
|
-
type: "text_delta",
|
|
1350
|
-
contentIndex: blockIndex(),
|
|
1351
|
-
delta: part.text,
|
|
1352
|
-
partial: output,
|
|
1353
|
-
});
|
|
1354
|
-
}
|
|
1355
|
-
}
|
|
1356
|
-
|
|
1357
|
-
if (part.functionCall) {
|
|
1358
|
-
hasContent = true;
|
|
1359
|
-
finishCurrent();
|
|
1360
|
-
const rawId = part.functionCall.id || "";
|
|
1361
|
-
const toolCall: ToolCall = {
|
|
1362
|
-
type: "toolCall",
|
|
1363
|
-
id: sanitizeToolCallId(rawId, part.functionCall.name),
|
|
1364
|
-
name: part.functionCall.name || "",
|
|
1365
|
-
arguments: asToolCallArguments(part.functionCall.args),
|
|
1366
|
-
...(part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {}),
|
|
1367
|
-
};
|
|
1368
|
-
blocks.push(toolCall);
|
|
1369
|
-
ensureStarted();
|
|
1370
|
-
stream.push({ type: "toolcall_start", contentIndex: blockIndex(), partial: output });
|
|
1371
|
-
stream.push({
|
|
1372
|
-
type: "toolcall_delta",
|
|
1373
|
-
contentIndex: blockIndex(),
|
|
1374
|
-
delta: JSON.stringify(toolCall.arguments),
|
|
1375
|
-
partial: output,
|
|
1376
|
-
});
|
|
1377
|
-
stream.push({
|
|
1378
|
-
type: "toolcall_end",
|
|
1379
|
-
contentIndex: blockIndex(),
|
|
1380
|
-
toolCall,
|
|
1381
|
-
partial: output,
|
|
1382
|
-
});
|
|
1383
|
-
}
|
|
1384
|
-
}
|
|
1385
|
-
|
|
1386
|
-
if (candidate?.finishReason) {
|
|
1387
|
-
output.rawStopReason = candidate.finishReason;
|
|
1388
|
-
output.stopReason = blocks.some((b) => b.type === "toolCall")
|
|
1389
|
-
? StopReason.ToolUse
|
|
1390
|
-
: mapStopReason(candidate.finishReason);
|
|
1391
|
-
}
|
|
1392
|
-
|
|
1393
|
-
if (responseData.usageMetadata) {
|
|
1394
|
-
const prompt = responseData.usageMetadata.promptTokenCount || 0;
|
|
1395
|
-
const cacheRead = responseData.usageMetadata.cachedContentTokenCount || 0;
|
|
1396
|
-
const thoughts = responseData.usageMetadata.thoughtsTokenCount || 0;
|
|
1397
|
-
output.usage.input = prompt - cacheRead;
|
|
1398
|
-
output.usage.output = (responseData.usageMetadata.candidatesTokenCount || 0) + thoughts;
|
|
1399
|
-
output.usage.reasoning = thoughts;
|
|
1400
|
-
output.usage.cacheRead = cacheRead;
|
|
1401
|
-
output.usage.totalTokens = responseData.usageMetadata.totalTokenCount || 0;
|
|
1402
|
-
if (model?.cost) {
|
|
1403
|
-
calculateCost(model, output.usage);
|
|
1404
|
-
} else {
|
|
1405
|
-
output.usage.cost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 };
|
|
1406
|
-
}
|
|
1407
|
-
}
|
|
1448
|
+
handleLine(line.replace(/\r$/, ""));
|
|
1408
1449
|
}
|
|
1409
1450
|
|
|
1410
1451
|
if (scanStart > 0) {
|
|
@@ -1413,6 +1454,14 @@ export async function streamResponse(
|
|
|
1413
1454
|
}
|
|
1414
1455
|
}
|
|
1415
1456
|
|
|
1457
|
+
buffer += decoder.decode();
|
|
1458
|
+
if (buffer.length > 0) handleLine(buffer.replace(/\r$/, ""));
|
|
1459
|
+
if (!sawFinishReason) {
|
|
1460
|
+
throw new Error(
|
|
1461
|
+
"Antigravity stream ended without a finish reason; the response was terminated before completion.",
|
|
1462
|
+
);
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1416
1465
|
finishCurrent();
|
|
1417
1466
|
return hasContent;
|
|
1418
1467
|
}
|
|
@@ -33,6 +33,7 @@ export type GeminiRole = (typeof GeminiRole)[keyof typeof GeminiRole];
|
|
|
33
33
|
|
|
34
34
|
export const AntigravityRequestType = {
|
|
35
35
|
Agent: "agent",
|
|
36
|
+
ImageGen: "image_gen",
|
|
36
37
|
} as const;
|
|
37
38
|
export type AntigravityRequestType =
|
|
38
39
|
(typeof AntigravityRequestType)[keyof typeof AntigravityRequestType];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { antigravityEnv } from "./util.js";
|
|
1
|
+
import { antigravityEnv, isRecord } from "./util.js";
|
|
2
2
|
|
|
3
3
|
const LOOPBACK_HOSTS = new Set(["127.0.0.1", "::1", "localhost"]);
|
|
4
4
|
const ALLOWED_API_HOST_SUFFIXES = [".googleapis.com", ".sandbox.googleapis.com"];
|
|
@@ -56,6 +56,52 @@ export function redactSecrets(text: string): string {
|
|
|
56
56
|
);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
const VALIDATION_URL_HOST = "accounts.google.com";
|
|
60
|
+
|
|
61
|
+
/** Accept only the Google account-verification host, never an arbitrary redirect. */
|
|
62
|
+
export function safeValidationUrl(value: unknown): string | undefined {
|
|
63
|
+
if (typeof value !== "string" || value.length === 0 || value.length > 2048 || /\s/.test(value))
|
|
64
|
+
return undefined;
|
|
65
|
+
let url: URL;
|
|
66
|
+
try {
|
|
67
|
+
url = new URL(value);
|
|
68
|
+
} catch {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
if (url.protocol !== "https:" || url.username || url.password) return undefined;
|
|
72
|
+
if (url.hostname !== VALIDATION_URL_HOST) return undefined;
|
|
73
|
+
return url.toString();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Pull `validation_url` from a 403 body before message slicing can drop it. */
|
|
77
|
+
export function extractValidationUrl(text: string): string | undefined {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(text) as { error?: { details?: unknown } };
|
|
80
|
+
const details = parsed.error?.details;
|
|
81
|
+
if (Array.isArray(details)) {
|
|
82
|
+
for (const detail of details) {
|
|
83
|
+
if (!isRecord(detail) || !isRecord(detail.metadata)) continue;
|
|
84
|
+
const safe = safeValidationUrl(detail.metadata.validation_url);
|
|
85
|
+
if (safe) return safe;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch {
|
|
89
|
+
// not JSON
|
|
90
|
+
}
|
|
91
|
+
const match = text.match(/https:\/\/accounts\.google\.com\/[^\s"'<>\\]+/);
|
|
92
|
+
return match ? safeValidationUrl(match[0].replace(/[),.;]+$/, "")) : undefined;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Keep session-bearing verification links out of doctor output and stored diagnostics. */
|
|
96
|
+
export function stripValidationUrls(text: string): string {
|
|
97
|
+
return text
|
|
98
|
+
.replace(/https:\/\/accounts\.google\.com\/[^\s"'<>\\]+/g, "[redacted-validation-url]")
|
|
99
|
+
.replace(
|
|
100
|
+
/ Open this link in a browser signed in to the same Google account to verify: \[redacted-validation-url\]/g,
|
|
101
|
+
"",
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
59
105
|
export function maskEmail(email: string | undefined): string | undefined {
|
|
60
106
|
if (!email || typeof email !== "string") return undefined;
|
|
61
107
|
const parts = email.split("@");
|