@code-yeongyu/senpi 2026.6.6-3 → 2026.6.10-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +102 -100
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +48 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +7 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +59 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +3 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +4 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +2 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +0 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js +0 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +4 -4
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/policy.d.ts +0 -5
- package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/policy.js +0 -4
- package/dist/core/extensions/builtin/compaction/policy.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +0 -6
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +0 -3
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +10 -2
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/cli.d.ts +0 -3
- package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/cli.js +0 -13
- package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.js +0 -2
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.d.ts +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.js +0 -2
- package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +4 -4
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +7 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +34 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +21 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-registry.d.ts +3 -4
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +23 -6
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +58 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +2 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +24 -26
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +0 -4
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +0 -15
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +14 -3
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +128 -58
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/session-manager.d.ts +3 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +34 -17
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-resident-store.d.ts +16 -0
- package/dist/core/session-resident-store.d.ts.map +1 -0
- package/dist/core/session-resident-store.js +48 -0
- package/dist/core/session-resident-store.js.map +1 -0
- package/dist/core/settings-manager.d.ts +4 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +9 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +0 -5
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +0 -7
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/index.d.ts +0 -5
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +0 -67
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/trust-manager.d.ts +22 -0
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +75 -22
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +92 -129
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +39 -34
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +7 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +26 -4
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +6 -3
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +22 -18
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +15 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +158 -19
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +0 -4
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +0 -7
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/working-status.d.ts +2 -0
- package/dist/modes/interactive/working-status.d.ts.map +1 -1
- package/dist/modes/interactive/working-status.js +34 -0
- package/dist/modes/interactive/working-status.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +6 -2
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +58 -11
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/senpi +10 -1
- package/dist/utils/changelog.d.ts +1 -0
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +78 -0
- package/dist/utils/changelog.js.map +1 -1
- package/docs/compaction-guide.md +9 -9
- package/docs/compaction.md +2 -2
- package/docs/containerization.md +22 -22
- package/docs/custom-provider.md +13 -13
- package/docs/development.md +4 -2
- package/docs/docs.json +4 -0
- package/docs/extensions.md +46 -18
- package/docs/index.md +5 -4
- package/docs/json.md +21 -15
- package/docs/keybindings.md +6 -3
- package/docs/models.md +10 -43
- package/docs/packages.md +11 -13
- package/docs/prompt-templates.md +10 -3
- package/docs/providers.md +9 -9
- package/docs/rpc.md +14 -13
- package/docs/sdk.md +18 -9
- package/docs/security.md +55 -0
- package/docs/session-format.md +4 -4
- package/docs/sessions.md +14 -14
- package/docs/settings.md +14 -11
- package/docs/skills.md +8 -8
- package/docs/terminal-setup.md +38 -4
- package/docs/termux.md +3 -3
- package/docs/tmux.md +4 -2
- package/docs/tui.md +4 -4
- package/docs/usage.md +55 -57
- package/examples/extensions/README.md +1 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-agent-core/README.md +4 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +125 -77
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +0 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +0 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +7 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/README.md +4 -5
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +0 -1
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -3
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +6 -6
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +355 -313
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +376 -431
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +15 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +17 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +0 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js +0 -13
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +4 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +3 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +1 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +2 -16
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +0 -4
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +0 -6
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/README.md +1 -2
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +2 -0
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +89 -39
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -0
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +18 -4
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +131 -61
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -76
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js +14 -4
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -4
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +43 -21
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -8
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +0 -11
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +0 -1
- package/dist/core/extensions/builtin/compaction/overflow-detection.js +0 -40
- package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +0 -1
- package/dist/core/extensions/builtin/system-messages.d.ts +0 -47
- package/dist/core/extensions/builtin/system-messages.d.ts.map +0 -1
- package/dist/core/extensions/builtin/system-messages.js +0 -117
- package/dist/core/extensions/builtin/system-messages.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +0 -10
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/config.js +0 -33
- package/dist/core/extensions/builtin/todotools/continuation/config.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +0 -2
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/index.js +0 -2
- package/dist/core/extensions/builtin/todotools/continuation/index.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +0 -5
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js +0 -34
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +0 -11
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js +0 -201
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/settings.d.ts +0 -6
- package/dist/core/extensions/builtin/todotools/settings.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/settings.js +0 -58
- package/dist/core/extensions/builtin/todotools/settings.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/system-messages.d.ts +0 -34
- package/dist/core/extensions/builtin/todotools/system-messages.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/system-messages.js +0 -82
- package/dist/core/extensions/builtin/todotools/system-messages.js.map +0 -1
- package/dist/core/index.d.ts +0 -12
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -12
- package/dist/core/index.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2026.6.10-2] - 2026-06-10
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `apply_patch` now activates based on the model's API (`openai-responses`, `azure-openai-responses`, `openai-codex-responses`) instead of a provider allowlist, so OpenAI-compatible custom providers serving `gpt-*` models get the freeform patch tool, and Chat Completions models (which reject freeform tools) never do.
|
|
10
|
+
- The `compaction.restorationEnabled` setting is now honored at runtime; previously the restoration tracker read a hardcoded default and could not be disabled.
|
|
11
|
+
|
|
12
|
+
### Removed
|
|
13
|
+
|
|
14
|
+
- Removed dead internal modules and exports: `system-messages.ts`, compaction `overflow-detection.ts`, the `PI_EXPERIMENTAL` flag, unused tool factory functions (`createTool`, `createToolDefinition`, `createCodingToolDefinitions`, `createReadOnlyToolDefinitions`, `createAllTools`), `computeEditDiff`, `resolveHeaders`, `isLightTheme`, `RpcCommandType`, and the unwired compaction cooldown helpers.
|
|
15
|
+
|
|
16
|
+
## [2026.6.10] - 2026-06-10
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fixed inherited autocomplete suggestions to refresh after editor cursor movement ([#5499](https://github.com/earendil-works/pi/pull/5499) by [@Roman-Galeev](https://github.com/Roman-Galeev)).
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
|
|
26
|
+
- Removed todo continuation auto-follow-up (the `--disable-todo-continuation` flag and `todotools.continuation` settings).
|
|
27
|
+
|
|
3
28
|
## [2026.6.6-3] - 2026-06-06
|
|
4
29
|
|
|
5
30
|
### Added
|
|
@@ -18,9 +43,14 @@
|
|
|
18
43
|
|
|
19
44
|
- Added project trust gating for project-local settings, resources, instructions, and packages ([#5332](https://github.com/earendil-works/pi/pull/5332)).
|
|
20
45
|
- Added the latest prompt cache hit rate to the interactive footer.
|
|
46
|
+
- Exported RPC extension UI request and response types from the public API ([#5455](https://github.com/earendil-works/pi/issues/5455)).
|
|
47
|
+
- Exported coding-agent package asset path helpers from the public API ([#5415](https://github.com/earendil-works/pi/issues/5415)).
|
|
21
48
|
|
|
22
49
|
### Fixed
|
|
23
50
|
|
|
51
|
+
- Fixed the compaction summarization system prompt to use neutral AI assistant wording for non-coding agents ([#5401](https://github.com/earendil-works/pi/issues/5401)).
|
|
52
|
+
- Fixed `models.json` schema support for OpenAI Responses `compat.supportsDeveloperRole` ([#5456](https://github.com/earendil-works/pi/issues/5456)).
|
|
53
|
+
- Fixed tmux setup documentation to require tmux 3.5 for `extended-keys-format csi-u` and document the tmux 3.2-3.4 fallback ([#5432](https://github.com/earendil-works/pi/issues/5432)).
|
|
24
54
|
- Fixed built-in tool expand hints to style closing parentheses consistently ([#5359](https://github.com/earendil-works/pi/issues/5359)).
|
|
25
55
|
|
|
26
56
|
## [2026.6.4] - 2026-06-04
|
package/README.md
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<a href="https://pi.dev">
|
|
3
|
-
<
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://pi.dev/logo.svg">
|
|
5
|
-
<source media="(prefers-color-scheme: light)" srcset="https://huggingface.co/buckets/julien-c/my-training-bucket/resolve/pi-logo-dark.svg">
|
|
6
|
-
<img alt="senpi logo" src="https://pi.dev/logo.svg" width="128">
|
|
7
|
-
</picture>
|
|
3
|
+
<img alt="pi logo" src="https://pi.dev/logo-auto.svg" width="128">
|
|
8
4
|
</a>
|
|
9
5
|
</p>
|
|
10
6
|
<p align="center">
|
|
11
7
|
<a href="https://discord.com/invite/3cU7Bz4UPx"><img alt="Discord" src="https://img.shields.io/badge/discord-community-5865F2?style=flat-square&logo=discord&logoColor=white" /></a>
|
|
12
|
-
<a href="https://www.npmjs.com/package/@
|
|
13
|
-
<a href="https://github.com/code-yeongyu/senpi/actions/workflows/ci.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/code-yeongyu/senpi/ci.yml?style=flat-square&branch=main" /></a>
|
|
8
|
+
<a href="https://www.npmjs.com/package/@earendil-works/pi-coding-agent"><img alt="npm" src="https://img.shields.io/npm/v/@earendil-works/pi-coding-agent?style=flat-square" /></a>
|
|
14
9
|
</p>
|
|
15
10
|
<p align="center">
|
|
16
|
-
<
|
|
11
|
+
<a href="https://pi.dev">pi.dev</a> domain graciously donated by
|
|
12
|
+
<br /><br />
|
|
13
|
+
<a href="https://exe.dev"><img src="docs/images/exy.png" alt="Exy mascot" width="48" /><br />exe.dev</a>
|
|
17
14
|
</p>
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
> New issues and PRs from new contributors are auto-closed by default. Maintainers review auto-closed issues daily. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
Pi is a minimal terminal coding harness. Adapt pi to your workflows, not the other way around, without having to fork and modify pi internals. Extend it with TypeScript [Extensions](#extensions), [Skills](#skills), [Prompt Templates](#prompt-templates), and [Themes](#themes). Put your extensions, skills, prompt templates, and themes in [Pi Packages](#pi-packages) and share them with others via npm or git.
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
Pi ships with powerful defaults but skips features like sub agents and plan mode. Instead, you can ask pi to build what you want or install a third party pi package that matches your workflow.
|
|
23
|
+
|
|
24
|
+
Pi runs in four modes: interactive, print or JSON, RPC for process integration, and an SDK for embedding in your own apps. See [openclaw/openclaw](https://github.com/openclaw/openclaw) for a real-world SDK integration.
|
|
24
25
|
|
|
25
26
|
## Share your OSS coding agent sessions
|
|
26
27
|
|
|
@@ -57,7 +58,7 @@ I regularly publish my own `pi-mono` work sessions here:
|
|
|
57
58
|
- [Skills](#skills)
|
|
58
59
|
- [Extensions](#extensions)
|
|
59
60
|
- [Themes](#themes)
|
|
60
|
-
- [
|
|
61
|
+
- [Pi Packages](#pi-packages)
|
|
61
62
|
- [Programmatic Usage](#programmatic-usage)
|
|
62
63
|
- [Philosophy](#philosophy)
|
|
63
64
|
- [CLI Reference](#cli-reference)
|
|
@@ -67,26 +68,32 @@ I regularly publish my own `pi-mono` work sessions here:
|
|
|
67
68
|
## Quick Start
|
|
68
69
|
|
|
69
70
|
```bash
|
|
70
|
-
npm install -g @
|
|
71
|
+
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
`--ignore-scripts` disables dependency lifecycle scripts during install. Pi does not require install scripts for normal npm installs.
|
|
75
|
+
|
|
76
|
+
Installer alternative:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
curl -fsSL https://pi.dev/install.sh | sh
|
|
80
|
+
```
|
|
74
81
|
|
|
75
82
|
Authenticate with an API key:
|
|
76
83
|
|
|
77
84
|
```bash
|
|
78
85
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
79
|
-
|
|
86
|
+
pi
|
|
80
87
|
```
|
|
81
88
|
|
|
82
89
|
Or use your existing subscription:
|
|
83
90
|
|
|
84
91
|
```bash
|
|
85
|
-
|
|
92
|
+
pi
|
|
86
93
|
/login # Then select provider
|
|
87
94
|
```
|
|
88
95
|
|
|
89
|
-
Then just talk to
|
|
96
|
+
Then just talk to pi. By default, pi gives the model four tools: `read`, `write`, `edit`, and `bash`. The model uses these to fulfill your requests. Add capabilities via [skills](#skills), [prompt templates](#prompt-templates), [extensions](#extensions), or [pi packages](#pi-packages).
|
|
90
97
|
|
|
91
98
|
**Platform notes:** [Windows](docs/windows.md) | [Termux (Android)](docs/termux.md) | [tmux](docs/tmux.md) | [Terminal setup](docs/terminal-setup.md) | [Shell aliases](docs/shell-aliases.md)
|
|
92
99
|
|
|
@@ -94,7 +101,7 @@ Then just talk to senpi. By default, senpi gives the model four tools: `read`, `
|
|
|
94
101
|
|
|
95
102
|
## Providers & Models
|
|
96
103
|
|
|
97
|
-
For each built-in provider,
|
|
104
|
+
For each built-in provider, pi maintains a list of tool-capable models, updated with every release. Authenticate via subscription (`/login`) or API key, then select any model from that provider via `/model` (or Ctrl+L).
|
|
98
105
|
|
|
99
106
|
**Subscriptions:**
|
|
100
107
|
- Anthropic Claude Pro/Max
|
|
@@ -189,7 +196,7 @@ Type `/` in the editor to trigger commands. [Extensions](#extensions) can regist
|
|
|
189
196
|
| `/reload` | Reload keybindings, extensions, skills, prompts, and context files (themes hot-reload automatically) |
|
|
190
197
|
| `/hotkeys` | Show all keyboard shortcuts |
|
|
191
198
|
| `/changelog` | Display version history |
|
|
192
|
-
| `/quit` | Quit
|
|
199
|
+
| `/quit` | Quit pi |
|
|
193
200
|
|
|
194
201
|
### Keyboard Shortcuts
|
|
195
202
|
|
|
@@ -204,7 +211,7 @@ See `/hotkeys` for the full list. Customize via `~/.senpi/agent/keybindings.json
|
|
|
204
211
|
| Escape | Cancel/abort |
|
|
205
212
|
| Escape twice | Open `/tree` |
|
|
206
213
|
| Ctrl+L | Open model selector |
|
|
207
|
-
| Ctrl+P / Shift+Ctrl+P | Cycle
|
|
214
|
+
| Ctrl+P / Shift+Ctrl+P | Cycle scoped models forward/backward |
|
|
208
215
|
| Shift+Tab | Cycle thinking level |
|
|
209
216
|
| Ctrl+O | Collapse/expand tool output |
|
|
210
217
|
| Ctrl+T | Collapse/expand thinking blocks |
|
|
@@ -218,7 +225,7 @@ Submit messages while the agent is working:
|
|
|
218
225
|
- **Escape** aborts and restores queued messages to editor
|
|
219
226
|
- **Alt+Up** retrieves queued messages back to editor
|
|
220
227
|
|
|
221
|
-
On Windows Terminal, `Alt+Enter` is fullscreen by default. Remap it in [docs/terminal-setup.md](docs/terminal-setup.md) so
|
|
228
|
+
On Windows Terminal, `Alt+Enter` is fullscreen by default. Remap it in [docs/terminal-setup.md](docs/terminal-setup.md) so pi can receive the follow-up shortcut.
|
|
222
229
|
|
|
223
230
|
Configure delivery in [settings](docs/settings.md): `steeringMode` and `followUpMode` can be `"one-at-a-time"` (default, waits for response) or `"all"` (delivers all queued at once). `transport` selects provider transport preference (`"sse"`, `"websocket"`, or `"auto"`) for providers that support multiple transports.
|
|
224
231
|
|
|
@@ -233,12 +240,12 @@ Sessions are stored as JSONL files with a tree structure. Each entry has an `id`
|
|
|
233
240
|
Sessions auto-save to `~/.senpi/agent/sessions/` organized by working directory.
|
|
234
241
|
|
|
235
242
|
```bash
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
243
|
+
pi -c # Continue most recent session
|
|
244
|
+
pi -r # Browse and select from past sessions
|
|
245
|
+
pi --no-session # Ephemeral mode (don't save)
|
|
246
|
+
pi --name "my task" # Set session display name at startup
|
|
247
|
+
pi --session <path|id> # Use specific session file or ID
|
|
248
|
+
pi --fork <path|id> # Fork specific session file or ID into a new session
|
|
242
249
|
```
|
|
243
250
|
|
|
244
251
|
Use `/session` in interactive mode to see the current session ID before reusing it with `--session <id>` or `--fork <id>`.
|
|
@@ -284,13 +291,17 @@ See [docs/settings.md](docs/settings.md) for all options.
|
|
|
284
291
|
|
|
285
292
|
### Project Trust
|
|
286
293
|
|
|
287
|
-
On interactive startup, pi asks before trusting a project folder that contains project-local
|
|
294
|
+
On interactive startup, pi asks before trusting a project folder that contains project-local extensions or settings and has no saved decision for the folder or a parent folder in `~/.senpi/agent/trust.json`. Trusting a project allows pi to load `.senpi/settings.json` and `.senpi` resources, install missing project packages, and execute project extensions.
|
|
288
295
|
|
|
289
|
-
|
|
296
|
+
Before the trust decision, pi loads only context files, user/global extensions, and CLI `-e` extensions so they can handle the `project_trust` event. Project-local extensions, project package-managed extensions, and project settings are loaded only after the project is trusted. This split also applies when switching to a session from a different cwd whose trust has not been resolved in the current process.
|
|
290
297
|
|
|
291
|
-
|
|
298
|
+
Non-interactive modes (`-p`, `--mode json`, and `--mode rpc`) do not show a trust prompt. Without an applicable saved trust decision, they use `defaultProjectTrust` from global settings: `ask` (default) and `never` ignore trust-gated project inputs, while `always` trusts them. Pass `--approve`/`-a` or `--no-approve`/`-na` to override project trust for one run.
|
|
292
299
|
|
|
293
|
-
|
|
300
|
+
If no extension or saved decision applies, `defaultProjectTrust` controls the fallback behavior. Set it to `"ask"`, `"always"`, or `"never"` in `~/.senpi/agent/settings.json`, or change it with `/settings`.
|
|
301
|
+
|
|
302
|
+
`senpi config` and package commands use the same project trust flow. Pass `--approve` to trust project-local settings for one command or `--no-approve` to ignore them.
|
|
303
|
+
|
|
304
|
+
Use `/trust` in interactive mode to save a project trust decision for future sessions, including trust for the immediate parent folder. It writes `~/.senpi/agent/trust.json` only; the current session is not reloaded, so restart senpi for changes to take effect.
|
|
294
305
|
|
|
295
306
|
### Telemetry and update checks
|
|
296
307
|
|
|
@@ -316,7 +327,7 @@ Disable context file loading with `--no-context-files` (or `-nc`).
|
|
|
316
327
|
|
|
317
328
|
### System Prompt
|
|
318
329
|
|
|
319
|
-
|
|
330
|
+
Senpi builds its system prompt dynamically from the registered tools. Replace it with `--system-prompt <text>` or from an extension via the `before_agent_start` event; append without replacing via `--append-system-prompt <text>`. Upstream pi's `SYSTEM.md`/`APPEND_SYSTEM.md` file overrides are not supported in this fork.
|
|
320
331
|
|
|
321
332
|
---
|
|
322
333
|
|
|
@@ -332,7 +343,7 @@ Review this code for bugs, security issues, and performance problems.
|
|
|
332
343
|
Focus on: {{focus}}
|
|
333
344
|
```
|
|
334
345
|
|
|
335
|
-
Place in `~/.senpi/agent/prompts/`, `.senpi/prompts/`, or a [
|
|
346
|
+
Place in `~/.senpi/agent/prompts/`, `.senpi/prompts/`, or a [pi package](#pi-packages) to share with others. See [docs/prompt-templates.md](docs/prompt-templates.md).
|
|
336
347
|
|
|
337
348
|
### Skills
|
|
338
349
|
|
|
@@ -348,13 +359,13 @@ Use this skill when the user asks about X.
|
|
|
348
359
|
2. Then that
|
|
349
360
|
```
|
|
350
361
|
|
|
351
|
-
Place in `~/.senpi/agent/skills/`, `~/.agents/skills/`, `.senpi/skills/`, or `.agents/skills/` (from `cwd` up through parent directories) or a [
|
|
362
|
+
Place in `~/.senpi/agent/skills/`, `~/.agents/skills/`, `.senpi/skills/`, or `.agents/skills/` (from `cwd` up through parent directories) or a [pi package](#pi-packages) to share with others. See [docs/skills.md](docs/skills.md).
|
|
352
363
|
|
|
353
364
|
### Extensions
|
|
354
365
|
|
|
355
366
|
<p align="center"><img src="docs/images/doom-extension.png" alt="Doom Extension" width="600"></p>
|
|
356
367
|
|
|
357
|
-
TypeScript modules that extend
|
|
368
|
+
TypeScript modules that extend pi with custom tools, commands, keyboard shortcuts, event handlers, and UI components.
|
|
358
369
|
|
|
359
370
|
```typescript
|
|
360
371
|
export default function (pi: ExtensionAPI) {
|
|
@@ -368,7 +379,7 @@ The default export can also be `async`. pi waits for async extension factories b
|
|
|
368
379
|
|
|
369
380
|
**What's possible:**
|
|
370
381
|
- Custom tools (or replace built-in tools entirely)
|
|
371
|
-
-
|
|
382
|
+
- Sub-agents and plan mode
|
|
372
383
|
- Custom compaction and summarization
|
|
373
384
|
- Permission gates and path protection
|
|
374
385
|
- Custom editors and UI components
|
|
@@ -376,49 +387,47 @@ The default export can also be `async`. pi waits for async extension factories b
|
|
|
376
387
|
- Git checkpointing and auto-commit
|
|
377
388
|
- SSH and sandbox execution
|
|
378
389
|
- MCP server integration
|
|
379
|
-
- Make
|
|
390
|
+
- Make pi look like Claude Code
|
|
380
391
|
- Games while waiting (yes, Doom runs)
|
|
381
392
|
- ...anything you can dream up
|
|
382
393
|
|
|
383
|
-
Place in `~/.senpi/agent/extensions/`, `.senpi/extensions/`, or a [
|
|
384
|
-
|
|
385
|
-
Builtin extensions ship inside senpi and load before user extensions. Configure them in `settings.json` with `enabledBuiltinExtensions` to allow only specific builtin ids, or `disabledBuiltinExtensions` to skip ids while keeping the default set. The `openai-api-parallel-tool-calls`, `bash-timeout`, `webfetch`, and `gpt-apply-patch` builtin snapshots are refreshed from the sibling `pi-extensions` checkout at build time when available, and their source versions are recorded in `src/core/extensions/builtin/external-versions.json`.
|
|
394
|
+
Place in `~/.senpi/agent/extensions/`, `.senpi/extensions/`, or a [pi package](#pi-packages) to share with others. See [docs/extensions.md](docs/extensions.md) and [examples/extensions/](examples/extensions/).
|
|
386
395
|
|
|
387
396
|
### Themes
|
|
388
397
|
|
|
389
|
-
Built-in: `dark`, `light`. Themes hot-reload: modify the active theme file and
|
|
398
|
+
Built-in: `dark`, `light`. Themes hot-reload: modify the active theme file and pi immediately applies changes.
|
|
390
399
|
|
|
391
|
-
Place in `~/.senpi/agent/themes/`, `.senpi/themes/`, or a [
|
|
400
|
+
Place in `~/.senpi/agent/themes/`, `.senpi/themes/`, or a [pi package](#pi-packages) to share with others. See [docs/themes.md](docs/themes.md).
|
|
392
401
|
|
|
393
|
-
###
|
|
402
|
+
### Pi Packages
|
|
394
403
|
|
|
395
404
|
Bundle and share extensions, skills, prompts, and themes via npm or git. Find packages on [npmjs.com](https://www.npmjs.com/search?q=keywords%3Api-package) or [Discord](https://discord.com/channels/1456806362351669492/1457744485428629628).
|
|
396
405
|
|
|
397
|
-
> **Security:**
|
|
406
|
+
> **Security:** Pi packages run with full system access. Extensions execute arbitrary code, and skills can instruct the model to perform any action including running executables. Review source code before installing third-party packages.
|
|
398
407
|
|
|
399
408
|
```bash
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
409
|
+
pi install npm:@foo/pi-tools
|
|
410
|
+
pi install npm:@foo/pi-tools@1.2.3 # pinned version
|
|
411
|
+
pi install git:github.com/user/repo
|
|
412
|
+
pi install git:github.com/user/repo@v1 # tag or commit
|
|
413
|
+
pi install git:git@github.com:user/repo
|
|
414
|
+
pi install git:git@github.com:user/repo@v1 # tag or commit
|
|
415
|
+
pi install https://github.com/user/repo
|
|
416
|
+
pi install https://github.com/user/repo@v1 # tag or commit
|
|
417
|
+
pi install ssh://git@github.com/user/repo
|
|
418
|
+
pi install ssh://git@github.com/user/repo@v1 # tag or commit
|
|
419
|
+
pi remove npm:@foo/pi-tools
|
|
420
|
+
pi uninstall npm:@foo/pi-tools # alias for remove
|
|
421
|
+
pi list
|
|
422
|
+
pi update # update pi and packages (skips pinned packages)
|
|
423
|
+
pi update --extensions # update packages only
|
|
424
|
+
pi update --self # update pi only
|
|
425
|
+
pi update --self --force # reinstall pi even if current
|
|
426
|
+
pi update npm:@foo/pi-tools # update one package
|
|
427
|
+
pi config # enable/disable extensions, skills, prompts, themes
|
|
419
428
|
```
|
|
420
429
|
|
|
421
|
-
Packages install to `~/.senpi/agent/git/` (git) or
|
|
430
|
+
Packages install to `~/.senpi/agent/git/` (git) or `~/.senpi/agent/npm/` (npm). Use `-l` for project-local installs (`.senpi/git/`, `.senpi/npm/`). Git `@ref` values are pinned tags or commits; pinned packages are skipped by `pi update`, so use `pi install git:host/user/repo@new-ref` to move an existing package to a new ref. Git packages install dependencies with `npm install --omit=dev` by default, so runtime deps must be listed under `dependencies`; when `npmCommand` is configured, git packages use plain `install` for compatibility with wrappers. If you use a Node version manager and want package installs to reuse a stable npm context, set `npmCommand` in `settings.json`, for example `["mise", "exec", "node@20", "--", "npm"]`.
|
|
422
431
|
|
|
423
432
|
Create a package by adding a `pi` key to `package.json`:
|
|
424
433
|
|
|
@@ -435,7 +444,7 @@ Create a package by adding a `pi` key to `package.json`:
|
|
|
435
444
|
}
|
|
436
445
|
```
|
|
437
446
|
|
|
438
|
-
Without a `pi` manifest,
|
|
447
|
+
Without a `pi` manifest, pi auto-discovers from conventional directories (`extensions/`, `skills/`, `prompts/`, `themes/`).
|
|
439
448
|
|
|
440
449
|
See [docs/packages.md](docs/packages.md).
|
|
441
450
|
|
|
@@ -446,7 +455,7 @@ See [docs/packages.md](docs/packages.md).
|
|
|
446
455
|
### SDK
|
|
447
456
|
|
|
448
457
|
```typescript
|
|
449
|
-
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager } from "@
|
|
458
|
+
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager } from "@earendil-works/pi-coding-agent";
|
|
450
459
|
|
|
451
460
|
const authStorage = AuthStorage.create();
|
|
452
461
|
const modelRegistry = ModelRegistry.create(authStorage);
|
|
@@ -459,8 +468,6 @@ const { session } = await createAgentSession({
|
|
|
459
468
|
await session.prompt("What files are in the current directory?");
|
|
460
469
|
```
|
|
461
470
|
|
|
462
|
-
The package name is scoped, but runtime branding, config paths, and the CLI command stay `senpi`.
|
|
463
|
-
|
|
464
471
|
For advanced multi-session runtime replacement, use `createAgentSessionRuntime()` and `AgentSessionRuntime`.
|
|
465
472
|
|
|
466
473
|
See [docs/sdk.md](docs/sdk.md) and [examples/sdk/](examples/sdk/).
|
|
@@ -470,7 +477,7 @@ See [docs/sdk.md](docs/sdk.md) and [examples/sdk/](examples/sdk/).
|
|
|
470
477
|
For non-Node.js integrations, use RPC mode over stdin/stdout:
|
|
471
478
|
|
|
472
479
|
```bash
|
|
473
|
-
|
|
480
|
+
pi --mode rpc
|
|
474
481
|
```
|
|
475
482
|
|
|
476
483
|
RPC mode uses strict LF-delimited JSONL framing. Clients must split records on `\n` only. Do not use generic line readers like Node `readline`, which also split on Unicode separators inside JSON payloads.
|
|
@@ -481,24 +488,21 @@ See [docs/rpc.md](docs/rpc.md) for the protocol.
|
|
|
481
488
|
|
|
482
489
|
## Philosophy
|
|
483
490
|
|
|
484
|
-
|
|
491
|
+
Pi is aggressively extensible so it doesn't have to dictate your workflow. Features that other tools bake in can be built with [extensions](#extensions), [skills](#skills), or installed from third-party [pi packages](#pi-packages). This keeps the core minimal while letting you shape pi to fit how you work.
|
|
492
|
+
|
|
493
|
+
**No MCP.** Build CLI tools with READMEs (see [Skills](#skills)), or build an extension that adds MCP support. [Why?](https://mariozechner.at/posts/2025-11-02-what-if-you-dont-need-mcp/)
|
|
494
|
+
|
|
495
|
+
**No sub-agents.** There's many ways to do this. Spawn pi instances via tmux, or build your own with [extensions](#extensions), or install a package that does it your way.
|
|
485
496
|
|
|
486
|
-
|
|
497
|
+
**No permission popups.** Run in a container, or build your own confirmation flow with [extensions](#extensions) inline with your environment and security requirements.
|
|
487
498
|
|
|
488
|
-
|
|
489
|
-
- **Built-in to-dos** — `todowrite` / `todoread` tools with branch-aware persistence and a continuation loop. Required by senpi's dynamic prompt; remove the builtin id to opt out.
|
|
490
|
-
- **Dynamic system prompt** — intent gate + tool categorization + policy enforcement via [`dynamic-prompt/`](src/core/dynamic-prompt/AGENTS.md). Replaces upstream's static prompt.
|
|
491
|
-
- **Per-model prompt presets** — `gpt-5.x`, `claude-opus-4-{5,6,7}`, `kimi-k2-6` via [`prompt-preset`](src/core/extensions/builtin/prompt-preset/AGENTS.md).
|
|
492
|
-
- **GPT `apply_patch` tool** — Codex-style freeform grammar via [`gpt-apply-patch`](src/core/extensions/builtin/gpt-apply-patch/AGENTS.md), activated only for GPT models.
|
|
493
|
-
- **Compaction pipeline** — speculative + restoration + degradation monitoring via [`compaction`](src/core/extensions/builtin/compaction/AGENTS.md).
|
|
499
|
+
**No plan mode.** Write plans to files, or build it with [extensions](#extensions), or install a package.
|
|
494
500
|
|
|
495
|
-
|
|
501
|
+
**No built-in to-dos.** They confuse models. Use a TODO.md file, or build your own with [extensions](#extensions).
|
|
496
502
|
|
|
497
|
-
**No
|
|
498
|
-
**No plan mode** — write plans to files, or build it via an extension.
|
|
499
|
-
**No background bash** — use tmux for full observability and direct interaction.
|
|
503
|
+
**No background bash.** Use tmux. Full observability, direct interaction.
|
|
500
504
|
|
|
501
|
-
Read
|
|
505
|
+
Read the [blog post](https://mariozechner.at/posts/2025-11-30-pi-coding-agent/) for the full rationale.
|
|
502
506
|
|
|
503
507
|
---
|
|
504
508
|
|
|
@@ -523,7 +527,7 @@ senpi list # List installed packages
|
|
|
523
527
|
senpi config # Enable/disable package resources
|
|
524
528
|
```
|
|
525
529
|
|
|
526
|
-
|
|
530
|
+
`senpi config` and project package commands accept `--approve`/`--no-approve` to trust or ignore project-local settings for one command.
|
|
527
531
|
|
|
528
532
|
### Modes
|
|
529
533
|
|
|
@@ -535,10 +539,10 @@ Project package commands accept `--approve`/`--no-approve` to trust or ignore pr
|
|
|
535
539
|
| `--mode rpc` | RPC mode for process integration (see [docs/rpc.md](docs/rpc.md)) |
|
|
536
540
|
| `--export <in> [out]` | Export session to HTML |
|
|
537
541
|
|
|
538
|
-
In print mode,
|
|
542
|
+
In print mode, pi also reads piped stdin and merges it into the initial prompt:
|
|
539
543
|
|
|
540
544
|
```bash
|
|
541
|
-
cat README.md |
|
|
545
|
+
cat README.md | pi -p "Summarize this text"
|
|
542
546
|
```
|
|
543
547
|
|
|
544
548
|
### Model Options
|
|
@@ -549,7 +553,7 @@ cat README.md | senpi -p "Summarize this text"
|
|
|
549
553
|
| `--model <pattern>` | Model pattern or ID (supports `provider/id` and optional `:<thinking>`) |
|
|
550
554
|
| `--api-key <key>` | API key (overrides env vars) |
|
|
551
555
|
| `--thinking <level>` | `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max` |
|
|
552
|
-
| `--models <patterns>` | Comma-separated patterns
|
|
556
|
+
| `--models <patterns>` | Comma-separated patterns for Ctrl+P cycling |
|
|
553
557
|
| `--list-models [search]` | List available models |
|
|
554
558
|
|
|
555
559
|
### Session Options
|
|
@@ -608,46 +612,46 @@ Combine `--no-*` with explicit flags to load exactly what you need, ignoring set
|
|
|
608
612
|
Prefix files with `@` to include in the message:
|
|
609
613
|
|
|
610
614
|
```bash
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
615
|
+
pi @prompt.md "Answer this"
|
|
616
|
+
pi -p @screenshot.png "What's in this image?"
|
|
617
|
+
pi @code.ts @test.ts "Review these files"
|
|
614
618
|
```
|
|
615
619
|
|
|
616
620
|
### Examples
|
|
617
621
|
|
|
618
622
|
```bash
|
|
619
623
|
# Interactive with initial prompt
|
|
620
|
-
|
|
624
|
+
pi "List all .ts files in src/"
|
|
621
625
|
|
|
622
626
|
# Non-interactive
|
|
623
|
-
|
|
627
|
+
pi -p "Summarize this codebase"
|
|
624
628
|
|
|
625
629
|
# Non-interactive with piped stdin
|
|
626
|
-
cat README.md |
|
|
630
|
+
cat README.md | pi -p "Summarize this text"
|
|
627
631
|
|
|
628
632
|
# Named one-shot session
|
|
629
633
|
pi --name "release audit" -p "Audit this repository"
|
|
630
634
|
|
|
631
635
|
# Different model
|
|
632
|
-
|
|
636
|
+
pi --provider openai --model gpt-4o "Help me refactor"
|
|
633
637
|
|
|
634
638
|
# Model with provider prefix (no --provider needed)
|
|
635
|
-
|
|
639
|
+
pi --model openai/gpt-4o "Help me refactor"
|
|
636
640
|
|
|
637
641
|
# Model with thinking level shorthand
|
|
638
|
-
|
|
642
|
+
pi --model sonnet:high "Solve this complex problem"
|
|
639
643
|
|
|
640
644
|
# Limit model cycling
|
|
641
|
-
|
|
645
|
+
pi --models "claude-*,gpt-4o"
|
|
642
646
|
|
|
643
647
|
# Read-only mode
|
|
644
|
-
|
|
648
|
+
pi --tools read,grep,find,ls -p "Review the code"
|
|
645
649
|
|
|
646
650
|
# Disable one extension or built-in tool while keeping the rest available
|
|
647
651
|
pi --exclude-tools ask_question
|
|
648
652
|
|
|
649
653
|
# High thinking level
|
|
650
|
-
|
|
654
|
+
pi --thinking high "Solve this complex problem"
|
|
651
655
|
```
|
|
652
656
|
|
|
653
657
|
### Environment Variables
|
|
@@ -661,8 +665,6 @@ senpi --thinking high "Solve this complex problem"
|
|
|
661
665
|
| `PI_SKIP_VERSION_CHECK` | Skip the Pi version update check at startup. This prevents the `pi.dev` latest-version request |
|
|
662
666
|
| `PI_TELEMETRY` | Override install/update telemetry and provider attribution headers. Use `1`/`true`/`yes` to enable or `0`/`false`/`no` to disable. This does not disable update checks |
|
|
663
667
|
| `PI_CACHE_RETENTION` | Set to `long` for extended prompt cache (Anthropic: 1h, OpenAI: 24h) |
|
|
664
|
-
| `PI_BASH_DEFAULT_TIMEOUT_SECONDS` | Default timeout in seconds applied to `bash` tool calls when the model omits `timeout` (default: `120`). |
|
|
665
|
-
| `PI_BASH_MAX_TIMEOUT_SECONDS` | Recommended maximum timeout in seconds for prompt guidance (default: `600`, automatically raised to default if a smaller value is configured). Explicit timeout values are preserved. |
|
|
666
668
|
| `VISUAL`, `EDITOR` | External editor for Ctrl+G |
|
|
667
669
|
|
|
668
670
|
---
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqJ9C;AAED,wBAAgB,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqJ9C;AAED,wBAAgB,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAoLhE"}
|
package/dist/cli/args.js
CHANGED
|
@@ -243,7 +243,7 @@ ${chalk.bold("Options:")}
|
|
|
243
243
|
--session-dir <dir> Directory for session storage and lookup
|
|
244
244
|
--no-session Don't save session (ephemeral)
|
|
245
245
|
--name, -n <name> Set session display name
|
|
246
|
-
--models <patterns> Comma-separated patterns
|
|
246
|
+
--models <patterns> Comma-separated model patterns for Ctrl+P cycling
|
|
247
247
|
Supports globs (anthropic/*, *sonnet*) and fuzzy matching
|
|
248
248
|
--no-tools, -nt Disable all tools by default (built-in and extension)
|
|
249
249
|
--no-builtin-tools, -nbt Disable built-in tools by default but keep extension/custom tools enabled
|
|
@@ -252,7 +252,6 @@ ${chalk.bold("Options:")}
|
|
|
252
252
|
--exclude-tools, -xt <tools> Comma-separated denylist of tool names to disable
|
|
253
253
|
Applies to built-in, extension, and custom tools
|
|
254
254
|
--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh, max
|
|
255
|
-
(xhigh/max are Anthropic-native tiers; xhigh also covers GPT-5.x)
|
|
256
255
|
--extension, -e <path> Load an extension file (can be used multiple times)
|
|
257
256
|
--no-extensions, -ne Disable extension discovery (explicit -e paths still work)
|
|
258
257
|
--skill <path> Load a skill file or directory (can be used multiple times)
|