@herbertgao/pi-extensions 2026.8.3 → 2026.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -4
- package/examples/pi-footer.json +275 -0
- package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +10 -2
- package/node_modules/@herbertgao/pi-cc-extensions/README.md +10 -2
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/config.ts +24 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/panel.ts +91 -1
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +7 -3
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/index.ts +7 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +21 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +4 -5
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/markdown-enhance.ts +5 -8
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/grouping.ts +22 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/result.ts +2 -4
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +3 -3
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
- package/node_modules/@herbertgao/pi-subagents/package.json +8 -4
- package/node_modules/@herbertgao/pi-subagents/src/agent-color.ts +72 -67
- package/node_modules/@herbertgao/pi-subagents/src/agent-file-toggle.ts +255 -0
- package/node_modules/@herbertgao/pi-subagents/src/agent-manager.ts +191 -3
- package/node_modules/@herbertgao/pi-subagents/src/agent-runner.ts +15 -2
- package/node_modules/@herbertgao/pi-subagents/src/index.ts +289 -113
- package/node_modules/@herbertgao/pi-subagents/src/output-file.ts +24 -1
- package/node_modules/@herbertgao/pi-subagents/src/ui/agent-widget.ts +24 -2
- package/node_modules/@herbertgao/pi-subagents/src/ui/schedule-menu.ts +9 -8
- package/node_modules/@herbertgao/pi-subagents/src/ui/select-item.ts +48 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/docs/keyboard.md +7 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +2 -2
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/build-questionnaire.ts +7 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/key-router.ts +16 -5
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/questionnaire-session.ts +4 -2
- package/node_modules/@narumitw/pi-btw/README.md +8 -7
- package/node_modules/@narumitw/pi-btw/package.json +2 -2
- package/node_modules/@narumitw/pi-btw/src/menu.ts +1 -0
- package/node_modules/pi-footer/CHANGELOG.md +145 -0
- package/node_modules/pi-footer/LICENSE +21 -0
- package/node_modules/pi-footer/README.md +354 -0
- package/node_modules/pi-footer/package.json +68 -0
- package/node_modules/pi-footer/src/cache.ts +106 -0
- package/node_modules/pi-footer/src/colors.ts +237 -0
- package/node_modules/pi-footer/src/config.ts +202 -0
- package/node_modules/pi-footer/src/event-widgets.ts +41 -0
- package/node_modules/pi-footer/src/extension-statuses.ts +102 -0
- package/node_modules/pi-footer/src/git.ts +135 -0
- package/node_modules/pi-footer/src/index.ts +268 -0
- package/node_modules/pi-footer/src/metrics.ts +141 -0
- package/node_modules/pi-footer/src/presets.ts +383 -0
- package/node_modules/pi-footer/src/render.ts +114 -0
- package/node_modules/pi-footer/src/separators.ts +52 -0
- package/node_modules/pi-footer/src/types.ts +122 -0
- package/node_modules/pi-footer/src/ui/color-level-confirm.ts +22 -0
- package/node_modules/pi-footer/src/ui/color-options.ts +195 -0
- package/node_modules/pi-footer/src/ui/config-lifecycle.ts +61 -0
- package/node_modules/pi-footer/src/ui/edit-colors.ts +13 -0
- package/node_modules/pi-footer/src/ui/events.ts +35 -0
- package/node_modules/pi-footer/src/ui/extension-status-picker.ts +60 -0
- package/node_modules/pi-footer/src/ui/extension-statuses.ts +73 -0
- package/node_modules/pi-footer/src/ui/fields.ts +252 -0
- package/node_modules/pi-footer/src/ui/global-menu.ts +126 -0
- package/node_modules/pi-footer/src/ui/helpers.ts +44 -0
- package/node_modules/pi-footer/src/ui/layout.ts +17 -0
- package/node_modules/pi-footer/src/ui/line-list.ts +19 -0
- package/node_modules/pi-footer/src/ui/model.ts +64 -0
- package/node_modules/pi-footer/src/ui/navigation.ts +29 -0
- package/node_modules/pi-footer/src/ui/option-edit.ts +93 -0
- package/node_modules/pi-footer/src/ui/overlay-render.ts +103 -0
- package/node_modules/pi-footer/src/ui/screen-context.ts +18 -0
- package/node_modules/pi-footer/src/ui/screen-controller.ts +27 -0
- package/node_modules/pi-footer/src/ui/screen-render.ts +32 -0
- package/node_modules/pi-footer/src/ui/screen-state.ts +20 -0
- package/node_modules/pi-footer/src/ui/screen.ts +243 -0
- package/node_modules/pi-footer/src/ui/screens/add-widget.ts +92 -0
- package/node_modules/pi-footer/src/ui/screens/confirm-exit.ts +52 -0
- package/node_modules/pi-footer/src/ui/screens/controller.ts +12 -0
- package/node_modules/pi-footer/src/ui/screens/edit-colors.ts +68 -0
- package/node_modules/pi-footer/src/ui/screens/edit-widget.ts +115 -0
- package/node_modules/pi-footer/src/ui/screens/extension-status-row.ts +61 -0
- package/node_modules/pi-footer/src/ui/screens/global.ts +75 -0
- package/node_modules/pi-footer/src/ui/screens/line-list.ts +108 -0
- package/node_modules/pi-footer/src/ui/screens/main.ts +99 -0
- package/node_modules/pi-footer/src/ui/screens/terminal.ts +121 -0
- package/node_modules/pi-footer/src/ui/screens/widget-list.ts +154 -0
- package/node_modules/pi-footer/src/ui/terminal-menu.ts +32 -0
- package/node_modules/pi-footer/src/ui/theme.ts +48 -0
- package/node_modules/pi-footer/src/ui/title-bar.ts +100 -0
- package/node_modules/pi-footer/src/ui/widget-actions.ts +76 -0
- package/node_modules/pi-footer/src/ui.ts +66 -0
- package/node_modules/pi-footer/src/widgets/context.ts +28 -0
- package/node_modules/pi-footer/src/widgets/core/active-tools.ts +17 -0
- package/node_modules/pi-footer/src/widgets/core/context-window.ts +24 -0
- package/node_modules/pi-footer/src/widgets/core/cwd-basename.ts +19 -0
- package/node_modules/pi-footer/src/widgets/core/cwd.ts +108 -0
- package/node_modules/pi-footer/src/widgets/core/event.ts +34 -0
- package/node_modules/pi-footer/src/widgets/core/external-status.ts +102 -0
- package/node_modules/pi-footer/src/widgets/core/model-provider.ts +20 -0
- package/node_modules/pi-footer/src/widgets/core/model.ts +35 -0
- package/node_modules/pi-footer/src/widgets/core/provider.ts +17 -0
- package/node_modules/pi-footer/src/widgets/core/session-name.ts +17 -0
- package/node_modules/pi-footer/src/widgets/core/text-verbosity.ts +17 -0
- package/node_modules/pi-footer/src/widgets/core/thinking-level.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/ahead-behind.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/branch.ts +81 -0
- package/node_modules/pi-footer/src/widgets/git/clean.ts +19 -0
- package/node_modules/pi-footer/src/widgets/git/deletions.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/diff.ts +38 -0
- package/node_modules/pi-footer/src/widgets/git/insertions.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/remote.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/root.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/sha.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/staged.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/status.ts +19 -0
- package/node_modules/pi-footer/src/widgets/git/unstaged.ts +17 -0
- package/node_modules/pi-footer/src/widgets/git/untracked.ts +17 -0
- package/node_modules/pi-footer/src/widgets/instance.ts +118 -0
- package/node_modules/pi-footer/src/widgets/layout/custom-text.ts +18 -0
- package/node_modules/pi-footer/src/widgets/layout/flex-separator.ts +32 -0
- package/node_modules/pi-footer/src/widgets/layout/separator.ts +57 -0
- package/node_modules/pi-footer/src/widgets/layout/spacer.ts +31 -0
- package/node_modules/pi-footer/src/widgets/options.ts +122 -0
- package/node_modules/pi-footer/src/widgets/project/runtime.ts +361 -0
- package/node_modules/pi-footer/src/widgets/registry.ts +223 -0
- package/node_modules/pi-footer/src/widgets/session/assistant-messages.ts +17 -0
- package/node_modules/pi-footer/src/widgets/session/compactions.ts +17 -0
- package/node_modules/pi-footer/src/widgets/session/elapsed.ts +18 -0
- package/node_modules/pi-footer/src/widgets/session/last-activity.ts +18 -0
- package/node_modules/pi-footer/src/widgets/session/messages.ts +19 -0
- package/node_modules/pi-footer/src/widgets/session/session-id.ts +17 -0
- package/node_modules/pi-footer/src/widgets/session/session-start.ts +18 -0
- package/node_modules/pi-footer/src/widgets/session/tool-results.ts +17 -0
- package/node_modules/pi-footer/src/widgets/session/total-messages.ts +19 -0
- package/node_modules/pi-footer/src/widgets/session/total-time.ts +18 -0
- package/node_modules/pi-footer/src/widgets/session/user-messages.ts +17 -0
- package/node_modules/pi-footer/src/widgets/store.ts +26 -0
- package/node_modules/pi-footer/src/widgets/tokens/cache-hit-rate.ts +55 -0
- package/node_modules/pi-footer/src/widgets/tokens/cache-read.ts +18 -0
- package/node_modules/pi-footer/src/widgets/tokens/cache-write.ts +18 -0
- package/node_modules/pi-footer/src/widgets/tokens/context-bar.ts +108 -0
- package/node_modules/pi-footer/src/widgets/tokens/context-length.ts +26 -0
- package/node_modules/pi-footer/src/widgets/tokens/context-remaining.ts +29 -0
- package/node_modules/pi-footer/src/widgets/tokens/context.ts +29 -0
- package/node_modules/pi-footer/src/widgets/tokens/cost.ts +51 -0
- package/node_modules/pi-footer/src/widgets/tokens/input-speed.ts +25 -0
- package/node_modules/pi-footer/src/widgets/tokens/input-tokens.ts +18 -0
- package/node_modules/pi-footer/src/widgets/tokens/output-speed.ts +25 -0
- package/node_modules/pi-footer/src/widgets/tokens/output-tokens.ts +18 -0
- package/node_modules/pi-footer/src/widgets/tokens/tokens.ts +20 -0
- package/node_modules/pi-footer/src/widgets/tokens/total-speed.ts +25 -0
- package/node_modules/pi-footer/src/widgets/tokens/total-tokens.ts +18 -0
- package/node_modules/pi-footer/src/widgets/types.ts +181 -0
- package/node_modules/pi-footer/src/widgets/utils/colors.ts +11 -0
- package/node_modules/pi-footer/src/widgets/utils/context.ts +112 -0
- package/node_modules/pi-footer/src/widgets/utils/session.ts +19 -0
- package/node_modules/pi-footer/src/widgets/utils/token-format.ts +78 -0
- package/node_modules/pi-lens/CHANGELOG.md +2440 -954
- package/node_modules/pi-lens/README.md +13 -0
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +73 -18
- package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +21 -4
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +68 -16
- package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -1
- package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +37 -10
- package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +63 -0
- package/node_modules/pi-lens/dist/clients/atomic-write.js +114 -14
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +193 -23
- package/node_modules/pi-lens/dist/clients/biome-client.js +29 -25
- package/node_modules/pi-lens/dist/clients/bootstrap.js +11 -2
- package/node_modules/pi-lens/dist/clients/bounded-cache.js +34 -0
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +192 -0
- package/node_modules/pi-lens/dist/clients/bus-publish.js +10 -3
- package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +47 -5
- package/node_modules/pi-lens/dist/clients/cache-manager.js +97 -9
- package/node_modules/pi-lens/dist/clients/cache-observability.js +301 -14
- package/node_modules/pi-lens/dist/clients/call-graph.js +449 -117
- package/node_modules/pi-lens/dist/clients/child-unref.js +85 -0
- package/node_modules/pi-lens/dist/clients/codebase-model.js +52 -23
- package/node_modules/pi-lens/dist/clients/collateral-test-role.js +40 -0
- package/node_modules/pi-lens/dist/clients/complexity-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/console-guard-install.js +14 -0
- package/node_modules/pi-lens/dist/clients/cooperative-budget.js +42 -0
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/debug-handles.js +206 -0
- package/node_modules/pi-lens/dist/clients/debug-heap.js +167 -0
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +153 -0
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +347 -75
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +61 -11
- package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +10 -3
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +63 -20
- package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +23 -7
- package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +8 -18
- package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +8 -5
- package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +35 -0
- package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +17 -8
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +1085 -681
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +14 -0
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +11 -1
- package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +50 -0
- package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +135 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +23 -5
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +5 -9
- package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +3 -2
- package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +2 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +154 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +3 -2
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +5 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +14 -6
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +4 -9
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +9 -5
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +4 -8
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +2 -3
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +2 -3
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +2 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +2 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +163 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +37 -5
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +3 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +13 -7
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +3 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +277 -26
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +22 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +5 -4
- package/node_modules/pi-lens/dist/clients/disposition-publish.js +10 -3
- package/node_modules/pi-lens/dist/clients/durable-store.js +97 -0
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +94 -3
- package/node_modules/pi-lens/dist/clients/extension-log.js +139 -0
- package/node_modules/pi-lens/dist/clients/extension-mode.js +73 -0
- package/node_modules/pi-lens/dist/clients/file-kinds.js +57 -0
- package/node_modules/pi-lens/dist/clients/file-role.js +18 -3
- package/node_modules/pi-lens/dist/clients/file-utils.js +56 -34
- package/node_modules/pi-lens/dist/clients/format-events-publish.js +16 -3
- package/node_modules/pi-lens/dist/clients/format-service.js +24 -8
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +8 -0
- package/node_modules/pi-lens/dist/clients/formatters.js +358 -61
- package/node_modules/pi-lens/dist/clients/generated-artifacts.js +148 -15
- package/node_modules/pi-lens/dist/clients/git-guard.js +681 -11
- package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +4 -0
- package/node_modules/pi-lens/dist/clients/go-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +8 -0
- package/node_modules/pi-lens/dist/clients/grammar-source.js +12 -4
- package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +21 -3
- package/node_modules/pi-lens/dist/clients/host-ports.js +31 -0
- package/node_modules/pi-lens/dist/clients/installer/index.js +390 -99
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +142 -172
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +31 -54
- package/node_modules/pi-lens/dist/clients/knip-client.js +15 -36
- package/node_modules/pi-lens/dist/clients/language-policy.js +14 -2
- package/node_modules/pi-lens/dist/clients/language-profile.js +13 -7
- package/node_modules/pi-lens/dist/clients/latency-logger.js +23 -1
- package/node_modules/pi-lens/dist/clients/lens-config.js +12 -1
- package/node_modules/pi-lens/dist/clients/lens-engine.js +86 -17
- package/node_modules/pi-lens/dist/clients/lens-events.js +27 -4
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +8 -0
- package/node_modules/pi-lens/dist/clients/lens-map.js +94 -19
- package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +30 -0
- package/node_modules/pi-lens/dist/clients/log-cleanup.js +2 -1
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +1 -1
- package/node_modules/pi-lens/dist/clients/lsp/client.js +493 -48
- package/node_modules/pi-lens/dist/clients/lsp/config.js +13 -2
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +86 -0
- package/node_modules/pi-lens/dist/clients/lsp/edits.js +1012 -121
- package/node_modules/pi-lens/dist/clients/lsp/index.js +1807 -780
- package/node_modules/pi-lens/dist/clients/lsp/launch.js +32 -26
- package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +1 -1
- package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +83 -0
- package/node_modules/pi-lens/dist/clients/lsp/server.js +196 -32
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +28 -4
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +8 -0
- package/node_modules/pi-lens/dist/clients/lsp-mutation.js +248 -0
- package/node_modules/pi-lens/dist/clients/mcp/analyze.js +123 -32
- package/node_modules/pi-lens/dist/clients/mcp/ipc.js +157 -24
- package/node_modules/pi-lens/dist/clients/mcp/session.js +216 -8
- package/node_modules/pi-lens/dist/clients/memory-sampler.js +115 -0
- package/node_modules/pi-lens/dist/clients/metrics-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/metrics-history.js +2 -1
- package/node_modules/pi-lens/dist/clients/module-report-lsp.js +5 -0
- package/node_modules/pi-lens/dist/clients/module-report.js +168 -3
- package/node_modules/pi-lens/dist/clients/ndjson-logger.js +319 -118
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +1 -1
- package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +120 -5
- package/node_modules/pi-lens/dist/clients/path-utils.js +110 -9
- package/node_modules/pi-lens/dist/clients/pipeline.js +47 -13
- package/node_modules/pi-lens/dist/clients/print-mode.js +21 -0
- package/node_modules/pi-lens/dist/clients/project-changes.js +40 -0
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +3 -2
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +8 -0
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +21 -1
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +86 -9
- package/node_modules/pi-lens/dist/clients/project-report.js +27 -13
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +175 -20
- package/node_modules/pi-lens/dist/clients/project-trust.js +181 -0
- package/node_modules/pi-lens/dist/clients/quiet-window.js +18 -4
- package/node_modules/pi-lens/dist/clients/read-bridge.js +147 -0
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +159 -1
- package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +150 -29
- package/node_modules/pi-lens/dist/clients/read-guard.js +185 -4
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +70 -84
- package/node_modules/pi-lens/dist/clients/review-graph/builder.js +1122 -221
- package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +2 -1
- package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +21 -10
- package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +46 -0
- package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +57 -6
- package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +51 -3
- package/node_modules/pi-lens/dist/clients/review-graph-logger.js +30 -1
- package/node_modules/pi-lens/dist/clients/ruff-client.js +27 -44
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +107 -73
- package/node_modules/pi-lens/dist/clients/runtime-context.js +36 -12
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +74 -6
- package/node_modules/pi-lens/dist/clients/runtime-session.js +405 -117
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +71 -48
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +218 -23
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +237 -64
- package/node_modules/pi-lens/dist/clients/rust-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +777 -62
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +2 -1
- package/node_modules/pi-lens/dist/clients/session-state-store.js +3 -2
- package/node_modules/pi-lens/dist/clients/sg-runner.js +284 -174
- package/node_modules/pi-lens/dist/clients/slow-fs.js +2 -1
- package/node_modules/pi-lens/dist/clients/smells-rollup.js +224 -0
- package/node_modules/pi-lens/dist/clients/source-filter.js +184 -20
- package/node_modules/pi-lens/dist/clients/source-walker.js +66 -10
- package/node_modules/pi-lens/dist/clients/startup-scan.js +15 -16
- package/node_modules/pi-lens/dist/clients/startup-timing.js +1 -1
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +38 -8
- package/node_modules/pi-lens/dist/clients/tool-event.js +35 -0
- package/node_modules/pi-lens/dist/clients/tool-policy.js +388 -39
- package/node_modules/pi-lens/dist/clients/tool-render.js +155 -0
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +6 -1
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +419 -50
- package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +21 -0
- package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +7 -1
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +7 -2
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +44 -7
- package/node_modules/pi-lens/dist/clients/user-notify.js +51 -0
- package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +57 -0
- package/node_modules/pi-lens/dist/clients/warm-attach.js +33 -13
- package/node_modules/pi-lens/dist/clients/widget-state.js +300 -43
- package/node_modules/pi-lens/dist/clients/word-index.js +391 -64
- package/node_modules/pi-lens/dist/clients/workspace-topology.js +89 -6
- package/node_modules/pi-lens/dist/index.js +49361 -36888
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +182 -29
- package/node_modules/pi-lens/dist/mcp/server.js +211 -44
- package/node_modules/pi-lens/dist/tools/ast-grep-search.js +93 -27
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +200 -36
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +153 -40
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +46 -3
- package/node_modules/pi-lens/dist/tools/module-report.js +9 -0
- package/node_modules/pi-lens/docs/agent-guide.md +2 -2
- package/node_modules/pi-lens/docs/agent-tools.md +21 -10
- package/node_modules/pi-lens/docs/analysisall.md +192 -0
- package/node_modules/pi-lens/docs/api-ports-inventory.md +165 -0
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +5 -2
- package/node_modules/pi-lens/docs/durable-store-audit-1202.md +32 -0
- package/node_modules/pi-lens/docs/environment-variables.md +44 -0
- package/node_modules/pi-lens/docs/fable.md +27 -0
- package/node_modules/pi-lens/docs/features.md +31 -2
- package/node_modules/pi-lens/docs/globalconfig.md +45 -1
- package/node_modules/pi-lens/docs/language-coverage.md +4 -3
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +2 -2
- package/node_modules/pi-lens/docs/mcp.md +37 -4
- package/node_modules/pi-lens/docs/servercapabilities.md +3 -3
- package/node_modules/pi-lens/docs/settings.md +12 -1
- package/node_modules/pi-lens/docs/tools.md +4 -1
- package/node_modules/pi-lens/docs/usage.md +18 -0
- package/node_modules/pi-lens/package.json +10 -10
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-bare-except-test.yml +49 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-bare-host-path-in-win32-branch-test.yml +87 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-nested-links-test.yml +11 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-raw-json-store-write-test.yml +17 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-win32-isabsolute-for-qualification-test.yml +16 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-bare-except.yml +3 -15
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-bare-host-path-in-win32-branch.yml +25 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-nested-links.yml +7 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-raw-json-store-write.yml +30 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-win32-isabsolute-for-qualification.yml +23 -0
- package/node_modules/pi-lens/rules/tree-sitter-queries/tsx/no-nested-links.yml +4 -6
- package/node_modules/pi-lens/rules/tree-sitter-queries/typescript/duplicate-function-arg.yml +2 -2
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +55 -2
- package/node_modules/pi-mcp-adapter/CHANGELOG.md +25 -0
- package/node_modules/pi-mcp-adapter/README.md +34 -3
- package/node_modules/pi-mcp-adapter/agent-plugin-loader.ts +1 -1
- package/node_modules/pi-mcp-adapter/commands.ts +15 -7
- package/node_modules/pi-mcp-adapter/direct-tools.ts +54 -7
- package/node_modules/pi-mcp-adapter/host-html-template.ts +0 -8
- package/node_modules/pi-mcp-adapter/index.ts +8 -3
- package/node_modules/pi-mcp-adapter/init.ts +29 -5
- package/node_modules/pi-mcp-adapter/lifecycle.ts +0 -4
- package/node_modules/pi-mcp-adapter/mcp-auth-flow.ts +1 -2
- package/node_modules/pi-mcp-adapter/mcp-auth.ts +60 -2
- package/node_modules/pi-mcp-adapter/mcp-panel.ts +45 -9
- package/node_modules/pi-mcp-adapter/mcp-script-worker.mjs +22 -20
- package/node_modules/pi-mcp-adapter/metadata-cache.ts +27 -4
- package/node_modules/pi-mcp-adapter/npx-resolver.ts +81 -26
- package/node_modules/pi-mcp-adapter/package.json +3 -3
- package/node_modules/pi-mcp-adapter/proxy-modes.ts +108 -26
- package/node_modules/pi-mcp-adapter/search-ranking.ts +86 -7
- package/node_modules/pi-mcp-adapter/server-manager.ts +36 -7
- package/node_modules/pi-mcp-adapter/session-recovery.ts +8 -2
- package/node_modules/pi-mcp-adapter/tool-approval.ts +48 -7
- package/node_modules/pi-mcp-adapter/tool-metadata.ts +42 -4
- package/node_modules/pi-mcp-adapter/tool-result-renderer.ts +138 -12
- package/node_modules/pi-mcp-adapter/types.ts +93 -27
- package/node_modules/pi-mcp-adapter/ui-server.ts +20 -1
- package/package.json +17 -13
- package/node_modules/pi-lens/dist/clients/ast-grep-parser.js +0 -86
- package/node_modules/pi-lens/dist/clients/lsp/interactive-install.js +0 -367
- package/node_modules/pi-lens/dist/clients/lsp/lsp-index.js +0 -10
- package/node_modules/pi-lens/dist/clients/lsp/server-strategies.js +0 -5
- package/node_modules/pi-lens/dist/clients/project-metadata.js +0 -690
- package/node_modules/pi-lens/dist/clients/source-groups.js +0 -96
- package/node_modules/pi-lens/dist/clients/startup-marker.js +0 -6
- package/node_modules/pi-lens/dist/clients/types.js +0 -11
package/README.md
CHANGED
|
@@ -11,17 +11,58 @@ pi install npm:@herbertgao/pi-extensions
|
|
|
11
11
|
The package bundles 11 active `@herbertgao/*` child packages, including `@herbertgao/pi-cc-extensions`, plus the following upstream packages under their original names:
|
|
12
12
|
|
|
13
13
|
- `@dietrichgebert/ponytail@4.9.0`
|
|
14
|
-
- `@juicesharp/rpiv-ask-user-question@2.
|
|
15
|
-
- `@narumitw/pi-btw@0.
|
|
14
|
+
- `@juicesharp/rpiv-ask-user-question@2.5.2`
|
|
15
|
+
- `@narumitw/pi-btw@0.51.0`
|
|
16
16
|
- `@pi-plugins/fast-mode@0.1.9`
|
|
17
|
-
- `pi-mcp-adapter@2.
|
|
18
|
-
- `pi-
|
|
17
|
+
- `pi-mcp-adapter@2.25.0`
|
|
18
|
+
- `pi-footer@0.5.1`
|
|
19
|
+
- `pi-lens@4.0.0`
|
|
19
20
|
- `pi-web-access@0.22.0`
|
|
20
21
|
- `remote-pi@0.7.0`
|
|
21
22
|
- `@czottmann/pi-automode@1.11.0`
|
|
22
23
|
|
|
23
24
|
Pi loads their extensions and skills through `node_modules/` paths inside one package root. The upstream companions are pinned and bundled, not forked or renamed.
|
|
24
25
|
|
|
26
|
+
If `pi-footer` was installed separately before upgrading to an aggregate release that includes it, remove the standalone source shown by `pi list` so only the bundled copy loads. For the pinned standalone install used while preparing this integration:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pi remove npm:pi-footer@0.5.1
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Recommended footer
|
|
33
|
+
|
|
34
|
+
`pi-footer` is enabled by the aggregate. To use the recommended compact layout for MCP, Auto mode, LSP, Ponytail, Remote Pi, and Subagents, copy the bundled example to Pi's user config directory:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
agent_dir="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"
|
|
38
|
+
mkdir -p "$agent_dir/extensions"
|
|
39
|
+
cp "$agent_dir/npm/node_modules/@herbertgao/pi-extensions/examples/pi-footer.json" \
|
|
40
|
+
"$agent_dir/extensions/pi-footer.json"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The same copy is linked here as [`examples/pi-footer.json`](examples/pi-footer.json). The example preserves the native path, Git branch, session, token/context, model, and thinking information. It uses a gray `•` separator and shows Remote Pi/Subagents only when those extensions publish status. Restart Pi or run `/reload` after copying. Existing config is intentionally never overwritten automatically.
|
|
44
|
+
|
|
45
|
+
For the intended compact status text, merge these optional companion settings into existing files rather than replacing the files:
|
|
46
|
+
|
|
47
|
+
```jsonc
|
|
48
|
+
// ~/.pi/agent/mcp.json
|
|
49
|
+
{
|
|
50
|
+
"settings": {
|
|
51
|
+
"mcpFooterStatus": "compact",
|
|
52
|
+
"showStatusIcon": false
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// ~/.pi-lens/config.json
|
|
57
|
+
{
|
|
58
|
+
"widget": {
|
|
59
|
+
"visible": false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The copy command replaces an existing `pi-footer.json`; review or back it up first. Only one footer-replacement extension should be enabled at a time. Use `/footer` for interactive changes.
|
|
65
|
+
|
|
25
66
|
Pi 0.84.1 or newer should use native `fullscreen` TUI mode. The deprecated `@herbertgao/pi-fixed-editor` legacy package is intentionally not bundled.
|
|
26
67
|
|
|
27
68
|
### Remote Pi trust boundary
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"preset": "pi-footer",
|
|
5
|
+
"lines": [
|
|
6
|
+
[
|
|
7
|
+
{
|
|
8
|
+
"id": "core-cwd",
|
|
9
|
+
"type": "cwd",
|
|
10
|
+
"enabled": true,
|
|
11
|
+
"options": {
|
|
12
|
+
"raw": true,
|
|
13
|
+
"fg": "pi:dim",
|
|
14
|
+
"cwdDisplayStyle": "full-home"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "core-branch",
|
|
19
|
+
"type": "git-branch",
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"options": {
|
|
22
|
+
"raw": true,
|
|
23
|
+
"fg": "pi:dim",
|
|
24
|
+
"hideWhenEmpty": true,
|
|
25
|
+
"gitBranchDisplayStyle": "round-brackets"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "core-session",
|
|
30
|
+
"type": "session-name",
|
|
31
|
+
"enabled": true,
|
|
32
|
+
"options": {
|
|
33
|
+
"raw": true,
|
|
34
|
+
"fg": "pi:dim",
|
|
35
|
+
"hideWhenEmpty": true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
"id": "core-tokens",
|
|
42
|
+
"type": "tokens",
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"options": {
|
|
45
|
+
"raw": true,
|
|
46
|
+
"fg": "pi:dim",
|
|
47
|
+
"tokenFormatStyle": "compact"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "core-cache-read",
|
|
52
|
+
"type": "cache-read",
|
|
53
|
+
"enabled": true,
|
|
54
|
+
"options": {
|
|
55
|
+
"icon": "R",
|
|
56
|
+
"fg": "pi:dim",
|
|
57
|
+
"tokenFormatStyle": "compact",
|
|
58
|
+
"hideWhenZero": true
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "core-cache-write",
|
|
63
|
+
"type": "cache-write",
|
|
64
|
+
"enabled": true,
|
|
65
|
+
"options": {
|
|
66
|
+
"icon": "W",
|
|
67
|
+
"fg": "pi:dim",
|
|
68
|
+
"tokenFormatStyle": "compact",
|
|
69
|
+
"hideWhenZero": true
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "core-cache-hit",
|
|
74
|
+
"type": "cache-hit-rate",
|
|
75
|
+
"enabled": true,
|
|
76
|
+
"options": {
|
|
77
|
+
"icon": "CH",
|
|
78
|
+
"fg": "pi:dim",
|
|
79
|
+
"hideWhenZero": true,
|
|
80
|
+
"cacheHitSource": "turn"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "core-cost",
|
|
85
|
+
"type": "cost",
|
|
86
|
+
"enabled": true,
|
|
87
|
+
"options": {
|
|
88
|
+
"raw": true,
|
|
89
|
+
"fg": "pi:dim",
|
|
90
|
+
"costFormatStyle": "compact",
|
|
91
|
+
"showSubscription": true
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "core-context",
|
|
96
|
+
"type": "context",
|
|
97
|
+
"enabled": true,
|
|
98
|
+
"options": {
|
|
99
|
+
"raw": true,
|
|
100
|
+
"fg": "pi:dim",
|
|
101
|
+
"contextConditionalColors": true,
|
|
102
|
+
"warningFg": "pi:warning",
|
|
103
|
+
"dangerFg": "pi:error"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "core-context-slash",
|
|
108
|
+
"type": "separator",
|
|
109
|
+
"enabled": true,
|
|
110
|
+
"options": {
|
|
111
|
+
"separator": "custom",
|
|
112
|
+
"text": "/",
|
|
113
|
+
"fg": "pi:dim"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "core-context-window",
|
|
118
|
+
"type": "context-window",
|
|
119
|
+
"enabled": true,
|
|
120
|
+
"options": {
|
|
121
|
+
"raw": true,
|
|
122
|
+
"fg": "pi:dim",
|
|
123
|
+
"contextConditionalColors": true,
|
|
124
|
+
"warningFg": "pi:warning",
|
|
125
|
+
"dangerFg": "pi:error",
|
|
126
|
+
"tokenFormatStyle": "compact"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "core-flex",
|
|
131
|
+
"type": "flex-separator",
|
|
132
|
+
"enabled": true,
|
|
133
|
+
"options": {}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "core-model",
|
|
137
|
+
"type": "model",
|
|
138
|
+
"enabled": true,
|
|
139
|
+
"options": {
|
|
140
|
+
"raw": true,
|
|
141
|
+
"fg": "pi:dim"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "core-thinking",
|
|
146
|
+
"type": "thinking-level",
|
|
147
|
+
"enabled": true,
|
|
148
|
+
"options": {
|
|
149
|
+
"raw": true,
|
|
150
|
+
"fg": "pi:dim",
|
|
151
|
+
"hideWhenEmpty": true
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
[
|
|
156
|
+
{
|
|
157
|
+
"id": "status-mcp",
|
|
158
|
+
"type": "external-status",
|
|
159
|
+
"enabled": true,
|
|
160
|
+
"options": {
|
|
161
|
+
"externalStatusKey": "mcp",
|
|
162
|
+
"icon": "🔌 ",
|
|
163
|
+
"hideWhenEmpty": true
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "status-auto",
|
|
168
|
+
"type": "external-status",
|
|
169
|
+
"enabled": true,
|
|
170
|
+
"options": {
|
|
171
|
+
"externalStatusKey": "pi-automode",
|
|
172
|
+
"icon": "🤖 Auto ",
|
|
173
|
+
"trimValue": 2,
|
|
174
|
+
"preserveTrimStyles": true,
|
|
175
|
+
"hideWhenEmpty": true
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
{
|
|
181
|
+
"id": "status-lsp",
|
|
182
|
+
"type": "external-status",
|
|
183
|
+
"enabled": true,
|
|
184
|
+
"options": {
|
|
185
|
+
"externalStatusKey": "pi-lens-lsp",
|
|
186
|
+
"icon": "🧩 LSP ",
|
|
187
|
+
"trimValue": 4,
|
|
188
|
+
"preserveTrimStyles": true,
|
|
189
|
+
"hideWhenEmpty": true
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "status-ponytail",
|
|
194
|
+
"type": "external-status",
|
|
195
|
+
"enabled": true,
|
|
196
|
+
"options": {
|
|
197
|
+
"externalStatusKey": "ponytail",
|
|
198
|
+
"trimValue": 2,
|
|
199
|
+
"preserveTrimStyles": false,
|
|
200
|
+
"hideWhenEmpty": true
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
],
|
|
204
|
+
[
|
|
205
|
+
{
|
|
206
|
+
"id": "status-remote-session",
|
|
207
|
+
"type": "external-status",
|
|
208
|
+
"enabled": true,
|
|
209
|
+
"options": {
|
|
210
|
+
"externalStatusKey": "remote-pi:session",
|
|
211
|
+
"hideWhenEmpty": true
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "status-remote-relay",
|
|
216
|
+
"type": "external-status",
|
|
217
|
+
"enabled": true,
|
|
218
|
+
"options": {
|
|
219
|
+
"externalStatusKey": "remote-pi:relay",
|
|
220
|
+
"hideWhenEmpty": true
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": "status-remote-peer",
|
|
225
|
+
"type": "external-status",
|
|
226
|
+
"enabled": true,
|
|
227
|
+
"options": {
|
|
228
|
+
"externalStatusKey": "remote-pi:peer-active",
|
|
229
|
+
"hideWhenEmpty": true
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id": "status-subagents",
|
|
234
|
+
"type": "external-status",
|
|
235
|
+
"enabled": true,
|
|
236
|
+
"options": {
|
|
237
|
+
"externalStatusKey": "subagents",
|
|
238
|
+
"icon": "👥 ",
|
|
239
|
+
"hideWhenEmpty": true
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
],
|
|
244
|
+
"separator": "dot",
|
|
245
|
+
"separatorFg": "brightBlack",
|
|
246
|
+
"separatorBg": "default",
|
|
247
|
+
"iconMode": "text",
|
|
248
|
+
"minimalist": false,
|
|
249
|
+
"terminal": {
|
|
250
|
+
"widthMode": "full",
|
|
251
|
+
"colorLevel": "ansi256"
|
|
252
|
+
},
|
|
253
|
+
"extensionStatusRow": {
|
|
254
|
+
"hiddenKeys": [
|
|
255
|
+
"mcp",
|
|
256
|
+
"pi-automode",
|
|
257
|
+
"pi-lens-lsp",
|
|
258
|
+
"ponytail",
|
|
259
|
+
"remote-pi:peer-active",
|
|
260
|
+
"remote-pi:relay",
|
|
261
|
+
"remote-pi:session",
|
|
262
|
+
"subagents"
|
|
263
|
+
],
|
|
264
|
+
"knownKeys": [
|
|
265
|
+
"mcp",
|
|
266
|
+
"pi-automode",
|
|
267
|
+
"pi-lens-lsp",
|
|
268
|
+
"ponytail",
|
|
269
|
+
"remote-pi:peer-active",
|
|
270
|
+
"remote-pi:relay",
|
|
271
|
+
"remote-pi:session",
|
|
272
|
+
"subagents"
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
}
|
|
@@ -39,7 +39,7 @@ Run `/reload` after installation.
|
|
|
39
39
|
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
|
|
40
40
|
| Claude Code Output | Tool summaries, expand/collapse, rich edit/write diffs, and `on` / `compact` / `off` modes | `/ccstyle` |
|
|
41
41
|
| Fullscreen mode | Tool card/group click-to-toggle, previews, hover highlight, and a back-to-bottom button | `TUIMODE=fullscreen` or `--tui-mode fullscreen` |
|
|
42
|
-
| Settings panel | `Style / Diff / Thinking / Feature` tabs
|
|
42
|
+
| Settings panel | `Style / Diff / Thinking / Feature` tabs with startup, wheel, and optional feature toggles | `/ccstyle` |
|
|
43
43
|
| Context inspection | Usage breakdown and previews for the system prompt, tools, skills, and messages | `/context` |
|
|
44
44
|
| Session/Subagent references | Search and inject effective context from previous Sessions or existing SubAgents | `@` |
|
|
45
45
|
| Theme | Bundled CC Dark and CC Light themes | `/theme` |
|
|
@@ -62,10 +62,18 @@ Run `/reload` after installation.
|
|
|
62
62
|
"previewLines": 3, // thinking preview lines; 0 hides the preview body
|
|
63
63
|
"animationIntervalMs": 90, // thinking title animation interval in ms
|
|
64
64
|
"showStartupHeader": true, // custom startup header (logo + tips) toggle
|
|
65
|
-
"scrollStepLines": 3
|
|
65
|
+
"scrollStepLines": 3, // fullscreen mouse wheel scroll lines
|
|
66
|
+
"enableSessionReference": true, // @ session references
|
|
67
|
+
"enableSubagentAutocomplete": true, // @ subagent autocomplete
|
|
68
|
+
"enableContextCommand": true, // /context inspection
|
|
69
|
+
"enableAgentSummary": true, // per-turn tool summary
|
|
70
|
+
"enableWorkingMessage": true, // Working... token/time details
|
|
71
|
+
"enableAliases": true // /clear and /exit aliases
|
|
66
72
|
}
|
|
67
73
|
```
|
|
68
74
|
|
|
75
|
+
> **Tip**: set Mermaid diagrams to `final` in `/settings` to avoid redrawing streaming content frame by frame.
|
|
76
|
+
|
|
69
77
|
## Local development
|
|
70
78
|
|
|
71
79
|
```bash
|
|
@@ -39,7 +39,7 @@ pi install npm:@herbertgao/pi-cc-extensions
|
|
|
39
39
|
| ---------------------- | ---------------------------------------------------------------------------------------------------------- | ------------- |
|
|
40
40
|
| Claude Code UI | 工具摘要、折叠展开、rich edit/write diff,以及 `on` / `compact` / `off` 三种模式 | `/ccstyle` |
|
|
41
41
|
| Fullscreen mode | 工具卡/group 点击展开与收起、预览、hover 高亮、回到底部按钮 | `TUIMODE=fullscreen` 或 `--tui-mode fullscreen` |
|
|
42
|
-
| 配置面板 | `Style / Diff / Thinking / Feature`
|
|
42
|
+
| 配置面板 | `Style / Diff / Thinking / Feature` 四页签,含启动头、滚轮步进及可选功能开关 | `/ccstyle` |
|
|
43
43
|
| 上下文检查 | 查看上下文占用,并预览 System prompt、Tools、Skills 和消息内容 | `/context` |
|
|
44
44
|
| Session/Subagent 引用 | 搜索并注入历史 Session 或现有 SubAgent 的有效上下文 | `@` |
|
|
45
45
|
| 主题 | 随包提供内置 CC Dark、CC Light 主题 | `/theme` |
|
|
@@ -62,10 +62,18 @@ pi install npm:@herbertgao/pi-cc-extensions
|
|
|
62
62
|
"previewLines": 3, // thinking 预览行数,0 隐藏预览正文
|
|
63
63
|
"animationIntervalMs": 90, // thinking 标题动画间隔(毫秒)
|
|
64
64
|
"showStartupHeader": true, // 自定义启动头(logo + tips)开关
|
|
65
|
-
"scrollStepLines": 3
|
|
65
|
+
"scrollStepLines": 3, // fullscreen 滚轮滚动步进行数
|
|
66
|
+
"enableSessionReference": true, // @ session 引用
|
|
67
|
+
"enableSubagentAutocomplete": true, // @ subagent 自动补全
|
|
68
|
+
"enableContextCommand": true, // /context 上下文检查
|
|
69
|
+
"enableAgentSummary": true, // 每回合工具统计摘要
|
|
70
|
+
"enableWorkingMessage": true, // Working... token/耗时展示
|
|
71
|
+
"enableAliases": true // /clear、/exit 别名
|
|
66
72
|
}
|
|
67
73
|
```
|
|
68
74
|
|
|
75
|
+
> **建议**:在 `/settings` 中将 Mermaid diagrams 设为 `final`,避免流式内容逐帧重绘。
|
|
76
|
+
|
|
69
77
|
## 本地开发
|
|
70
78
|
|
|
71
79
|
```bash
|
|
@@ -25,6 +25,12 @@ export type Config = {
|
|
|
25
25
|
animationIntervalMs: number;
|
|
26
26
|
showStartupHeader: boolean;
|
|
27
27
|
scrollStepLines: number;
|
|
28
|
+
enableSessionReference: boolean;
|
|
29
|
+
enableSubagentAutocomplete: boolean;
|
|
30
|
+
enableContextCommand: boolean;
|
|
31
|
+
enableAgentSummary: boolean;
|
|
32
|
+
enableWorkingMessage: boolean;
|
|
33
|
+
enableAliases: boolean;
|
|
28
34
|
};
|
|
29
35
|
|
|
30
36
|
const AGENT_DIR = process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent");
|
|
@@ -67,6 +73,12 @@ export const DEFAULT_CONFIG: Config = {
|
|
|
67
73
|
animationIntervalMs: 90,
|
|
68
74
|
showStartupHeader: true,
|
|
69
75
|
scrollStepLines: 3,
|
|
76
|
+
enableSessionReference: true,
|
|
77
|
+
enableSubagentAutocomplete: true,
|
|
78
|
+
enableContextCommand: true,
|
|
79
|
+
enableAgentSummary: true,
|
|
80
|
+
enableWorkingMessage: true,
|
|
81
|
+
enableAliases: true,
|
|
70
82
|
};
|
|
71
83
|
|
|
72
84
|
function pickEnum<T extends string>(value: unknown, allowed: readonly T[], fallback: T): T {
|
|
@@ -148,6 +160,12 @@ export function normalizeConfig(input: unknown): Config {
|
|
|
148
160
|
),
|
|
149
161
|
showStartupHeader: source.showStartupHeader !== false,
|
|
150
162
|
scrollStepLines: pickPositiveInt(source.scrollStepLines, DEFAULT_CONFIG.scrollStepLines, 1, 50),
|
|
163
|
+
enableSessionReference: source.enableSessionReference !== false,
|
|
164
|
+
enableSubagentAutocomplete: source.enableSubagentAutocomplete !== false,
|
|
165
|
+
enableContextCommand: source.enableContextCommand !== false,
|
|
166
|
+
enableAgentSummary: source.enableAgentSummary !== false,
|
|
167
|
+
enableWorkingMessage: source.enableWorkingMessage !== false,
|
|
168
|
+
enableAliases: source.enableAliases !== false,
|
|
151
169
|
};
|
|
152
170
|
}
|
|
153
171
|
|
|
@@ -189,6 +207,12 @@ export function formatConfigStatus(source: Config = config): string {
|
|
|
189
207
|
`thinkingAnimation=${source.animationIntervalMs}ms`,
|
|
190
208
|
`startupHeader=${source.showStartupHeader ? "on" : "off"}`,
|
|
191
209
|
`scrollStep=${source.scrollStepLines}`,
|
|
210
|
+
`sessionRef=${source.enableSessionReference ? "on" : "off"}`,
|
|
211
|
+
`subagentAuto=${source.enableSubagentAutocomplete ? "on" : "off"}`,
|
|
212
|
+
`context=${source.enableContextCommand ? "on" : "off"}`,
|
|
213
|
+
`agentSummary=${source.enableAgentSummary ? "on" : "off"}`,
|
|
214
|
+
`workingMsg=${source.enableWorkingMessage ? "on" : "off"}`,
|
|
215
|
+
`aliases=${source.enableAliases ? "on" : "off"}`,
|
|
192
216
|
].join(" · ");
|
|
193
217
|
}
|
|
194
218
|
|
|
@@ -64,6 +64,29 @@ function diffIndicatorDescription(mode: DiffIndicatorMode): string {
|
|
|
64
64
|
return "Vertical bar indicators on changed lines (default).";
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
function featureToggleSetting(
|
|
68
|
+
id: string,
|
|
69
|
+
label: string,
|
|
70
|
+
onDescription: string,
|
|
71
|
+
offDescription: string,
|
|
72
|
+
current: boolean,
|
|
73
|
+
) {
|
|
74
|
+
const setting = {
|
|
75
|
+
id,
|
|
76
|
+
label,
|
|
77
|
+
description: current ? onDescription : offDescription,
|
|
78
|
+
currentValue: current ? "on" : "off",
|
|
79
|
+
values: ["on", "off"],
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
setting,
|
|
83
|
+
apply(on: boolean): void {
|
|
84
|
+
setting.currentValue = on ? "on" : "off";
|
|
85
|
+
setting.description = on ? onDescription : offDescription;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
67
90
|
function buildExcludeRenderersSubmenu(
|
|
68
91
|
onClose: () => void,
|
|
69
92
|
onLiveChange: () => void,
|
|
@@ -333,8 +356,66 @@ export async function showCcstylePanel(
|
|
|
333
356
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
334
357
|
buildNumberInputSubmenu(theme, scrollStepSetting, closeSubmenu),
|
|
335
358
|
};
|
|
359
|
+
const sessionReferenceToggle = featureToggleSetting(
|
|
360
|
+
"enableSessionReference",
|
|
361
|
+
"Session reference",
|
|
362
|
+
"@ session mentions search and inject referenced context after restart.",
|
|
363
|
+
"Session reference disabled.",
|
|
364
|
+
config.enableSessionReference,
|
|
365
|
+
);
|
|
366
|
+
const subagentAutocompleteToggle = featureToggleSetting(
|
|
367
|
+
"enableSubagentAutocomplete",
|
|
368
|
+
"Subagent autocomplete",
|
|
369
|
+
"@ subagent mentions suggest agents and delegation instructions after restart.",
|
|
370
|
+
"Subagent autocomplete disabled.",
|
|
371
|
+
config.enableSubagentAutocomplete,
|
|
372
|
+
);
|
|
373
|
+
const contextCommandToggle = featureToggleSetting(
|
|
374
|
+
"enableContextCommand",
|
|
375
|
+
"Context usage",
|
|
376
|
+
"/context shows context-window distribution after restart.",
|
|
377
|
+
"Context command disabled.",
|
|
378
|
+
config.enableContextCommand,
|
|
379
|
+
);
|
|
380
|
+
const agentSummaryToggle = featureToggleSetting(
|
|
381
|
+
"enableAgentSummary",
|
|
382
|
+
"Agent summary",
|
|
383
|
+
"Append per-round tool stats after each agent turn after restart.",
|
|
384
|
+
"Agent summary disabled.",
|
|
385
|
+
config.enableAgentSummary,
|
|
386
|
+
);
|
|
387
|
+
const workingMessageToggle = featureToggleSetting(
|
|
388
|
+
"enableWorkingMessage",
|
|
389
|
+
"Working message",
|
|
390
|
+
"Extend Working... with token count and elapsed time after restart.",
|
|
391
|
+
"Native Working... footer only.",
|
|
392
|
+
config.enableWorkingMessage,
|
|
393
|
+
);
|
|
394
|
+
const aliasesToggle = featureToggleSetting(
|
|
395
|
+
"enableAliases",
|
|
396
|
+
"Aliases",
|
|
397
|
+
"/clear and /exit aliases enabled after restart.",
|
|
398
|
+
"Aliases disabled.",
|
|
399
|
+
config.enableAliases,
|
|
400
|
+
);
|
|
401
|
+
const featureToggles: Record<string, { apply: (on: boolean) => void }> = {
|
|
402
|
+
enableSessionReference: sessionReferenceToggle,
|
|
403
|
+
enableSubagentAutocomplete: subagentAutocompleteToggle,
|
|
404
|
+
enableContextCommand: contextCommandToggle,
|
|
405
|
+
enableAgentSummary: agentSummaryToggle,
|
|
406
|
+
enableWorkingMessage: workingMessageToggle,
|
|
407
|
+
enableAliases: aliasesToggle,
|
|
408
|
+
};
|
|
336
409
|
|
|
337
410
|
const onSettingChange = (id: string, value: string) => {
|
|
411
|
+
const featureToggle = featureToggles[id];
|
|
412
|
+
if (featureToggle) {
|
|
413
|
+
(config as unknown as Record<string, boolean>)[id] = value === "on";
|
|
414
|
+
featureToggle.apply(value === "on");
|
|
415
|
+
saveConfig();
|
|
416
|
+
ctx.ui.notify(`Updated ${id}: ${value} (next restart)`, "info");
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
338
419
|
switch (id) {
|
|
339
420
|
case "mode": {
|
|
340
421
|
// 选项值带 Experimental 标记,选择后还原为真实 mode 值。
|
|
@@ -450,7 +531,16 @@ export async function showCcstylePanel(
|
|
|
450
531
|
{
|
|
451
532
|
id: "feature",
|
|
452
533
|
label: "Feature",
|
|
453
|
-
items: [
|
|
534
|
+
items: [
|
|
535
|
+
startupHeaderSetting,
|
|
536
|
+
scrollStepSetting,
|
|
537
|
+
sessionReferenceToggle.setting,
|
|
538
|
+
subagentAutocompleteToggle.setting,
|
|
539
|
+
contextCommandToggle.setting,
|
|
540
|
+
agentSummaryToggle.setting,
|
|
541
|
+
workingMessageToggle.setting,
|
|
542
|
+
aliasesToggle.setting,
|
|
543
|
+
],
|
|
454
544
|
},
|
|
455
545
|
];
|
|
456
546
|
|
|
@@ -94,7 +94,7 @@ type AssistantInternals = {
|
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
type PatchedPrototype = typeof AssistantMessageComponent.prototype & {
|
|
97
|
-
updateContent: (message: AssistantMessage) => void;
|
|
97
|
+
updateContent: (message: AssistantMessage, isStreaming?: boolean) => void;
|
|
98
98
|
};
|
|
99
99
|
|
|
100
100
|
// 配置由 claude-code-style 管控(installCompactThinking 注入初始值,
|
|
@@ -334,9 +334,13 @@ function compactThinking(pi: ExtensionAPI) {
|
|
|
334
334
|
);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
prototype.updateContent = function patchedUpdateContent(
|
|
337
|
+
prototype.updateContent = function patchedUpdateContent(
|
|
338
|
+
message: AssistantMessage,
|
|
339
|
+
isStreaming?: boolean,
|
|
340
|
+
) {
|
|
338
341
|
const component = this as AssistantMessageComponentLike;
|
|
339
342
|
const self = this as unknown as AssistantInternals;
|
|
343
|
+
self.isStreaming = isStreaming ?? self.isStreaming;
|
|
340
344
|
self.lastMessage = message;
|
|
341
345
|
latestComponent = component;
|
|
342
346
|
latestComponentTimestamp = message.timestamp;
|
|
@@ -344,7 +348,7 @@ function compactThinking(pi: ExtensionAPI) {
|
|
|
344
348
|
// Visible mode is intentionally untouched: Shift+Tab restores Pi's exact
|
|
345
349
|
// built-in Thinking Markdown renderer, including every OpenAI summary stage.
|
|
346
350
|
if (!self.hideThinkingBlock) {
|
|
347
|
-
originalUpdateContent.call(this, message);
|
|
351
|
+
originalUpdateContent.call(this, message, self.isStreaming);
|
|
348
352
|
return;
|
|
349
353
|
}
|
|
350
354
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { config } from "./config/config.ts";
|
|
2
3
|
|
|
3
4
|
// shell
|
|
4
5
|
import piAliases from "./feature/shell/aliases.ts";
|
|
@@ -21,9 +22,9 @@ import markdownEnhance from "./renderer/markdown-enhance.ts";
|
|
|
21
22
|
|
|
22
23
|
export default function (pi: ExtensionAPI): void {
|
|
23
24
|
// shell chrome
|
|
24
|
-
piAliases(pi);
|
|
25
|
+
if (config.enableAliases) piAliases(pi);
|
|
25
26
|
piStartupHeader(pi);
|
|
26
|
-
workingMessage(pi);
|
|
27
|
+
if (config.enableWorkingMessage) workingMessage(pi);
|
|
27
28
|
|
|
28
29
|
// Renderer 必须先注册 lifecycle handler,shutdown 时才能先解开外层 compact
|
|
29
30
|
// patch;bridge 让稍后安装的 thinking controller 仍可直接供 renderer query。
|
|
@@ -42,8 +43,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
42
43
|
compactThinking = installCompactThinking(pi, getCompactThinkingConfig());
|
|
43
44
|
|
|
44
45
|
// features
|
|
45
|
-
context(pi);
|
|
46
|
-
sessionReference(pi);
|
|
47
|
-
agentAutocomplete(pi);
|
|
48
|
-
agentSummary(pi);
|
|
46
|
+
if (config.enableContextCommand) context(pi);
|
|
47
|
+
if (config.enableSessionReference) sessionReference(pi);
|
|
48
|
+
if (config.enableSubagentAutocomplete) agentAutocomplete(pi);
|
|
49
|
+
if (config.enableAgentSummary) agentSummary(pi);
|
|
49
50
|
}
|