@herbertgao/pi-extensions 2026.8.11 → 2026.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/README.md +18 -10
  2. package/{node_modules/@herbertgao/pi-inline-skills/LICENSE → THIRD_PARTY_NOTICES.md} +15 -1
  3. package/node_modules/@czottmann/pi-automode/CHANGELOG.md +15 -0
  4. package/node_modules/@czottmann/pi-automode/README.md +5 -3
  5. package/node_modules/@czottmann/pi-automode/docs/adr/ADR-001-permission-precedence-and-trust-boundaries.md +2 -0
  6. package/node_modules/@czottmann/pi-automode/docs/adr/ADR-002-global-config-in-extension-data-directory.md +60 -0
  7. package/node_modules/@czottmann/pi-automode/docs/adr/INDEX.md +1 -0
  8. package/node_modules/@czottmann/pi-automode/docs/automode-classifier-flow.md +4 -4
  9. package/node_modules/@czottmann/pi-automode/docs/configuration.md +20 -4
  10. package/node_modules/@czottmann/pi-automode/docs/observability-logging.md +1 -1
  11. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/bash.ts +692 -0
  12. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/config.ts +181 -3
  13. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/constants.ts +4 -1
  14. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/extension.ts +143 -36
  15. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/hard-deny.ts +103 -148
  16. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/paths.ts +32 -6
  17. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/permissions.ts +344 -22
  18. package/node_modules/@czottmann/pi-automode/extensions/auto-mode.ts +1 -0
  19. package/node_modules/@czottmann/pi-automode/package.json +4 -1
  20. package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +2 -1
  21. package/node_modules/@herbertgao/pi-cc-extensions/README.md +2 -1
  22. package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/config.ts +4 -0
  23. package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/panel.ts +21 -1
  24. package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/agent-summary/core.ts +1 -1
  25. package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/context.ts +19 -19
  26. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +4 -2
  27. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +2 -1
  28. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/grouping.ts +10 -2
  29. package/node_modules/@herbertgao/pi-cc-extensions/package.json +3 -3
  30. package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +10 -0
  31. package/node_modules/@herbertgao/pi-subagents/README.md +21 -15
  32. package/node_modules/@herbertgao/pi-subagents/package.json +3 -3
  33. package/node_modules/@herbertgao/pi-subagents/src/agent-file-toggle.ts +11 -8
  34. package/node_modules/@herbertgao/pi-subagents/src/agent-manager.ts +184 -106
  35. package/node_modules/@herbertgao/pi-subagents/src/cross-extension-rpc.ts +31 -11
  36. package/node_modules/@herbertgao/pi-subagents/src/custom-agents.ts +9 -1
  37. package/node_modules/@herbertgao/pi-subagents/src/index.ts +156 -31
  38. package/node_modules/@herbertgao/pi-subagents/src/invocation-config.ts +17 -0
  39. package/node_modules/@herbertgao/pi-subagents/src/model-resolver.ts +14 -0
  40. package/node_modules/@herbertgao/pi-subagents/src/schedule.ts +8 -0
  41. package/node_modules/@herbertgao/pi-subagents/src/settings.ts +32 -1
  42. package/node_modules/@herbertgao/pi-subagents/src/types.ts +17 -2
  43. package/node_modules/@herbertgao/pi-subagents/src/ui/agent-widget.ts +23 -2
  44. package/node_modules/@herbertgao/pi-subagents/src/ui/conversation-viewer.ts +259 -24
  45. package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +2 -2
  46. package/node_modules/@narumitw/pi-btw/dist/index.ts +143 -46
  47. package/node_modules/@narumitw/pi-btw/dist/index.ts.map +3 -3
  48. package/node_modules/@narumitw/pi-btw/package.json +6 -6
  49. package/node_modules/@narumitw/pi-btw/src/fullscreen-ui.ts +136 -22
  50. package/node_modules/{@herbertgao → @tifan}/pi-copy-response/README.md +2 -4
  51. package/node_modules/{@herbertgao → @tifan}/pi-copy-response/package.json +5 -15
  52. package/node_modules/{@herbertgao → @tifan}/pi-handoff/README.md +4 -6
  53. package/node_modules/@tifan/pi-handoff/package.json +43 -0
  54. package/node_modules/{@herbertgao → @tifan}/pi-handoff/src/index.ts +1 -1
  55. package/node_modules/{@herbertgao → @tifan}/pi-inline-skills/README.md +2 -4
  56. package/node_modules/{@herbertgao → @tifan}/pi-inline-skills/package.json +5 -15
  57. package/node_modules/{@herbertgao → @tifan}/pi-mermaid-open/README.md +5 -7
  58. package/node_modules/{@herbertgao → @tifan}/pi-mermaid-open/package.json +5 -19
  59. package/node_modules/{@herbertgao → @tifan}/pi-preferred-thinking/README.md +4 -6
  60. package/node_modules/{@herbertgao → @tifan}/pi-preferred-thinking/package.json +6 -16
  61. package/node_modules/{@herbertgao → @tifan}/pi-preferred-thinking/src/index.ts +1 -6
  62. package/node_modules/{@herbertgao → @tifan}/pi-recap/README.md +4 -6
  63. package/node_modules/@tifan/pi-recap/package.json +42 -0
  64. package/node_modules/{@herbertgao → @tifan}/pi-recap/src/models.ts +1 -6
  65. package/node_modules/{@herbertgao → @tifan}/pi-rename/README.md +13 -8
  66. package/node_modules/@tifan/pi-rename/package.json +47 -0
  67. package/node_modules/@tifan/pi-rename/src/herdr-label.ts +4 -0
  68. package/node_modules/{@herbertgao → @tifan}/pi-rename/src/index.ts +4 -16
  69. package/node_modules/{@herbertgao → @tifan}/pi-rename/src/models.ts +1 -6
  70. package/node_modules/{@herbertgao → @tifan}/pi-titlebar-spinner/README.md +2 -4
  71. package/node_modules/{@herbertgao → @tifan}/pi-titlebar-spinner/package.json +5 -15
  72. package/node_modules/pi-lens/CHANGELOG.md +96 -1
  73. package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +2 -1
  74. package/node_modules/pi-lens/dist/clients/actionable-warnings.js +14 -5
  75. package/node_modules/pi-lens/dist/clients/advisory-provenance.js +48 -18
  76. package/node_modules/pi-lens/dist/clients/ast-grep-client.js +1 -3
  77. package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +16 -4
  78. package/node_modules/pi-lens/dist/clients/bash-file-access.js +3 -1
  79. package/node_modules/pi-lens/dist/clients/biome-client.js +1 -3
  80. package/node_modules/pi-lens/dist/clients/blocker-freshness.js +21 -8
  81. package/node_modules/pi-lens/dist/clients/bounded-cache.js +24 -8
  82. package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +4 -3
  83. package/node_modules/pi-lens/dist/clients/cache-manager.js +6 -7
  84. package/node_modules/pi-lens/dist/clients/cache-observability.js +461 -66
  85. package/node_modules/pi-lens/dist/clients/call-graph.js +238 -63
  86. package/node_modules/pi-lens/dist/clients/codebase-model.js +13 -5
  87. package/node_modules/pi-lens/dist/clients/complexity-client.js +1 -3
  88. package/node_modules/pi-lens/dist/clients/dead-code-client.js +19 -8
  89. package/node_modules/pi-lens/dist/clients/dead-code-logger.js +1 -2
  90. package/node_modules/pi-lens/dist/clients/deadline-utils.js +3 -1
  91. package/node_modules/pi-lens/dist/clients/debug-heap.js +8 -1
  92. package/node_modules/pi-lens/dist/clients/degradation-ledger.js +1 -1
  93. package/node_modules/pi-lens/dist/clients/dependency-checker.js +11 -7
  94. package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +39 -2
  95. package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +5 -1
  96. package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +2 -3
  97. package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +13 -1
  98. package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +3 -1
  99. package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +2 -1
  100. package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +1 -1
  101. package/node_modules/pi-lens/dist/clients/dispatch/integration.js +9 -4
  102. package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +3 -1
  103. package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +6 -2
  104. package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +31 -7
  105. package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +5 -2
  106. package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +10 -14
  107. package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +5 -1
  108. package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +1 -1
  109. package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +3 -1
  110. package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +25 -6
  111. package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +1 -1
  112. package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +1 -1
  113. package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +3 -1
  114. package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +13 -8
  115. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +4 -1
  116. package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +25 -10
  117. package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +1 -1
  118. package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +1 -1
  119. package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +1 -1
  120. package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +28 -4
  121. package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +6 -8
  122. package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +212 -11
  123. package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +1 -1
  124. package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +8 -4
  125. package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +10 -6
  126. package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +23 -14
  127. package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +1 -1
  128. package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +7 -9
  129. package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +5 -2
  130. package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +7 -7
  131. package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +6 -8
  132. package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +13 -8
  133. package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +13 -8
  134. package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +17 -3
  135. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +7 -1
  136. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +24 -1
  137. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +35 -0
  138. package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +1 -3
  139. package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +6 -8
  140. package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +1 -1
  141. package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +2 -1
  142. package/node_modules/pi-lens/dist/clients/dispatch/types.js +6 -1
  143. package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +6 -2
  144. package/node_modules/pi-lens/dist/clients/extension-log.js +5 -3
  145. package/node_modules/pi-lens/dist/clients/feature-hints.js +8 -1
  146. package/node_modules/pi-lens/dist/clients/file-kinds.js +34 -129
  147. package/node_modules/pi-lens/dist/clients/file-utils.js +17 -1
  148. package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +57 -2
  149. package/node_modules/pi-lens/dist/clients/formatters.js +144 -27
  150. package/node_modules/pi-lens/dist/clients/freshness.js +38 -0
  151. package/node_modules/pi-lens/dist/clients/git-guard.js +43 -13
  152. package/node_modules/pi-lens/dist/clients/go-client.js +1 -3
  153. package/node_modules/pi-lens/dist/clients/grammar-source.js +1 -1
  154. package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +30 -4
  155. package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +1 -3
  156. package/node_modules/pi-lens/dist/clients/install-diagnostics.js +4 -2
  157. package/node_modules/pi-lens/dist/clients/installer/index.js +86 -77
  158. package/node_modules/pi-lens/dist/clients/instance-reaper.js +5 -2
  159. package/node_modules/pi-lens/dist/clients/instance-registry.js +4 -2
  160. package/node_modules/pi-lens/dist/clients/jscpd-client.js +6 -1
  161. package/node_modules/pi-lens/dist/clients/knip-client.js +29 -15
  162. package/node_modules/pi-lens/dist/clients/language-profile.js +4 -1
  163. package/node_modules/pi-lens/dist/clients/latency-logger.js +13 -2
  164. package/node_modules/pi-lens/dist/clients/lens-config.js +1 -1
  165. package/node_modules/pi-lens/dist/clients/lens-map.js +8 -3
  166. package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +1 -1
  167. package/node_modules/pi-lens/dist/clients/lsp/config.js +4 -6
  168. package/node_modules/pi-lens/dist/clients/lsp/edits.js +119 -32
  169. package/node_modules/pi-lens/dist/clients/lsp/index.js +94 -35
  170. package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +2 -1
  171. package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +4 -1
  172. package/node_modules/pi-lens/dist/clients/lsp/launch.js +11 -3
  173. package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +152 -0
  174. package/node_modules/pi-lens/dist/clients/lsp/server.js +19 -7
  175. package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +10 -2
  176. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +9 -4
  177. package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +1 -3
  178. package/node_modules/pi-lens/dist/clients/lsp-mutation.js +10 -20
  179. package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +1 -1
  180. package/node_modules/pi-lens/dist/clients/memory-sampler.js +73 -7
  181. package/node_modules/pi-lens/dist/clients/metrics-client.js +1 -3
  182. package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +8 -3
  183. package/node_modules/pi-lens/dist/clients/module-report-lsp.js +7 -1
  184. package/node_modules/pi-lens/dist/clients/module-report.js +14 -17
  185. package/node_modules/pi-lens/dist/clients/ndjson-logger.js +3 -5
  186. package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +220 -0
  187. package/node_modules/pi-lens/dist/clients/package-manager.js +6 -1
  188. package/node_modules/pi-lens/dist/clients/pipeline.js +57 -9
  189. package/node_modules/pi-lens/dist/clients/project-conventions.js +2 -8
  190. package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +10 -7
  191. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +2 -1
  192. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +3 -1
  193. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +13 -9
  194. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +3 -1
  195. package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +5 -2
  196. package/node_modules/pi-lens/dist/clients/project-lens-config.js +12 -5
  197. package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +48 -0
  198. package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +15 -1
  199. package/node_modules/pi-lens/dist/clients/project-snapshot.js +472 -66
  200. package/node_modules/pi-lens/dist/clients/read-expansion.js +12 -2
  201. package/node_modules/pi-lens/dist/clients/read-guard-logger.js +5 -4
  202. package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +5 -2
  203. package/node_modules/pi-lens/dist/clients/read-guard.js +1 -1
  204. package/node_modules/pi-lens/dist/clients/resource-sampler.js +1 -1
  205. package/node_modules/pi-lens/dist/clients/reverse-deps.js +6 -5
  206. package/node_modules/pi-lens/dist/clients/review-graph/builder.js +42 -17
  207. package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +8 -2
  208. package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +10 -1
  209. package/node_modules/pi-lens/dist/clients/review-graph/query.js +2 -1
  210. package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +4 -2
  211. package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +2 -2
  212. package/node_modules/pi-lens/dist/clients/ruff-client.js +6 -5
  213. package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +63 -31
  214. package/node_modules/pi-lens/dist/clients/runtime-context.js +12 -4
  215. package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +83 -4
  216. package/node_modules/pi-lens/dist/clients/runtime-session.js +14 -0
  217. package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +59 -3
  218. package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +148 -34
  219. package/node_modules/pi-lens/dist/clients/runtime-turn.js +147 -6
  220. package/node_modules/pi-lens/dist/clients/rust-client.js +1 -3
  221. package/node_modules/pi-lens/dist/clients/safe-spawn.js +150 -11
  222. package/node_modules/pi-lens/dist/clients/security-scan-client.js +1 -3
  223. package/node_modules/pi-lens/dist/clients/session-summary.js +3 -1
  224. package/node_modules/pi-lens/dist/clients/sg-runner.js +1 -3
  225. package/node_modules/pi-lens/dist/clients/source-filter.js +10 -6
  226. package/node_modules/pi-lens/dist/clients/source-walker.js +1 -1
  227. package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +96 -0
  228. package/node_modules/pi-lens/dist/clients/startup-scan.js +4 -1
  229. package/node_modules/pi-lens/dist/clients/tool-definition.js +7 -0
  230. package/node_modules/pi-lens/dist/clients/tool-policy.js +26 -11
  231. package/node_modules/pi-lens/dist/clients/tool-render.js +2 -1
  232. package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +10 -4
  233. package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +2 -2
  234. package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +12 -5
  235. package/node_modules/pi-lens/dist/clients/warm-attach.js +12 -5
  236. package/node_modules/pi-lens/dist/clients/widget-state.js +27 -11
  237. package/node_modules/pi-lens/dist/clients/word-index.js +3 -1
  238. package/node_modules/pi-lens/dist/clients/workspace-topology.js +8 -2
  239. package/node_modules/pi-lens/dist/clients/zizmor-config.js +9 -1
  240. package/node_modules/pi-lens/dist/i18n.js +13 -5
  241. package/node_modules/pi-lens/dist/index.js +10797 -8627
  242. package/node_modules/pi-lens/dist/mcp/server.js +3 -1
  243. package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +68 -12
  244. package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +21 -7
  245. package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +164 -35
  246. package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +24 -7
  247. package/node_modules/pi-lens/dist/tools/lsp-navigation.js +3 -1
  248. package/node_modules/pi-lens/dist/tools/module-report.js +1 -1
  249. package/node_modules/pi-lens/dist/tools/project-report.js +1 -1
  250. package/node_modules/pi-lens/dist/tools/symbol-search.js +5 -2
  251. package/node_modules/pi-lens/docs/durable-store-audit-1202.md +1 -1
  252. package/node_modules/pi-lens/docs/servercapabilities.md +1 -1
  253. package/node_modules/pi-lens/package.json +160 -156
  254. package/node_modules/pi-lens/rules/typos/_typos.toml +2 -2
  255. package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +31 -13
  256. package/node_modules/pi-lens/scripts/download-grammars.js +9 -3
  257. package/node_modules/pi-lens/scripts/rpc-load-check.mjs +30 -9
  258. package/node_modules/pi-mcp-adapter/CHANGELOG.md +34 -0
  259. package/node_modules/pi-mcp-adapter/README.md +42 -13
  260. package/node_modules/pi-mcp-adapter/commands.ts +4 -2
  261. package/node_modules/pi-mcp-adapter/config.ts +35 -5
  262. package/node_modules/pi-mcp-adapter/direct-tools.ts +103 -92
  263. package/node_modules/pi-mcp-adapter/dist/agent-dir.d.ts +10 -0
  264. package/node_modules/pi-mcp-adapter/dist/agent-dir.js +63 -0
  265. package/node_modules/pi-mcp-adapter/dist/agent-dir.js.map +1 -0
  266. package/node_modules/pi-mcp-adapter/dist/agent-plugin-loader.d.ts +8 -0
  267. package/node_modules/pi-mcp-adapter/dist/agent-plugin-loader.js +356 -0
  268. package/node_modules/pi-mcp-adapter/dist/agent-plugin-loader.js.map +1 -0
  269. package/node_modules/pi-mcp-adapter/dist/config.d.ts +123 -0
  270. package/node_modules/pi-mcp-adapter/dist/config.js +1077 -0
  271. package/node_modules/pi-mcp-adapter/dist/config.js.map +1 -0
  272. package/node_modules/pi-mcp-adapter/dist/metadata-cache.d.ts +19 -0
  273. package/node_modules/pi-mcp-adapter/dist/metadata-cache.js +319 -0
  274. package/node_modules/pi-mcp-adapter/dist/metadata-cache.js.map +1 -0
  275. package/node_modules/pi-mcp-adapter/dist/package-mcp-loader.d.ts +2 -0
  276. package/node_modules/pi-mcp-adapter/dist/package-mcp-loader.js +156 -0
  277. package/node_modules/pi-mcp-adapter/dist/package-mcp-loader.js.map +1 -0
  278. package/node_modules/pi-mcp-adapter/dist/resource-tools.d.ts +1 -0
  279. package/node_modules/pi-mcp-adapter/dist/resource-tools.js +15 -0
  280. package/node_modules/pi-mcp-adapter/dist/resource-tools.js.map +1 -0
  281. package/node_modules/pi-mcp-adapter/dist/types.d.ts +564 -0
  282. package/node_modules/pi-mcp-adapter/dist/types.js +287 -0
  283. package/node_modules/pi-mcp-adapter/dist/types.js.map +1 -0
  284. package/node_modules/pi-mcp-adapter/dist/ui-app-bridge-helpers.d.ts +6 -0
  285. package/node_modules/pi-mcp-adapter/dist/ui-app-bridge-helpers.js +37 -0
  286. package/node_modules/pi-mcp-adapter/dist/ui-app-bridge-helpers.js.map +1 -0
  287. package/node_modules/pi-mcp-adapter/dist/ui-stream-types.d.ts +104 -0
  288. package/node_modules/pi-mcp-adapter/dist/ui-stream-types.js +59 -0
  289. package/node_modules/pi-mcp-adapter/dist/ui-stream-types.js.map +1 -0
  290. package/node_modules/pi-mcp-adapter/dist/ui-tool-visibility.d.ts +4 -0
  291. package/node_modules/pi-mcp-adapter/dist/ui-tool-visibility.js +27 -0
  292. package/node_modules/pi-mcp-adapter/dist/ui-tool-visibility.js.map +1 -0
  293. package/node_modules/pi-mcp-adapter/dist/utils.d.ts +32 -0
  294. package/node_modules/pi-mcp-adapter/dist/utils.js +338 -0
  295. package/node_modules/pi-mcp-adapter/dist/utils.js.map +1 -0
  296. package/node_modules/pi-mcp-adapter/failure-backoff.ts +23 -0
  297. package/node_modules/pi-mcp-adapter/index.ts +204 -82
  298. package/node_modules/pi-mcp-adapter/init.ts +36 -29
  299. package/node_modules/pi-mcp-adapter/lifecycle.ts +16 -8
  300. package/node_modules/pi-mcp-adapter/mcp-code.ts +2 -0
  301. package/node_modules/pi-mcp-adapter/mcp-oauth-provider.ts +66 -16
  302. package/node_modules/pi-mcp-adapter/mcp-output-guard.ts +95 -7
  303. package/node_modules/pi-mcp-adapter/mcp-probe.ts +18 -4
  304. package/node_modules/pi-mcp-adapter/mcp-references.ts +368 -0
  305. package/node_modules/pi-mcp-adapter/mcp-status.ts +8 -19
  306. package/node_modules/pi-mcp-adapter/metadata-cache.ts +20 -12
  307. package/node_modules/pi-mcp-adapter/namespace-tools.ts +276 -0
  308. package/node_modules/pi-mcp-adapter/package.json +24 -6
  309. package/node_modules/pi-mcp-adapter/proxy-modes.ts +66 -10
  310. package/node_modules/pi-mcp-adapter/search-ranking.ts +2 -0
  311. package/node_modules/pi-mcp-adapter/server-manager.ts +63 -12
  312. package/node_modules/pi-mcp-adapter/state.ts +1 -3
  313. package/node_modules/pi-mcp-adapter/tool-result-renderer.ts +16 -2
  314. package/node_modules/pi-mcp-adapter/types.ts +48 -1
  315. package/node_modules/pi-mcp-adapter/ui-server.ts +3 -19
  316. package/node_modules/pi-mcp-adapter/ui-session.ts +2 -1
  317. package/node_modules/pi-mcp-adapter/utils.ts +21 -19
  318. package/node_modules/pi-web-access/CHANGELOG.md +26 -0
  319. package/node_modules/pi-web-access/README.md +71 -14
  320. package/node_modules/pi-web-access/chrome-cookies.ts +115 -35
  321. package/node_modules/pi-web-access/credential-source.ts +6 -2
  322. package/node_modules/pi-web-access/curator-page.ts +5 -3
  323. package/node_modules/pi-web-access/curator-server.ts +2 -1
  324. package/node_modules/pi-web-access/extract.ts +89 -9
  325. package/node_modules/pi-web-access/fetch-params.ts +13 -0
  326. package/node_modules/pi-web-access/gemini-adc.ts +298 -0
  327. package/node_modules/pi-web-access/gemini-api.ts +59 -15
  328. package/node_modules/pi-web-access/gemini-search.ts +58 -18
  329. package/node_modules/pi-web-access/gemini-url-context.ts +3 -2
  330. package/node_modules/pi-web-access/gemini-web-config.ts +57 -7
  331. package/node_modules/pi-web-access/gemini-web.ts +9 -3
  332. package/node_modules/pi-web-access/github-api.ts +5 -4
  333. package/node_modules/pi-web-access/github-issue-pr.ts +700 -0
  334. package/node_modules/pi-web-access/index.ts +403 -297
  335. package/node_modules/pi-web-access/kimi-search.ts +234 -0
  336. package/node_modules/pi-web-access/openai-search.ts +118 -21
  337. package/node_modules/pi-web-access/package.json +3 -2
  338. package/node_modules/pi-web-access/ssrf-protection.ts +4 -1
  339. package/node_modules/pi-web-access/utils.ts +307 -1
  340. package/node_modules/pi-web-access/youtube-extract.ts +2 -2
  341. package/package.json +40 -37
  342. package/node_modules/@herbertgao/pi-copy-response/CHANGELOG.md +0 -49
  343. package/node_modules/@herbertgao/pi-copy-response/LICENSE +0 -22
  344. package/node_modules/@herbertgao/pi-handoff/CHANGELOG.md +0 -83
  345. package/node_modules/@herbertgao/pi-handoff/LICENSE +0 -22
  346. package/node_modules/@herbertgao/pi-handoff/package.json +0 -60
  347. package/node_modules/@herbertgao/pi-inline-skills/CHANGELOG.md +0 -57
  348. package/node_modules/@herbertgao/pi-mermaid-open/CHANGELOG.md +0 -39
  349. package/node_modules/@herbertgao/pi-mermaid-open/LICENSE +0 -22
  350. package/node_modules/@herbertgao/pi-preferred-thinking/CHANGELOG.md +0 -63
  351. package/node_modules/@herbertgao/pi-preferred-thinking/LICENSE +0 -22
  352. package/node_modules/@herbertgao/pi-recap/CHANGELOG.md +0 -101
  353. package/node_modules/@herbertgao/pi-recap/LICENSE +0 -22
  354. package/node_modules/@herbertgao/pi-recap/package.json +0 -55
  355. package/node_modules/@herbertgao/pi-rename/CHANGELOG.md +0 -49
  356. package/node_modules/@herbertgao/pi-rename/LICENSE +0 -22
  357. package/node_modules/@herbertgao/pi-rename/package.json +0 -63
  358. package/node_modules/@herbertgao/pi-titlebar-spinner/CHANGELOG.md +0 -25
  359. package/node_modules/@herbertgao/pi-titlebar-spinner/LICENSE +0 -22
  360. /package/node_modules/{@herbertgao → @tifan}/pi-copy-response/src/index.ts +0 -0
  361. /package/node_modules/{@herbertgao → @tifan}/pi-handoff/src/complete-text.ts +0 -0
  362. /package/node_modules/{@herbertgao → @tifan}/pi-handoff/src/session-query.ts +0 -0
  363. /package/node_modules/{@herbertgao → @tifan}/pi-inline-skills/src/index.ts +0 -0
  364. /package/node_modules/{@herbertgao → @tifan}/pi-mermaid-open/herdr-plugin/herdr-plugin.toml +0 -0
  365. /package/node_modules/{@herbertgao → @tifan}/pi-mermaid-open/herdr-plugin/viewer.mjs +0 -0
  366. /package/node_modules/{@herbertgao → @tifan}/pi-mermaid-open/src/index.ts +0 -0
  367. /package/node_modules/{@herbertgao → @tifan}/pi-recap/src/index.ts +0 -0
  368. /package/node_modules/{@herbertgao → @tifan}/pi-recap/src/model-picker.ts +0 -0
  369. /package/node_modules/{@herbertgao → @tifan}/pi-recap/src/sanitize.ts +0 -0
  370. /package/node_modules/{@herbertgao → @tifan}/pi-recap/src/tui.ts +0 -0
  371. /package/node_modules/{@herbertgao → @tifan}/pi-rename/src/model-picker.ts +0 -0
  372. /package/node_modules/{@herbertgao → @tifan}/pi-rename/src/naming.ts +0 -0
  373. /package/node_modules/{@herbertgao → @tifan}/pi-rename/src/sanitize.ts +0 -0
  374. /package/node_modules/{@herbertgao → @tifan}/pi-titlebar-spinner/src/index.ts +0 -0
