@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/dist/main.js
CHANGED
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
8
8
|
import { modelsAreEqual } from "@earendil-works/pi-ai";
|
|
9
|
-
import { ProcessTerminal, setKeybindings, TUI } from "@earendil-works/pi-tui";
|
|
10
9
|
import chalk from "chalk";
|
|
11
10
|
import { parseArgs, printHelp } from "./cli/args.js";
|
|
12
11
|
import { processFileArguments } from "./cli/file-processor.js";
|
|
13
12
|
import { buildInitialMessage } from "./cli/initial-message.js";
|
|
14
13
|
import { listModels } from "./cli/list-models.js";
|
|
14
|
+
import { createProjectTrustContext } from "./cli/project-trust.js";
|
|
15
15
|
import { selectSession } from "./cli/session-picker.js";
|
|
16
|
+
import { showStartupSelector } from "./cli/startup-ui.js";
|
|
16
17
|
import { ENV_SESSION_DIR, expandTildePath, getAgentDir, getPackageDir, VERSION } from "./config.js";
|
|
17
18
|
import { createAgentSessionRuntime } from "./core/agent-session-runtime.js";
|
|
18
19
|
import { createAgentSessionFromServices, createAgentSessionServices, } from "./core/agent-session-services.js";
|
|
@@ -20,9 +21,9 @@ import { formatNoModelsAvailableMessage } from "./core/auth-guidance.js";
|
|
|
20
21
|
import { AuthStorage } from "./core/auth-storage.js";
|
|
21
22
|
import { exportFromFile } from "./core/export-html/index.js";
|
|
22
23
|
import { configureHttpDispatcher } from "./core/http-dispatcher.js";
|
|
23
|
-
import { KeybindingsManager } from "./core/keybindings.js";
|
|
24
24
|
import { getModelNarrowingPatterns, resolveCliModel, resolveModelScope, } from "./core/model-resolver.js";
|
|
25
25
|
import { restoreStdout, takeOverStdout } from "./core/output-guard.js";
|
|
26
|
+
import { resolveProjectTrusted } from "./core/project-trust.js";
|
|
26
27
|
import { formatMissingSessionCwdPrompt, getMissingSessionCwdIssue, MissingSessionCwdError, } from "./core/session-cwd.js";
|
|
27
28
|
import { assertValidSessionId, SessionManager } from "./core/session-manager.js";
|
|
28
29
|
import { SettingsManager } from "./core/settings-manager.js";
|
|
@@ -30,7 +31,6 @@ import { printTimings, resetTimings, time } from "./core/timings.js";
|
|
|
30
31
|
import { hasProjectTrustInputs, ProjectTrustStore } from "./core/trust-manager.js";
|
|
31
32
|
import { runMigrations, showDeprecationWarnings } from "./migrations.js";
|
|
32
33
|
import { InteractiveMode, runPrintMode, runRpcMode } from "./modes/index.js";
|
|
33
|
-
import { ExtensionSelectorComponent } from "./modes/interactive/components/extension-selector.js";
|
|
34
34
|
import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
|
|
35
35
|
import { handleConfigCommand, handlePackageCommand } from "./package-manager-cli.js";
|
|
36
36
|
import { isLocalPath, normalizePath, resolvePath } from "./utils/paths.js";
|
|
@@ -74,14 +74,14 @@ function isTruthyEnvFlag(value) {
|
|
|
74
74
|
return false;
|
|
75
75
|
return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
|
|
76
76
|
}
|
|
77
|
-
function resolveAppMode(parsed, stdinIsTTY) {
|
|
77
|
+
function resolveAppMode(parsed, stdinIsTTY, stdoutIsTTY) {
|
|
78
78
|
if (parsed.mode === "rpc") {
|
|
79
79
|
return "rpc";
|
|
80
80
|
}
|
|
81
81
|
if (parsed.mode === "json") {
|
|
82
82
|
return "json";
|
|
83
83
|
}
|
|
84
|
-
if (parsed.print || !stdinIsTTY) {
|
|
84
|
+
if (parsed.print || !stdinIsTTY || !stdoutIsTTY) {
|
|
85
85
|
return "print";
|
|
86
86
|
}
|
|
87
87
|
return "interactive";
|
|
@@ -89,6 +89,9 @@ function resolveAppMode(parsed, stdinIsTTY) {
|
|
|
89
89
|
function toPrintOutputMode(appMode) {
|
|
90
90
|
return appMode === "json" ? "json" : "text";
|
|
91
91
|
}
|
|
92
|
+
function isPlainRuntimeMetadataCommand(parsed) {
|
|
93
|
+
return !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);
|
|
94
|
+
}
|
|
92
95
|
async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
|
|
93
96
|
if (parsed.fileArgs.length === 0) {
|
|
94
97
|
return buildInitialMessage({ parsed, stdinContent });
|
|
@@ -106,16 +109,9 @@ async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
|
|
|
106
109
|
* If it looks like a path, use as-is. Otherwise try to match as session ID prefix.
|
|
107
110
|
*/
|
|
108
111
|
async function findLocalSessionByExactId(sessionId, cwd, sessionDir) {
|
|
109
|
-
const localSessions = await SessionManager.list(cwd
|
|
112
|
+
const localSessions = sessionDir ? await SessionManager.listAll(sessionDir) : await SessionManager.list(cwd);
|
|
110
113
|
const localMatch = localSessions.find((s) => s.id === sessionId);
|
|
111
|
-
|
|
112
|
-
return { type: "local", path: localMatch.path };
|
|
113
|
-
}
|
|
114
|
-
if (!sessionDir) {
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
const customDirMatch = (await SessionManager.listAll(sessionDir)).find((s) => s.id === sessionId);
|
|
118
|
-
return customDirMatch ? { type: "local", path: customDirMatch.path } : undefined;
|
|
114
|
+
return localMatch ? { type: "local", path: localMatch.path } : undefined;
|
|
119
115
|
}
|
|
120
116
|
async function resolveSessionPath(sessionArg, cwd, sessionDir) {
|
|
121
117
|
// If it looks like a file path, resolve it before handing it to the session manager.
|
|
@@ -318,14 +314,13 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
|
|
|
318
314
|
if (parsed.thinking) {
|
|
319
315
|
options.thinkingLevel = parsed.thinking;
|
|
320
316
|
}
|
|
321
|
-
//
|
|
317
|
+
// Scoped models for Ctrl+P cycling
|
|
322
318
|
// Keep thinking level undefined when not explicitly set in the model pattern.
|
|
323
|
-
// Undefined means "inherit current session thinking level"
|
|
319
|
+
// Undefined means "inherit current session thinking level" during cycling.
|
|
324
320
|
if (scopedModels.length > 0) {
|
|
325
321
|
options.scopedModels = scopedModels.map((sm) => ({
|
|
326
322
|
model: sm.model,
|
|
327
323
|
thinkingLevel: sm.thinkingLevel,
|
|
328
|
-
serviceTier: sm.serviceTier,
|
|
329
324
|
}));
|
|
330
325
|
}
|
|
331
326
|
// API key from CLI - set in authStorage
|
|
@@ -348,64 +343,12 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
|
|
|
348
343
|
function resolveCliPaths(cwd, paths) {
|
|
349
344
|
return paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));
|
|
350
345
|
}
|
|
351
|
-
async function showStartupSelector(settingsManager, title, options) {
|
|
352
|
-
initTheme(settingsManager.getTheme());
|
|
353
|
-
setKeybindings(KeybindingsManager.create());
|
|
354
|
-
return new Promise((resolve) => {
|
|
355
|
-
const ui = new TUI(new ProcessTerminal(), settingsManager.getShowHardwareCursor());
|
|
356
|
-
ui.setClearOnShrink(settingsManager.getClearOnShrink());
|
|
357
|
-
let settled = false;
|
|
358
|
-
const finish = (result) => {
|
|
359
|
-
if (settled) {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
settled = true;
|
|
363
|
-
ui.stop();
|
|
364
|
-
resolve(result);
|
|
365
|
-
};
|
|
366
|
-
const selector = new ExtensionSelectorComponent(title, options.map((option) => option.label), (option) => finish(options.find((entry) => entry.label === option)?.value), () => finish(undefined), { tui: ui });
|
|
367
|
-
ui.addChild(selector);
|
|
368
|
-
ui.setFocus(selector);
|
|
369
|
-
ui.start();
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
346
|
async function promptForMissingSessionCwd(issue, settingsManager) {
|
|
373
347
|
return showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [
|
|
374
348
|
{ label: "Continue", value: issue.fallbackCwd },
|
|
375
349
|
{ label: "Cancel", value: undefined },
|
|
376
350
|
]);
|
|
377
351
|
}
|
|
378
|
-
async function promptForProjectTrust(cwd, settingsManager) {
|
|
379
|
-
return showStartupSelector(settingsManager, `Trust project folder?\n${cwd}\n\nThis allows pi to read project instructions (AGENTS.md/CLAUDE.md), load .pi settings and resources, install missing project packages, and execute project extensions.`, [
|
|
380
|
-
{ label: "Trust", value: { trusted: true, remember: true } },
|
|
381
|
-
{ label: "Trust (this session only)", value: { trusted: true, remember: false } },
|
|
382
|
-
{ label: "Do not trust", value: { trusted: false, remember: true } },
|
|
383
|
-
{ label: "Do not trust (this session only)", value: { trusted: false, remember: false } },
|
|
384
|
-
]);
|
|
385
|
-
}
|
|
386
|
-
async function resolveProjectTrusted(options) {
|
|
387
|
-
if (options.trustOverride !== undefined) {
|
|
388
|
-
return options.trustOverride;
|
|
389
|
-
}
|
|
390
|
-
if (!hasProjectTrustInputs(options.cwd)) {
|
|
391
|
-
return true;
|
|
392
|
-
}
|
|
393
|
-
const decision = options.trustStore.get(options.cwd);
|
|
394
|
-
if (decision !== null) {
|
|
395
|
-
return decision;
|
|
396
|
-
}
|
|
397
|
-
if (options.appMode !== "interactive") {
|
|
398
|
-
return false;
|
|
399
|
-
}
|
|
400
|
-
const selected = await promptForProjectTrust(options.cwd, options.settingsManagerForPrompt);
|
|
401
|
-
if (selected !== undefined) {
|
|
402
|
-
if (selected.remember) {
|
|
403
|
-
options.trustStore.set(options.cwd, selected.trusted);
|
|
404
|
-
}
|
|
405
|
-
return selected.trusted;
|
|
406
|
-
}
|
|
407
|
-
return false;
|
|
408
|
-
}
|
|
409
352
|
export async function main(args, options) {
|
|
410
353
|
resetTimings();
|
|
411
354
|
const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.PI_OFFLINE);
|
|
@@ -416,10 +359,10 @@ export async function main(args, options) {
|
|
|
416
359
|
if (process.platform === "win32") {
|
|
417
360
|
cleanupWindowsSelfUpdateQuarantine(getPackageDir());
|
|
418
361
|
}
|
|
419
|
-
if (await handlePackageCommand(args)) {
|
|
362
|
+
if (await handlePackageCommand(args, { extensionFactories: options?.extensionFactories })) {
|
|
420
363
|
return;
|
|
421
364
|
}
|
|
422
|
-
if (await handleConfigCommand(args)) {
|
|
365
|
+
if (await handleConfigCommand(args, { extensionFactories: options?.extensionFactories })) {
|
|
423
366
|
return;
|
|
424
367
|
}
|
|
425
368
|
const parsed = parseArgs(args);
|
|
@@ -433,11 +376,6 @@ export async function main(args, options) {
|
|
|
433
376
|
}
|
|
434
377
|
}
|
|
435
378
|
time("parseArgs");
|
|
436
|
-
let appMode = resolveAppMode(parsed, process.stdin.isTTY);
|
|
437
|
-
const shouldTakeOverStdout = appMode !== "interactive";
|
|
438
|
-
if (shouldTakeOverStdout) {
|
|
439
|
-
takeOverStdout();
|
|
440
|
-
}
|
|
441
379
|
if (parsed.version) {
|
|
442
380
|
console.log(VERSION);
|
|
443
381
|
process.exit(0);
|
|
@@ -445,9 +383,8 @@ export async function main(args, options) {
|
|
|
445
383
|
if (parsed.export) {
|
|
446
384
|
let result;
|
|
447
385
|
try {
|
|
448
|
-
const
|
|
449
|
-
|
|
450
|
-
result = await exportFromFile(inputPath, outputPath);
|
|
386
|
+
const outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;
|
|
387
|
+
result = await exportFromFile(parsed.export, outputPath);
|
|
451
388
|
}
|
|
452
389
|
catch (error) {
|
|
453
390
|
const message = error instanceof Error ? error.message : "Failed to export session";
|
|
@@ -457,6 +394,11 @@ export async function main(args, options) {
|
|
|
457
394
|
console.log(`Exported to: ${result}`);
|
|
458
395
|
process.exit(0);
|
|
459
396
|
}
|
|
397
|
+
let appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);
|
|
398
|
+
const shouldTakeOverStdout = appMode !== "interactive" && !isPlainRuntimeMetadataCommand(parsed);
|
|
399
|
+
if (shouldTakeOverStdout) {
|
|
400
|
+
takeOverStdout();
|
|
401
|
+
}
|
|
460
402
|
if (parsed.mode === "rpc" && parsed.fileArgs.length > 0) {
|
|
461
403
|
console.error(chalk.red("Error: @file arguments are not supported in RPC mode"));
|
|
462
404
|
process.exit(1);
|
|
@@ -470,6 +412,39 @@ export async function main(args, options) {
|
|
|
470
412
|
const agentDir = getAgentDir();
|
|
471
413
|
const startupSettingsManager = SettingsManager.create(cwd, agentDir);
|
|
472
414
|
reportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, "startup session lookup"));
|
|
415
|
+
const resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);
|
|
416
|
+
const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
|
|
417
|
+
const resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);
|
|
418
|
+
const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
|
|
419
|
+
const authStorage = AuthStorage.create();
|
|
420
|
+
if (parsed.listModels !== undefined) {
|
|
421
|
+
const services = await createAgentSessionServices({
|
|
422
|
+
cwd,
|
|
423
|
+
agentDir,
|
|
424
|
+
authStorage,
|
|
425
|
+
settingsManager: startupSettingsManager,
|
|
426
|
+
extensionFlagValues: parsed.unknownFlags,
|
|
427
|
+
resourceLoaderOptions: {
|
|
428
|
+
additionalExtensionPaths: resolvedExtensionPaths,
|
|
429
|
+
additionalSkillPaths: resolvedSkillPaths,
|
|
430
|
+
additionalPromptTemplatePaths: resolvedPromptTemplatePaths,
|
|
431
|
+
additionalThemePaths: resolvedThemePaths,
|
|
432
|
+
noExtensions: parsed.noExtensions,
|
|
433
|
+
noSkills: true,
|
|
434
|
+
noPromptTemplates: true,
|
|
435
|
+
noThemes: true,
|
|
436
|
+
noContextFiles: true,
|
|
437
|
+
extensionFactories: options?.extensionFactories,
|
|
438
|
+
},
|
|
439
|
+
});
|
|
440
|
+
reportDiagnostics([
|
|
441
|
+
...services.diagnostics,
|
|
442
|
+
...collectSettingsDiagnostics(services.settingsManager, "model listing"),
|
|
443
|
+
]);
|
|
444
|
+
const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
|
|
445
|
+
await listModels(services.modelRegistry, searchPattern);
|
|
446
|
+
process.exit(0);
|
|
447
|
+
}
|
|
473
448
|
// Decide the final runtime cwd before creating cwd-bound runtime services.
|
|
474
449
|
// --session and --resume may select a session from another project, so project-local
|
|
475
450
|
// settings, resources, provider registrations, and models must be resolved only after
|
|
@@ -504,23 +479,19 @@ export async function main(args, options) {
|
|
|
504
479
|
}
|
|
505
480
|
time("createSessionManager");
|
|
506
481
|
const trustStore = new ProjectTrustStore(agentDir);
|
|
482
|
+
const sessionCwd = sessionManager.getCwd();
|
|
483
|
+
const autoTrustOnReloadCwd = parsed.projectTrustOverride === undefined && !hasProjectTrustInputs(sessionCwd) ? sessionCwd : undefined;
|
|
507
484
|
const trustPromptMode = parsed.help || parsed.listModels !== undefined ? "print" : appMode;
|
|
508
|
-
const
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
|
|
519
|
-
const authStorage = AuthStorage.create();
|
|
520
|
-
const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, }) => {
|
|
521
|
-
const projectTrusted = cwd === sessionManager.getCwd()
|
|
522
|
-
? projectTrustedForSession
|
|
523
|
-
: (parsed.projectTrustOverride ?? (!hasProjectTrustInputs(cwd) || trustStore.get(cwd) === true));
|
|
485
|
+
const projectTrustByCwd = new Map();
|
|
486
|
+
const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, projectTrustContext, }) => {
|
|
487
|
+
const isInitialRuntime = sessionStartEvent === undefined;
|
|
488
|
+
const projectTrustDiagnostics = [];
|
|
489
|
+
const cachedProjectTrust = projectTrustByCwd.get(cwd);
|
|
490
|
+
const hasTrustInputs = hasProjectTrustInputs(cwd);
|
|
491
|
+
const shouldResolveProjectTrust = parsed.projectTrustOverride === undefined && cachedProjectTrust === undefined && hasTrustInputs;
|
|
492
|
+
const projectTrusted = shouldResolveProjectTrust
|
|
493
|
+
? false
|
|
494
|
+
: (cachedProjectTrust ?? parsed.projectTrustOverride ?? (!hasTrustInputs || trustStore.get(cwd) === true));
|
|
524
495
|
const runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted });
|
|
525
496
|
const services = await createAgentSessionServices({
|
|
526
497
|
cwd,
|
|
@@ -528,6 +499,29 @@ export async function main(args, options) {
|
|
|
528
499
|
authStorage,
|
|
529
500
|
settingsManager: runtimeSettingsManager,
|
|
530
501
|
extensionFlagValues: parsed.unknownFlags,
|
|
502
|
+
resourceLoaderReloadOptions: shouldResolveProjectTrust
|
|
503
|
+
? {
|
|
504
|
+
resolveProjectTrust: async ({ extensionsResult }) => {
|
|
505
|
+
const trusted = await resolveProjectTrusted({
|
|
506
|
+
cwd,
|
|
507
|
+
trustStore,
|
|
508
|
+
trustOverride: parsed.projectTrustOverride,
|
|
509
|
+
defaultProjectTrust: startupSettingsManager.getDefaultProjectTrust(),
|
|
510
|
+
extensionsResult,
|
|
511
|
+
projectTrustContext: projectTrustContext ??
|
|
512
|
+
createProjectTrustContext({
|
|
513
|
+
cwd,
|
|
514
|
+
mode: isInitialRuntime ? trustPromptMode : appMode,
|
|
515
|
+
settingsManager: startupSettingsManager,
|
|
516
|
+
hasUI: isInitialRuntime && trustPromptMode === "interactive",
|
|
517
|
+
}),
|
|
518
|
+
onExtensionError: (message) => projectTrustDiagnostics.push({ type: "warning", message }),
|
|
519
|
+
});
|
|
520
|
+
projectTrustByCwd.set(cwd, trusted);
|
|
521
|
+
return trusted;
|
|
522
|
+
},
|
|
523
|
+
}
|
|
524
|
+
: undefined,
|
|
531
525
|
resourceLoaderOptions: {
|
|
532
526
|
additionalExtensionPaths: resolvedExtensionPaths,
|
|
533
527
|
additionalSkillPaths: resolvedSkillPaths,
|
|
@@ -543,6 +537,7 @@ export async function main(args, options) {
|
|
|
543
537
|
});
|
|
544
538
|
const { settingsManager, modelRegistry, resourceLoader } = services;
|
|
545
539
|
const diagnostics = [
|
|
540
|
+
...projectTrustDiagnostics,
|
|
546
541
|
...services.diagnostics,
|
|
547
542
|
...collectSettingsDiagnostics(settingsManager, "runtime creation"),
|
|
548
543
|
...resourceLoader.getExtensions().errors.map(({ path, error }) => ({
|
|
@@ -555,7 +550,6 @@ export async function main(args, options) {
|
|
|
555
550
|
legacyEnabledPatterns: settingsManager.getEnabledModels(),
|
|
556
551
|
});
|
|
557
552
|
const scopedModels = modelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];
|
|
558
|
-
const favoriteModels = await resolveModelScope(settingsManager.getFavoriteModels() ?? [], modelRegistry);
|
|
559
553
|
const { options: sessionOptions, cliThinkingFromModel, diagnostics: sessionOptionDiagnostics, } = buildSessionOptions(parsed, scopedModels, sessionManager.buildSessionContext().messages.length > 0, modelRegistry, settingsManager);
|
|
560
554
|
diagnostics.push(...sessionOptionDiagnostics);
|
|
561
555
|
if (parsed.apiKey) {
|
|
@@ -576,7 +570,6 @@ export async function main(args, options) {
|
|
|
576
570
|
model: sessionOptions.model,
|
|
577
571
|
thinkingLevel: sessionOptions.thinkingLevel,
|
|
578
572
|
scopedModels: sessionOptions.scopedModels,
|
|
579
|
-
favoriteModels,
|
|
580
573
|
tools: sessionOptions.tools,
|
|
581
574
|
excludeTools: sessionOptions.excludeTools,
|
|
582
575
|
noTools: sessionOptions.noTools,
|
|
@@ -600,7 +593,7 @@ export async function main(args, options) {
|
|
|
600
593
|
});
|
|
601
594
|
time("createAgentSessionRuntime");
|
|
602
595
|
const { services, session, modelFallbackMessage } = runtime;
|
|
603
|
-
const { settingsManager,
|
|
596
|
+
const { settingsManager, resourceLoader } = services;
|
|
604
597
|
configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());
|
|
605
598
|
if (parsed.help) {
|
|
606
599
|
const extensionFlags = resourceLoader
|
|
@@ -609,11 +602,6 @@ export async function main(args, options) {
|
|
|
609
602
|
printHelp(extensionFlags);
|
|
610
603
|
process.exit(0);
|
|
611
604
|
}
|
|
612
|
-
if (parsed.listModels !== undefined) {
|
|
613
|
-
const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
|
|
614
|
-
await listModels(modelRegistry, searchPattern);
|
|
615
|
-
process.exit(0);
|
|
616
|
-
}
|
|
617
605
|
// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC
|
|
618
606
|
let stdinContent;
|
|
619
607
|
if (appMode !== "rpc") {
|
|
@@ -631,14 +619,6 @@ export async function main(args, options) {
|
|
|
631
619
|
if (appMode === "interactive" && deprecationWarnings.length > 0) {
|
|
632
620
|
await showDeprecationWarnings(deprecationWarnings);
|
|
633
621
|
}
|
|
634
|
-
const scopedModels = [...session.scopedModels];
|
|
635
|
-
const favoriteModels = [...session.favoriteModels];
|
|
636
|
-
const narrowedModelIds = scopedModels.length > 0
|
|
637
|
-
? new Set(scopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`))
|
|
638
|
-
: null;
|
|
639
|
-
const favoriteModelsForCycle = narrowedModelIds
|
|
640
|
-
? favoriteModels.filter((favorite) => narrowedModelIds.has(`${favorite.model.provider}/${favorite.model.id}`))
|
|
641
|
-
: favoriteModels;
|
|
642
622
|
time("resolveModelScope");
|
|
643
623
|
reportDiagnostics(runtime.diagnostics);
|
|
644
624
|
if (runtime.diagnostics.some((diagnostic) => diagnostic.type === "error")) {
|
|
@@ -659,27 +639,10 @@ export async function main(args, options) {
|
|
|
659
639
|
await runRpcMode(runtime);
|
|
660
640
|
}
|
|
661
641
|
else if (appMode === "interactive") {
|
|
662
|
-
if (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
|
|
663
|
-
const modelList = scopedModels
|
|
664
|
-
.map((sm) => {
|
|
665
|
-
const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : "";
|
|
666
|
-
return `${sm.model.id}${thinkingStr}`;
|
|
667
|
-
})
|
|
668
|
-
.join(", ");
|
|
669
|
-
console.log(chalk.dim(`Model catalog: ${modelList} ${chalk.gray("(narrowed)")}`));
|
|
670
|
-
}
|
|
671
|
-
if (favoriteModelsForCycle.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
|
|
672
|
-
const modelList = favoriteModelsForCycle
|
|
673
|
-
.map((favorite) => {
|
|
674
|
-
const thinkingStr = favorite.thinkingLevel ? `:${favorite.thinkingLevel}` : "";
|
|
675
|
-
return `${favorite.model.id}${thinkingStr}`;
|
|
676
|
-
})
|
|
677
|
-
.join(", ");
|
|
678
|
-
console.log(chalk.dim(`Favorite models: ${modelList} ${chalk.gray("(Ctrl+P to cycle)")}`));
|
|
679
|
-
}
|
|
680
642
|
const interactiveMode = new InteractiveMode(runtime, {
|
|
681
643
|
migratedProviders,
|
|
682
644
|
modelFallbackMessage,
|
|
645
|
+
autoTrustOnReloadCwd,
|
|
683
646
|
initialMessage,
|
|
684
647
|
initialImages,
|
|
685
648
|
initialMessages: parsed.messages,
|