@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@narumitw/pi-btw",
3
- "version": "0.55.1",
3
+ "version": "0.55.3",
4
4
  "description": "Pi extension that adds a /btw side-question command.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -34,10 +34,10 @@
34
34
  "prepack": "npm run build"
35
35
  },
36
36
  "devDependencies": {
37
- "@biomejs/biome": "2.5.9",
38
- "@earendil-works/pi-ai": "0.84.2",
39
- "@earendil-works/pi-coding-agent": "0.84.2",
40
- "@earendil-works/pi-tui": "0.84.2",
37
+ "@biomejs/biome": "2.5.10",
38
+ "@earendil-works/pi-ai": "0.84.3",
39
+ "@earendil-works/pi-coding-agent": "0.84.3",
40
+ "@earendil-works/pi-tui": "0.84.3",
41
41
  "esbuild": "0.28.2",
42
42
  "typescript": "7.0.2"
43
43
  },
@@ -47,7 +47,7 @@
47
47
  "directory": "packages/pi-btw"
48
48
  },
49
49
  "dependencies": {
50
- "@narumitw/pi-tui-kit": "^0.57.0"
50
+ "@narumitw/pi-tui-kit": "^0.58.1"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "@earendil-works/pi-ai": "*",
@@ -7,9 +7,14 @@ import {
7
7
  } from "@earendil-works/pi-coding-agent";
8
8
  import {
9
9
  type Component,
10
+ isKeyRelease,
11
+ Key,
12
+ matchesKey,
10
13
  type OverlayHandle,
11
14
  type TUI,
12
15
  TuiAltScreen,
16
+ type TuiInputListener,
17
+ type TuiInputListenerResult,
13
18
  truncateToWidth,
14
19
  } from "@earendil-works/pi-tui";
15
20
  import { sanitizeSingleLine } from "./text.js";
@@ -25,6 +30,7 @@ type BtwCustomFactory<T> = (
25
30
  type BtwFullscreenTui = TUI & {
26
31
  flash?: (message: string, durationMs?: number) => void;
27
32
  setLayoutRoot(component: Component | undefined): void;
33
+ addInputListenerBeforeViewport?(listener: TuiInputListener): () => void;
28
34
  };
29
35
 
30
36
  export interface BtwFullscreenLayoutComponent extends Component {
@@ -69,9 +75,10 @@ export async function runBtwFullscreen<T>(
69
75
  ));
70
76
  let liveEditorText = ctx.ui.getEditorText();
71
77
  let restoreEditor = false;
78
+ let host: BtwFullscreenHost<T> | undefined;
72
79
  const outcome = await ctx.ui.custom<FullscreenOutcome<T>>(
73
- (parent, theme, keybindings, done) =>
74
- new BtwFullscreenHost(
80
+ (parent, theme, keybindings, done) => {
81
+ host = new BtwFullscreenHost(
75
82
  parent,
76
83
  theme,
77
84
  keybindings,
@@ -87,7 +94,13 @@ export async function runBtwFullscreen<T>(
87
94
  done(value);
88
95
  },
89
96
  createTui,
90
- ),
97
+ );
98
+ return host;
99
+ },
100
+ {
101
+ overlay: true,
102
+ onHandle: (handle) => host?.setParentOverlay(handle),
103
+ },
91
104
  );
92
105
  if (restoreEditor) {
93
106
  try {
@@ -100,6 +113,59 @@ export async function runBtwFullscreen<T>(
100
113
  return outcome.value;
101
114
  }
102
115
 
116
+ type BtwInputListeners = {
117
+ beforeViewport: Set<TuiInputListener>;
118
+ regular: Set<TuiInputListener>;
119
+ };
120
+
121
+ const btwInputListeners = new WeakMap<BtwTuiAltScreen, BtwInputListeners>();
122
+
123
+ function dispatchBtwInput(listeners: BtwInputListeners, data: string): TuiInputListenerResult {
124
+ let current = data;
125
+ for (const group of [listeners.beforeViewport, listeners.regular]) {
126
+ for (const listener of group) {
127
+ const result = listener(current);
128
+ if (result?.consume) return result;
129
+ if (result?.data !== undefined) current = result.data;
130
+ }
131
+ }
132
+ return current === data ? undefined : { data: current };
133
+ }
134
+
135
+ class BtwTuiAltScreen extends TuiAltScreen {
136
+ override addInputListener(listener: TuiInputListener): () => void {
137
+ let listeners = btwInputListeners.get(this);
138
+ if (!listeners) {
139
+ const registeredListeners: BtwInputListeners = {
140
+ beforeViewport: new Set(),
141
+ regular: new Set(),
142
+ };
143
+ btwInputListeners.set(this, registeredListeners);
144
+ super.addInputListener((data) => dispatchBtwInput(registeredListeners, data));
145
+ listeners = registeredListeners;
146
+ }
147
+ listeners.regular.add(listener);
148
+ return () => listeners.regular.delete(listener);
149
+ }
150
+
151
+ addInputListenerBeforeViewport(listener: TuiInputListener): () => void {
152
+ const listeners = btwInputListeners.get(this);
153
+ if (!listeners) return super.addInputListener(listener);
154
+ listeners.beforeViewport.add(listener);
155
+ return () => listeners.beforeViewport.delete(listener);
156
+ }
157
+
158
+ override removeInputListener(listener: TuiInputListener): void {
159
+ const listeners = btwInputListeners.get(this);
160
+ if (!listeners) {
161
+ super.removeInputListener(listener);
162
+ return;
163
+ }
164
+ listeners.beforeViewport.delete(listener);
165
+ listeners.regular.delete(listener);
166
+ }
167
+ }
168
+
103
169
  function createBtwFullscreenTui(
104
170
  parent: TUI,
105
171
  theme: Theme,
@@ -108,7 +174,7 @@ function createBtwFullscreenTui(
108
174
  ): BtwFullscreenTui {
109
175
  const styleSearchMatch = (text: string) =>
110
176
  theme.bg("searchMatchBg", theme.fg("searchMatchText", text));
111
- return new TuiAltScreen(parent.terminal, parent.getShowHardwareCursor(), undefined, {
177
+ return new BtwTuiAltScreen(parent.terminal, parent.getShowHardwareCursor(), undefined, {
112
178
  mouse: true,
113
179
  searchMatchStyle: (text) => theme.underline(styleSearchMatch(text)),
114
180
  searchCurrentMatchStyle: (text) => theme.bold(theme.inverse(styleSearchMatch(text))),
@@ -139,10 +205,18 @@ function openUrlInBrowser(target: string): void {
139
205
 
140
206
  class BtwFullscreenHost<T> implements Component {
141
207
  private fullscreen: BtwFullscreenTui | undefined;
208
+ private parentOverlay: OverlayHandle | undefined;
142
209
  private cancelActiveCustom: (() => void) | undefined;
210
+ private hardCancelActiveCustom: (() => void) | undefined;
211
+ private removeHardCancelListener: (() => void) | undefined;
143
212
  private started = false;
144
213
  private disposed = false;
145
214
  private finished = false;
215
+ private parentStopped = false;
216
+ private parentRestarted = false;
217
+ private fullscreenCreated = false;
218
+ private fullscreenStopped = false;
219
+ private cleanupError: unknown;
146
220
 
147
221
  constructor(
148
222
  private readonly parent: TUI,
@@ -156,6 +230,10 @@ class BtwFullscreenHost<T> implements Component {
156
230
  queueMicrotask(() => void this.start());
157
231
  }
158
232
 
233
+ setParentOverlay(overlay: OverlayHandle): void {
234
+ this.parentOverlay = overlay;
235
+ }
236
+
159
237
  render(width: number): string[] {
160
238
  return [truncateToWidth(this.theme.fg("muted", "Opening btw side thread…"), width)];
161
239
  }
@@ -172,45 +250,69 @@ class BtwFullscreenHost<T> implements Component {
172
250
  if (this.started || this.finished) return;
173
251
  this.started = true;
174
252
  let outcome: FullscreenOutcome<T>;
175
- let parentStopped = false;
176
- let fullscreenCreated = false;
177
253
  try {
178
254
  if (this.disposed) throw new FullscreenUiDisposedError();
179
255
  this.parent.stop({ preserveScreen: true });
180
- parentStopped = true;
256
+ this.parentStopped = true;
181
257
  if (this.disposed) throw new FullscreenUiDisposedError();
182
258
  this.fullscreen = this.createTui(this.parent, this.theme);
183
- fullscreenCreated = true;
259
+ this.fullscreenCreated = true;
184
260
  this.fullscreen.start();
261
+ // Waiting for the custom promise would leave follow-up keys bound to the side TUI.
262
+ const addHardCancelListener =
263
+ this.fullscreen.addInputListenerBeforeViewport?.bind(this.fullscreen) ??
264
+ this.fullscreen.addInputListener.bind(this.fullscreen);
265
+ this.removeHardCancelListener = addHardCancelListener((data) => {
266
+ if (isKeyRelease(data) || !matchesKey(data, Key.ctrl("c"))) return undefined;
267
+ try {
268
+ this.hardCancelActiveCustom?.();
269
+ } finally {
270
+ this.restoreParent();
271
+ }
272
+ return { consume: true };
273
+ });
185
274
  outcome = { kind: "completed", value: await this.run(this.createContext()) };
186
275
  } catch (error) {
187
276
  outcome = { kind: "failed", error };
188
277
  }
189
278
 
190
- let cleanupError: unknown;
191
279
  try {
192
280
  this.cancelActiveCustom?.();
193
281
  } catch (error) {
194
- cleanupError = error;
282
+ this.cleanupError ??= error;
195
283
  }
196
- if (fullscreenCreated) {
284
+ this.restoreParent();
285
+ if (this.cleanupError !== undefined) outcome = { kind: "failed", error: this.cleanupError };
286
+ this.finished = true;
287
+ this.done(outcome);
288
+ }
289
+
290
+ private restoreParent(): void {
291
+ this.removeHardCancelListener?.();
292
+ this.removeHardCancelListener = undefined;
293
+ if (this.fullscreenCreated && !this.fullscreenStopped) {
294
+ this.fullscreenStopped = true;
197
295
  try {
198
296
  this.fullscreen?.stop({ preserveScreen: true });
199
297
  } catch (error) {
200
- cleanupError ??= error;
298
+ this.cleanupError ??= error;
201
299
  }
202
300
  }
203
- if (parentStopped) {
204
- try {
205
- this.parent.start();
206
- this.parent.renderNow(false);
207
- } catch (error) {
208
- cleanupError ??= error;
209
- }
301
+ if (!this.parentStopped || this.parentRestarted) return;
302
+ const parentOverlay = this.parentOverlay;
303
+ this.parentOverlay = undefined;
304
+ try {
305
+ parentOverlay?.setHidden(true);
306
+ } catch (error) {
307
+ this.cleanupError ??= error;
308
+ }
309
+ try {
310
+ this.parent.start();
311
+ this.parentRestarted = true;
312
+ this.parent.renderNow(false);
313
+ } catch (error) {
314
+ this.cleanupError ??= error;
210
315
  }
211
- if (cleanupError !== undefined) outcome = { kind: "failed", error: cleanupError };
212
- this.finished = true;
213
- this.done(outcome);
214
316
  }
215
317
 
216
318
  private createContext(): ExtensionCommandContext {
@@ -296,6 +398,7 @@ class BtwFullscreenHost<T> implements Component {
296
398
  if (promiseSettled || !hasPendingValue) return;
297
399
  promiseSettled = true;
298
400
  this.cancelActiveCustom = undefined;
401
+ this.hardCancelActiveCustom = undefined;
299
402
  if (!factorySettled) {
300
403
  resolve(pendingValue as Value);
301
404
  return;
@@ -319,6 +422,7 @@ class BtwFullscreenHost<T> implements Component {
319
422
  closed = true;
320
423
  promiseSettled = true;
321
424
  this.cancelActiveCustom = undefined;
425
+ this.hardCancelActiveCustom = undefined;
322
426
  try {
323
427
  unmount();
324
428
  reject(error);
@@ -331,6 +435,16 @@ class BtwFullscreenHost<T> implements Component {
331
435
  disposeComponent();
332
436
  if (!promiseSettled) fail(new FullscreenUiDisposedError());
333
437
  };
438
+ this.hardCancelActiveCustom = () => {
439
+ if (promiseSettled) return;
440
+ try {
441
+ component?.handleInput?.("\u0003");
442
+ } catch (error) {
443
+ fail(error);
444
+ return;
445
+ }
446
+ this.cancelActiveCustom?.();
447
+ };
334
448
 
335
449
  let created: ReturnType<BtwCustomFactory<Value>>;
336
450
  try {
@@ -1,6 +1,4 @@
1
- # @herbertgao/pi-copy-response
2
-
3
- > HerbertGao-maintained fork of [@tifan/pi-copy-response](https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-copy-response), distributed under MIT with the original attribution preserved.
1
+ # @tifan/pi-copy-response
4
2
 
5
3
  Pick one assistant response from the current pi session, preview it, then copy it to the system clipboard.
6
4
 
@@ -11,7 +9,7 @@ Use this when pi's built-in `/copy` is not enough. `/copy` copies only the last
11
9
  ## Install
12
10
 
13
11
  ```bash
14
- pi install npm:@herbertgao/pi-copy-response
12
+ pi install npm:@tifan/pi-copy-response
15
13
  ```
16
14
 
17
15
  ## Commands
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@herbertgao/pi-copy-response",
2
+ "name": "@tifan/pi-copy-response",
3
3
  "version": "0.2.6",
4
4
  "description": "Pick and copy an assistant response from the current pi session.",
5
5
  "keywords": [
@@ -8,22 +8,18 @@
8
8
  "pi-extension",
9
9
  "pi-package"
10
10
  ],
11
- "homepage": "https://github.com/HerbertGao/pi-extensions/tree/master/packages/pi-copy-response#readme",
12
- "bugs": "https://github.com/HerbertGao/pi-extensions/issues",
11
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-copy-response#readme",
12
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
13
13
  "license": "MIT",
14
- "author": "Herbert Gao",
15
- "contributors": [
16
- "Tifan Dwi Avianto <hi@tifan.me>"
17
- ],
14
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
18
15
  "repository": {
19
16
  "type": "git",
20
- "url": "git+https://github.com/HerbertGao/pi-extensions.git",
17
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
21
18
  "directory": "packages/pi-copy-response"
22
19
  },
23
20
  "files": [
24
21
  "src/**/*.ts",
25
22
  "README.md",
26
- "CHANGELOG.md",
27
23
  "LICENSE"
28
24
  ],
29
25
  "type": "module",
@@ -38,11 +34,5 @@
38
34
  "extensions": [
39
35
  "./src/index.ts"
40
36
  ]
41
- },
42
- "x-upstream": {
43
- "package": "@tifan/pi-copy-response",
44
- "version": "0.2.6",
45
- "repository": "https://github.com/tifandotme/pi-extensions",
46
- "commit": "460d580"
47
37
  }
48
38
  }
@@ -1,13 +1,11 @@
1
- # @herbertgao/pi-handoff
2
-
3
- > HerbertGao-maintained fork of [@tifan/pi-handoff](https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-handoff), distributed under MIT with the original attribution preserved.
1
+ # @tifan/pi-handoff
4
2
 
5
3
  Start a fresh pi session from a handoff document, and query past sessions for context, decisions, or code changes.
6
4
 
7
5
  ## Install
8
6
 
9
7
  ```bash
10
- pi install npm:@herbertgao/pi-handoff
8
+ pi install npm:@tifan/pi-handoff
11
9
  ```
12
10
 
13
11
  ## Requirements
@@ -42,8 +40,8 @@ Pi provides session loading and compaction-aware context reconstruction, but not
42
40
 
43
41
  ## Release notes
44
42
 
45
- See [CHANGELOG.md](CHANGELOG.md).
43
+ See [CHANGELOG.md](https://github.com/tifandotme/pi-extensions/blob/master/packages/pi-handoff/CHANGELOG.md)
46
44
 
47
45
  ## License
48
46
 
49
- [MIT](LICENSE)
47
+ [MIT](https://github.com/tifandotme/pi-extensions/blob/master/LICENSE)
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@tifan/pi-handoff",
3
+ "version": "2.0.1",
4
+ "description": "Transfer pi session context to a new session and query past sessions.",
5
+ "keywords": [
6
+ "handoff",
7
+ "pi",
8
+ "pi-extension",
9
+ "pi-package",
10
+ "session"
11
+ ],
12
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-handoff#readme",
13
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
14
+ "license": "MIT",
15
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
19
+ "directory": "packages/pi-handoff"
20
+ },
21
+ "files": [
22
+ "src/**/*.ts",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "type": "module",
27
+ "publishConfig": {
28
+ "access": "public",
29
+ "provenance": true
30
+ },
31
+ "dependencies": {
32
+ "@tifan/pi-rename": "^0.5.0"
33
+ },
34
+ "engines": {
35
+ "node": ">=20"
36
+ },
37
+ "pi": {
38
+ "extensions": [
39
+ "./src/index.ts",
40
+ "./src/session-query.ts"
41
+ ]
42
+ }
43
+ }
@@ -1,6 +1,6 @@
1
1
  import type { AgentMessage } from "@earendil-works/pi-agent-core"
2
2
  import type { Message } from "@earendil-works/pi-ai/compat"
3
- import { sanitizeRenameText } from "@herbertgao/pi-rename/naming"
3
+ import { sanitizeRenameText } from "@tifan/pi-rename/naming"
4
4
  import type {
5
5
  ExtensionAPI,
6
6
  ExtensionCommandContext,
@@ -1,6 +1,4 @@
1
- # @herbertgao/pi-inline-skills
2
-
3
- > HerbertGao-maintained fork of [@tifan/pi-inline-skills](https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-inline-skills), distributed under MIT with the original attribution preserved.
1
+ # @tifan/pi-inline-skills
4
2
 
5
3
  Load skills from inside a pi prompt.
6
4
 
@@ -11,7 +9,7 @@ Type `/` and part of a skill name, pick a skill, then keep writing. On submit, t
11
9
  ## Install
12
10
 
13
11
  ```bash
14
- pi install npm:@herbertgao/pi-inline-skills
12
+ pi install npm:@tifan/pi-inline-skills
15
13
  ```
16
14
 
17
15
  ## Usage
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@herbertgao/pi-inline-skills",
2
+ "name": "@tifan/pi-inline-skills",
3
3
  "version": "1.0.5",
4
4
  "description": "Inline /skill autocomplete in the pi editor.",
5
5
  "keywords": [
@@ -9,22 +9,18 @@
9
9
  "pi-package",
10
10
  "skills"
11
11
  ],
12
- "homepage": "https://github.com/HerbertGao/pi-extensions/tree/master/packages/pi-inline-skills#readme",
13
- "bugs": "https://github.com/HerbertGao/pi-extensions/issues",
12
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-inline-skills#readme",
13
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
14
14
  "license": "MIT",
15
- "author": "Herbert Gao",
16
- "contributors": [
17
- "Tifan Dwi Avianto <hi@tifan.me>"
18
- ],
15
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
19
16
  "repository": {
20
17
  "type": "git",
21
- "url": "git+https://github.com/HerbertGao/pi-extensions.git",
18
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
22
19
  "directory": "packages/pi-inline-skills"
23
20
  },
24
21
  "files": [
25
22
  "src/**/*.ts",
26
23
  "README.md",
27
- "CHANGELOG.md",
28
24
  "LICENSE"
29
25
  ],
30
26
  "type": "module",
@@ -39,11 +35,5 @@
39
35
  "extensions": [
40
36
  "./src/index.ts"
41
37
  ]
42
- },
43
- "x-upstream": {
44
- "package": "@tifan/pi-inline-skills",
45
- "version": "1.0.5",
46
- "repository": "https://github.com/tifandotme/pi-extensions",
47
- "commit": "460d580"
48
38
  }
49
39
  }
@@ -1,10 +1,8 @@
1
- # @herbertgao/pi-mermaid-open
2
-
3
- > HerbertGao-maintained fork of [@tifan/pi-mermaid-open](https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-mermaid-open), distributed under MIT with the original attribution preserved.
1
+ # @tifan/pi-mermaid-open
4
2
 
5
3
  Find Mermaid diagrams that Pi left unrendered and show one in a terminal image viewer.
6
4
 
7
- <https://github.com/user-attachments/assets/d0c1d46f-0cba-4bf3-a44e-9aa0f4b8e3fd>
5
+ https://github.com/user-attachments/assets/d0c1d46f-0cba-4bf3-a44e-9aa0f4b8e3fd
8
6
 
9
7
  ## How it works
10
8
 
@@ -19,7 +17,7 @@ Find Mermaid diagrams that Pi left unrendered and show one in a terminal image v
19
17
  ## Install
20
18
 
21
19
  ```bash
22
- pi install npm:@herbertgao/pi-mermaid-open
20
+ pi install npm:@tifan/pi-mermaid-open
23
21
  ```
24
22
 
25
23
  ## Requirements
@@ -35,8 +33,8 @@ pi install npm:@herbertgao/pi-mermaid-open
35
33
 
36
34
  ## Release notes
37
35
 
38
- See [CHANGELOG.md](CHANGELOG.md).
36
+ See [CHANGELOG.md](https://github.com/tifandotme/pi-extensions/blob/master/packages/pi-mermaid-open/CHANGELOG.md)
39
37
 
40
38
  ## License
41
39
 
42
- [MIT](LICENSE)
40
+ [MIT](https://github.com/tifandotme/pi-extensions/blob/master/LICENSE)
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@herbertgao/pi-mermaid-open",
2
+ "name": "@tifan/pi-mermaid-open",
3
3
  "version": "0.2.0",
4
4
  "description": "Find skipped Mermaid diagrams and show them in a terminal image viewer.",
5
5
  "keywords": [
@@ -9,23 +9,19 @@
9
9
  "pi-extension",
10
10
  "pi-package"
11
11
  ],
12
- "homepage": "https://github.com/HerbertGao/pi-extensions/tree/master/packages/pi-mermaid-open#readme",
13
- "bugs": "https://github.com/HerbertGao/pi-extensions/issues",
12
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-mermaid-open#readme",
13
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
14
14
  "license": "MIT",
15
- "author": "Herbert Gao",
16
- "contributors": [
17
- "Tifan Dwi Avianto <hi@tifan.me>"
18
- ],
15
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
19
16
  "repository": {
20
17
  "type": "git",
21
- "url": "git+https://github.com/HerbertGao/pi-extensions.git",
18
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
22
19
  "directory": "packages/pi-mermaid-open"
23
20
  },
24
21
  "files": [
25
22
  "src/**/*.ts",
26
23
  "herdr-plugin/**/*",
27
24
  "README.md",
28
- "CHANGELOG.md",
29
25
  "LICENSE"
30
26
  ],
31
27
  "type": "module",
@@ -33,14 +29,10 @@
33
29
  "access": "public",
34
30
  "provenance": true
35
31
  },
36
- "scripts": {
37
- "test": "node --experimental-strip-types --test tests/**/*.test.ts"
38
- },
39
32
  "dependencies": {
40
33
  "grok-mermaid": "0.2.2"
41
34
  },
42
35
  "peerDependencies": {
43
- "@earendil-works/pi-coding-agent": ">=0.84.0",
44
36
  "@earendil-works/pi-tui": ">=0.84.0"
45
37
  },
46
38
  "engines": {
@@ -50,11 +42,5 @@
50
42
  "extensions": [
51
43
  "./src/index.ts"
52
44
  ]
53
- },
54
- "x-upstream": {
55
- "package": "@tifan/pi-mermaid-open",
56
- "version": "0.2.0",
57
- "repository": "https://github.com/tifandotme/pi-extensions",
58
- "commit": "b39d1e6359c78718cbf8fe5c74c82b89065e9a0b"
59
45
  }
60
46
  }
@@ -1,13 +1,11 @@
1
- # @herbertgao/pi-preferred-thinking
2
-
3
- > HerbertGao-maintained fork of [@tifan/pi-preferred-thinking](https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-preferred-thinking), distributed under MIT with the original attribution preserved.
1
+ # @tifan/pi-preferred-thinking
4
2
 
5
3
  Set and apply per-model thinking levels from Pi's native `enabledModels` setting.
6
4
 
7
5
  ## Install
8
6
 
9
7
  ```bash
10
- pi install npm:@herbertgao/pi-preferred-thinking
8
+ pi install npm:@tifan/pi-preferred-thinking
11
9
  ```
12
10
 
13
11
  This package requires Pi 0.84.2 or newer.
@@ -49,8 +47,8 @@ read. Existing users must move preferences to `enabledModels` or set them with
49
47
 
50
48
  ## Release notes
51
49
 
52
- See [CHANGELOG.md](CHANGELOG.md).
50
+ See [CHANGELOG.md](https://github.com/tifandotme/pi-extensions/blob/master/packages/pi-preferred-thinking/CHANGELOG.md)
53
51
 
54
52
  ## License
55
53
 
56
- [MIT](LICENSE)
54
+ [MIT](https://github.com/tifandotme/pi-extensions/blob/master/LICENSE)
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@herbertgao/pi-preferred-thinking",
3
- "version": "0.4.0",
2
+ "name": "@tifan/pi-preferred-thinking",
3
+ "version": "1.0.0",
4
4
  "description": "Set and apply per-model thinking levels from Pi's native settings.",
5
5
  "keywords": [
6
6
  "pi",
@@ -9,22 +9,18 @@
9
9
  "settings",
10
10
  "thinking"
11
11
  ],
12
- "homepage": "https://github.com/HerbertGao/pi-extensions/tree/master/packages/pi-preferred-thinking#readme",
13
- "bugs": "https://github.com/HerbertGao/pi-extensions/issues",
12
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-preferred-thinking#readme",
13
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
14
14
  "license": "MIT",
15
- "author": "Herbert Gao",
16
- "contributors": [
17
- "Tifan Dwi Avianto <hi@tifan.me>"
18
- ],
15
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
19
16
  "repository": {
20
17
  "type": "git",
21
- "url": "git+https://github.com/HerbertGao/pi-extensions.git",
18
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
22
19
  "directory": "packages/pi-preferred-thinking"
23
20
  },
24
21
  "files": [
25
22
  "src/**/*.ts",
26
23
  "README.md",
27
- "CHANGELOG.md",
28
24
  "LICENSE"
29
25
  ],
30
26
  "type": "module",
@@ -42,11 +38,5 @@
42
38
  "extensions": [
43
39
  "./src/index.ts"
44
40
  ]
45
- },
46
- "x-upstream": {
47
- "package": "@tifan/pi-preferred-thinking",
48
- "version": "1.0.0",
49
- "repository": "https://github.com/tifandotme/pi-extensions",
50
- "commit": "b39d1e6359c78718cbf8fe5c74c82b89065e9a0b"
51
41
  }
52
42
  }