@@ -481,6 +481,9 @@ import {
481
481
  copyToClipboard as copyToHostClipboard
482
482
  } from "@earendil-works/pi-coding-agent";
483
483
  import {
484
+ isKeyRelease,
485
+ Key as Key2,
486
+ matchesKey as matchesKey2,
484
487
  TuiAltScreen,
485
488
  truncateToWidth as truncateToWidth2
486
489
  } from "@earendil-works/pi-tui";
@@ -509,23 +512,31 @@ async function runBtwFullscreen(ctx, run, dependencies = {}) {
509
512
  ));
510
513
  let liveEditorText = ctx.ui.getEditorText();
511
514
  let restoreEditor = false;
515
+ let host;
512
516
  const outcome = await ctx.ui.custom(
513
- (parent, theme, keybindings, done) => new BtwFullscreenHost(
514
- parent,
515
- theme,
516
- keybindings,
517
- ctx,
518
- run,
519
- (value) => {
520
- try {
521
- liveEditorText = ctx.ui.getEditorText();
522
- restoreEditor = true;
523
- } catch {
524
- }
525
- done(value);
526
- },
527
- createTui
528
- )
517
+ (parent, theme, keybindings, done) => {
518
+ host = new BtwFullscreenHost(
519
+ parent,
520
+ theme,
521
+ keybindings,
522
+ ctx,
523
+ run,
524
+ (value) => {
525
+ try {
526
+ liveEditorText = ctx.ui.getEditorText();
527
+ restoreEditor = true;
528
+ } catch {
529
+ }
530
+ done(value);
531
+ },
532
+ createTui
533
+ );
534
+ return host;
535
+ },
536
+ {
537
+ overlay: true,
538
+ onHandle: (handle) => host?.setParentOverlay(handle)
539
+ }
529
540
  );
530
541
  if (restoreEditor) {
531
542
  try {
@@ -536,9 +547,52 @@ async function runBtwFullscreen(ctx, run, dependencies = {}) {
536
547
  if (outcome.kind === "failed") throw outcome.error;
537
548
  return outcome.value;
538
549
  }
550
+ var btwInputListeners = /* @__PURE__ */ new WeakMap();
551
+ function dispatchBtwInput(listeners, data) {
552
+ let current = data;
553
+ for (const group of [listeners.beforeViewport, listeners.regular]) {
554
+ for (const listener of group) {
555
+ const result = listener(current);
556
+ if (result?.consume) return result;
557
+ if (result?.data !== void 0) current = result.data;
558
+ }
559
+ }
560
+ return current === data ? void 0 : { data: current };
561
+ }
562
+ var BtwTuiAltScreen = class extends TuiAltScreen {
563
+ addInputListener(listener) {
564
+ let listeners = btwInputListeners.get(this);
565
+ if (!listeners) {
566
+ const registeredListeners = {
567
+ beforeViewport: /* @__PURE__ */ new Set(),
568
+ regular: /* @__PURE__ */ new Set()
569
+ };
570
+ btwInputListeners.set(this, registeredListeners);
571
+ super.addInputListener((data) => dispatchBtwInput(registeredListeners, data));
572
+ listeners = registeredListeners;
573
+ }
574
+ listeners.regular.add(listener);
575
+ return () => listeners.regular.delete(listener);
576
+ }
577
+ addInputListenerBeforeViewport(listener) {
578
+ const listeners = btwInputListeners.get(this);
579
+ if (!listeners) return super.addInputListener(listener);
580
+ listeners.beforeViewport.add(listener);
581
+ return () => listeners.beforeViewport.delete(listener);
582
+ }
583
+ removeInputListener(listener) {
584
+ const listeners = btwInputListeners.get(this);
585
+ if (!listeners) {
586
+ super.removeInputListener(listener);
587
+ return;
588
+ }
589
+ listeners.beforeViewport.delete(listener);
590
+ listeners.regular.delete(listener);
591
+ }
592
+ };
539
593
  function createBtwFullscreenTui(parent, theme, openUrl, copyToClipboard2) {
540
594
  const styleSearchMatch = (text) => theme.bg("searchMatchBg", theme.fg("searchMatchText", text));
541
- return new TuiAltScreen(parent.terminal, parent.getShowHardwareCursor(), void 0, {
595
+ return new BtwTuiAltScreen(parent.terminal, parent.getShowHardwareCursor(), void 0, {
542
596
  mouse: true,
543
597
  searchMatchStyle: (text) => theme.underline(styleSearchMatch(text)),
544
598
  searchCurrentMatchStyle: (text) => theme.bold(theme.inverse(styleSearchMatch(text))),
@@ -577,10 +631,21 @@ var BtwFullscreenHost = class {
577
631
  done;
578
632
  createTui;
579
633
  fullscreen;
634
+ parentOverlay;
580
635
  cancelActiveCustom;
636
+ hardCancelActiveCustom;
637
+ removeHardCancelListener;
581
638
  started = false;
582
639
  disposed = false;
583
640
  finished = false;
641
+ parentStopped = false;
642
+ parentRestarted = false;
643
+ fullscreenCreated = false;
644
+ fullscreenStopped = false;
645
+ cleanupError;
646
+ setParentOverlay(overlay) {
647
+ this.parentOverlay = overlay;
648
+ }
584
649
  render(width) {
585
650
  return [truncateToWidth2(this.theme.fg("muted", "Opening btw side thread\u2026"), width)];
586
651
  }
@@ -595,44 +660,64 @@ var BtwFullscreenHost = class {
595
660
  if (this.started || this.finished) return;
596
661
  this.started = true;
597
662
  let outcome;
598
- let parentStopped = false;
599
- let fullscreenCreated = false;
600
663
  try {
601
664
  if (this.disposed) throw new FullscreenUiDisposedError();
602
665
  this.parent.stop({ preserveScreen: true });
603
- parentStopped = true;
666
+ this.parentStopped = true;
604
667
  if (this.disposed) throw new FullscreenUiDisposedError();
605
668
  this.fullscreen = this.createTui(this.parent, this.theme);
606
- fullscreenCreated = true;
669
+ this.fullscreenCreated = true;
607
670
  this.fullscreen.start();
671
+ const addHardCancelListener = this.fullscreen.addInputListenerBeforeViewport?.bind(this.fullscreen) ?? this.fullscreen.addInputListener.bind(this.fullscreen);
672
+ this.removeHardCancelListener = addHardCancelListener((data) => {
673
+ if (isKeyRelease(data) || !matchesKey2(data, Key2.ctrl("c"))) return void 0;
674
+ try {
675
+ this.hardCancelActiveCustom?.();
676
+ } finally {
677
+ this.restoreParent();
678
+ }
679
+ return { consume: true };
680
+ });
608
681
  outcome = { kind: "completed", value: await this.run(this.createContext()) };
609
682
  } catch (error) {
610
683
  outcome = { kind: "failed", error };
611
684
  }
612
- let cleanupError;
613
685
  try {
614
686
  this.cancelActiveCustom?.();
615
687
  } catch (error) {
616
- cleanupError = error;
688
+ this.cleanupError ??= error;
617
689
  }
618
- if (fullscreenCreated) {
690
+ this.restoreParent();
691
+ if (this.cleanupError !== void 0) outcome = { kind: "failed", error: this.cleanupError };
692
+ this.finished = true;
693
+ this.done(outcome);
694
+ }
695
+ restoreParent() {
696
+ this.removeHardCancelListener?.();
697
+ this.removeHardCancelListener = void 0;
698
+ if (this.fullscreenCreated && !this.fullscreenStopped) {
699
+ this.fullscreenStopped = true;
619
700
  try {
620
701
  this.fullscreen?.stop({ preserveScreen: true });
621
702
  } catch (error) {
622
- cleanupError ??= error;
703
+ this.cleanupError ??= error;
623
704
  }
624
705
  }
625
- if (parentStopped) {
626
- try {
627
- this.parent.start();
628
- this.parent.renderNow(false);
629
- } catch (error) {
630
- cleanupError ??= error;
631
- }
706
+ if (!this.parentStopped || this.parentRestarted) return;
707
+ const parentOverlay = this.parentOverlay;
708
+ this.parentOverlay = void 0;
709
+ try {
710
+ parentOverlay?.setHidden(true);
711
+ } catch (error) {
712
+ this.cleanupError ??= error;
713
+ }
714
+ try {
715
+ this.parent.start();
716
+ this.parentRestarted = true;
717
+ this.parent.renderNow(false);
718
+ } catch (error) {
719
+ this.cleanupError ??= error;
632
720
  }
633
- if (cleanupError !== void 0) outcome = { kind: "failed", error: cleanupError };
634
- this.finished = true;
635
- this.done(outcome);
636
721
  }
637
722
  createContext() {
638
723
  const ui = new Proxy(this.ctx.ui, {
@@ -706,6 +791,7 @@ var BtwFullscreenHost = class {
706
791
  if (promiseSettled || !hasPendingValue) return;
707
792
  promiseSettled = true;
708
793
  this.cancelActiveCustom = void 0;
794
+ this.hardCancelActiveCustom = void 0;
709
795
  if (!factorySettled) {
710
796
  resolve(pendingValue);
711
797
  return;
@@ -729,6 +815,7 @@ var BtwFullscreenHost = class {
729
815
  closed = true;
730
816
  promiseSettled = true;
731
817
  this.cancelActiveCustom = void 0;
818
+ this.hardCancelActiveCustom = void 0;
732
819
  try {
733
820
  unmount();
734
821
  reject(error);
@@ -741,6 +828,16 @@ var BtwFullscreenHost = class {
741
828
  disposeComponent();
742
829
  if (!promiseSettled) fail(new FullscreenUiDisposedError());
743
830
  };
831
+ this.hardCancelActiveCustom = () => {
832
+ if (promiseSettled) return;
833
+ try {
834
+ component?.handleInput?.("");
835
+ } catch (error) {
836
+ fail(error);
837
+ return;
838
+ }
839
+ this.cancelActiveCustom?.();
840
+ };
744
841
  let created;
745
842
  try {
746
843
  created = factory(fullscreen, this.theme, this.keybindings, close);
@@ -789,7 +886,7 @@ import {
789
886
  copyToClipboard,
790
887
  TreeSelectorComponent
791
888
  } from "@earendil-works/pi-coding-agent";
792
- import { Key as Key2, matchesKey as matchesKey2 } from "@earendil-works/pi-tui";
889
+ import { Key as Key3, matchesKey as matchesKey3 } from "@earendil-works/pi-tui";
793
890
 
794
891
  // src/settings.ts
795
892
  import { randomUUID } from "node:crypto";
@@ -1386,7 +1483,7 @@ var MainThreadTreePickerComponent = class {
1386
1483
  return this.selector.render(width);
1387
1484
  }
1388
1485
  handleInput(data) {
1389
- if (matchesKey2(data, Key2.ctrl("c"))) {
1486
+ if (matchesKey3(data, Key3.ctrl("c"))) {
1390
1487
  this.onClose();
1391
1488
  return;
1392
1489
  }
@@ -1678,10 +1775,10 @@ import {
1678
1775
  import {
1679
1776
  CURSOR_MARKER,
1680
1777
  Editor,
1681
- Key as Key3,
1778
+ Key as Key4,
1682
1779
  Loader,
1683
1780
  Markdown,
1684
- matchesKey as matchesKey3,
1781
+ matchesKey as matchesKey4,
1685
1782
  ScrollView,
1686
1783
  truncateToWidth as truncateToWidth3,
1687
1784
  VStack,
@@ -1794,12 +1891,12 @@ var BtwTranscriptPager = class {
1794
1891
  }
1795
1892
  handleInput(data) {
1796
1893
  if (this.finished) return;
1797
- if (matchesKey3(data, Key3.ctrl("c"))) {
1894
+ if (matchesKey4(data, Key4.ctrl("c"))) {
1798
1895
  this.finished = true;
1799
1896
  this.onAction({ kind: "close" });
1800
1897
  return;
1801
1898
  }
1802
- if (this.canBringToMain && matchesKey3(data, Key3.ctrl("r"))) {
1899
+ if (this.canBringToMain && matchesKey4(data, Key4.ctrl("r"))) {
1803
1900
  this.finished = true;
1804
1901
  this.onAction({ kind: "bringToMain", questionDraft: this.editor.getExpandedText() });
1805
1902
  return;
@@ -1816,12 +1913,12 @@ var BtwTranscriptPager = class {
1816
1913
  }
1817
1914
  return;
1818
1915
  }
1819
- if (matchesKey3(data, Key3.pageUp)) {
1916
+ if (matchesKey4(data, Key4.pageUp)) {
1820
1917
  this.scrollView.scrollBy(-Math.max(1, this.scrollView.viewportHeight));
1821
1918
  this.tui.requestRender();
1822
1919
  return;
1823
1920
  }
1824
- if (matchesKey3(data, Key3.pageDown)) {
1921
+ if (matchesKey4(data, Key4.pageDown)) {
1825
1922
  this.scrollView.scrollBy(Math.max(1, this.scrollView.viewportHeight));
1826
1923
  this.tui.requestRender();
1827
1924
  return;
@@ -2018,7 +2115,7 @@ var BtwAnsweringView = class {
2018
2115
  }
2019
2116
  handleInput(data) {
2020
2117
  if (this.finished) return;
2021
- if (matchesKey3(data, Key3.ctrl("c"))) {
2118
+ if (matchesKey4(data, Key4.ctrl("c"))) {
2022
2119
  this.finished = true;
2023
2120
  this.loader.stop();
2024
2121
  this.controller.abort();
@@ -2037,12 +2134,12 @@ var BtwAnsweringView = class {
2037
2134
  }
2038
2135
  return;
2039
2136
  }
2040
- if (matchesKey3(data, Key3.pageUp)) {
2137
+ if (matchesKey4(data, Key4.pageUp)) {
2041
2138
  this.scrollView.scrollBy(-Math.max(1, this.scrollView.viewportHeight));
2042
2139
  this.tui.requestRender();
2043
2140
  return;
2044
2141
  }
2045
- if (matchesKey3(data, Key3.pageDown)) {
2142
+ if (matchesKey4(data, Key4.pageDown)) {
2046
2143
  this.scrollView.scrollBy(Math.max(1, this.scrollView.viewportHeight));
2047
2144
  this.tui.requestRender();
2048
2145
  return;