@bastani/atomic 0.9.16-alpha.4 → 0.9.16-alpha.6
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 +62 -0
- package/README.md +11 -6
- package/dist/builtin/intercom/CHANGELOG.md +15 -0
- package/dist/builtin/intercom/README.md +6 -4
- package/dist/builtin/intercom/broker/broker.ts +34 -8
- package/dist/builtin/intercom/broker/client.ts +13 -0
- package/dist/builtin/intercom/broker/pending-question-index.ts +50 -0
- package/dist/builtin/intercom/broker/send-handler.ts +8 -0
- package/dist/builtin/intercom/index.bundle.mjs +2045 -1211
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/skills/intercom/SKILL.md +20 -19
- package/dist/builtin/mcp/index.bundle.mjs +1778 -1026
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/CHANGELOG.md +11 -0
- package/dist/builtin/subagents/README.md +3 -3
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/subagents/skills/subagent/SKILL.md +4 -4
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +2645 -1506
- package/dist/builtin/web-access/index.bundle.mjs +1754 -1002
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +28 -0
- package/dist/builtin/workflows/README.md +3 -1
- package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -10
- package/dist/builtin/workflows/builtin/goal-runner.ts +57 -12
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +13626 -12023
- package/dist/builtin/workflows/src/index.bundle.mjs +2338 -1279
- package/dist/bun/split-loader.js +2 -1
- package/dist/bun/split-loader.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +6 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/config-package-identity.d.ts.map +1 -1
- package/dist/config-package-identity.js +2 -1
- package/dist/config-package-identity.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +64 -28
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +2 -0
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +25 -5
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +12 -0
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +2 -0
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts +3 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +22 -2
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +3 -0
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +10 -0
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +15 -9
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts +8 -13
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +53 -19
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +12 -0
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +3 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-tool-registry.js +3 -3
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +1 -0
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +1 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +3 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +10 -6
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -3
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +2 -1
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +6 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +3 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +30 -4
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +3 -1
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -1
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +11 -1
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/session-summarization.d.ts.map +1 -1
- package/dist/core/compaction/session-summarization.js +6 -0
- package/dist/core/compaction/session-summarization.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +8 -3
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts +5 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +124 -36
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +18 -4
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +10 -2
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts +11 -2
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/session-events.js.map +1 -1
- package/dist/core/extensions/tool-events.d.ts +13 -3
- package/dist/core/extensions/tool-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-events.js +3 -0
- package/dist/core/extensions/tool-events.js.map +1 -1
- package/dist/core/extensions/types.d.ts +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +2 -2
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +1 -1
- package/dist/core/footer-data-provider.js +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/keybindings.d.ts +17 -16
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +23 -6
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +1 -0
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +9 -5
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/package-manager-git.d.ts.map +1 -1
- package/dist/core/package-manager-git.js +2 -1
- package/dist/core/package-manager-git.js.map +1 -1
- package/dist/core/package-manager-manifest.d.ts.map +1 -1
- package/dist/core/package-manager-manifest.js +2 -1
- package/dist/core/package-manager-manifest.js.map +1 -1
- package/dist/core/package-manager-npm.d.ts.map +1 -1
- package/dist/core/package-manager-npm.js +4 -3
- package/dist/core/package-manager-npm.js.map +1 -1
- package/dist/core/package-manager-operations.d.ts.map +1 -1
- package/dist/core/package-manager-operations.js +2 -1
- package/dist/core/package-manager-operations.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +2 -1
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-files.d.ts.map +1 -1
- package/dist/core/package-manager-resource-files.js +7 -2
- package/dist/core/package-manager-resource-files.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.js +3 -2
- package/dist/core/resource-loader-context-files.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +5 -3
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js +4 -2
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +7 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -2
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +4 -4
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +2 -2
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +4 -3
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js +4 -2
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +2 -0
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +4 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +12 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager-basic-accessors.d.ts +4 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +23 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +10 -2
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +10 -3
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +2 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +15 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ask-user-question/config.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/config.js +2 -1
- package/dist/core/tools/ask-user-question/config.js.map +1 -1
- package/dist/core/tools/bash.d.ts +13 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +9 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/index.d.ts +21 -5
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +45 -13
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +83 -0
- package/dist/core/tools/powershell.d.ts.map +1 -0
- package/dist/core/tools/powershell.js +89 -0
- package/dist/core/tools/powershell.js.map +1 -0
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +2 -1
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/extensions/llama/client.d.ts +6 -0
- package/dist/extensions/llama/client.d.ts.map +1 -1
- package/dist/extensions/llama/client.js +12 -0
- package/dist/extensions/llama/client.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +3 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +25 -8
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index-extensions.d.ts +2 -2
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/main-stdio.d.ts.map +1 -1
- package/dist/main-stdio.js +4 -2
- package/dist/main-stdio.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +10 -3
- package/dist/main.js.map +1 -1
- package/dist/migrations-config-values.d.ts.map +1 -1
- package/dist/migrations-config-values.js +2 -1
- package/dist/migrations-config-values.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +5 -4
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -2
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +27 -16
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +67 -14
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts +7 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js +38 -3
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +5 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -6
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +65 -27
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +2 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.d.ts +1 -1
- package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +9 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +9 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +2 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +11 -10
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +6 -0
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +1 -0
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +7 -0
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js +0 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +3 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.d.ts +16 -1
- package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +62 -3
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +18 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +10 -8
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +6 -5
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +9 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-parse.js +2 -1
- package/dist/modes/interactive/theme/theme-parse.js.map +1 -1
- package/dist/modes/json-event.d.ts +15 -18
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +21 -17
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +4 -0
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +3 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +2 -0
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +11 -7
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +3 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +41 -10
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +61 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/docs/changelog.mdx +1 -1
- package/docs/compaction.md +16 -3
- package/docs/containerization.md +17 -0
- package/docs/custom-provider.md +1 -1
- package/docs/environment-variables.md +3 -3
- package/docs/extensions.md +22 -5
- package/docs/index.md +12 -10
- package/docs/intercom.md +5 -3
- package/docs/keybindings.md +1 -1
- package/docs/llama-cpp.md +1 -1
- package/docs/models.md +2 -0
- package/docs/quickstart.md +80 -9
- package/docs/rpc.md +24 -1
- package/docs/sdk.md +11 -0
- package/docs/settings.md +16 -7
- package/docs/skills.md +3 -2
- package/docs/subagents.md +7 -0
- package/docs/termux.md +1 -1
- package/docs/usage.md +4 -3
- package/docs/windows.md +33 -3
- package/docs/workflows.md +22 -10
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +1 -1
- package/examples/extensions/notify.ts +1 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +73 -65
- package/package.json +11 -13
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { getCapabilities } from "@earendil-works/pi-tui";
|
|
2
2
|
import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.js";
|
|
3
3
|
import { keyDisplayText } from "./keybinding-hints.js";
|
|
4
|
-
import { DEFAULT_PROJECT_TRUST_LABELS
|
|
4
|
+
import { DEFAULT_PROJECT_TRUST_LABELS } from "./settings-selector-options.js";
|
|
5
5
|
import { SelectSubmenu, ThemeSubmenu, WarningSettingsSubmenu } from "./settings-selector-submenus.js";
|
|
6
|
+
/**
|
|
7
|
+
* Sentinel row shown when no default-model catalog entry exists to configure.
|
|
8
|
+
* Upstream uses a double-underscore `none` marker; Atomic must not, because
|
|
9
|
+
* `test/ci/subagents-clean-break-contracts.test.ts` bans that exact literal as
|
|
10
|
+
* a deleted subagent environment key.
|
|
11
|
+
*/
|
|
12
|
+
const NO_DEFAULT_MODELS_VALUE = "__no-models__";
|
|
6
13
|
function insertImageItems(items, config) {
|
|
7
14
|
if (!getCapabilities().images)
|
|
8
15
|
return;
|
|
@@ -107,7 +114,7 @@ function insertUiToggles(items, config) {
|
|
|
107
114
|
insertAfter(items, "terminal-progress", {
|
|
108
115
|
id: "cache-miss-notices",
|
|
109
116
|
label: "Cache miss notices",
|
|
110
|
-
description: "Show
|
|
117
|
+
description: "Show prompt-cache misses and compaction or branch-summary billing",
|
|
111
118
|
currentValue: config.showCacheMissNotices ? "true" : "false",
|
|
112
119
|
values: ["true", "false"],
|
|
113
120
|
});
|
|
@@ -232,18 +239,64 @@ export function buildSettingsItems(config, callbacks) {
|
|
|
232
239
|
}, () => done()),
|
|
233
240
|
},
|
|
234
241
|
{
|
|
235
|
-
id: "thinking",
|
|
236
|
-
label: "
|
|
237
|
-
description: "
|
|
238
|
-
currentValue: config.
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
242
|
+
id: "model-thinking",
|
|
243
|
+
label: "Default thinking level per model",
|
|
244
|
+
description: "Search models and set a startup thinking override",
|
|
245
|
+
currentValue: Object.keys(config.modelThinkingLevels ?? {}).length === 0
|
|
246
|
+
? "none"
|
|
247
|
+
: `${Object.keys(config.modelThinkingLevels ?? {}).length} configured`,
|
|
248
|
+
submenu: (_currentValue, done) => {
|
|
249
|
+
const levels = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
250
|
+
const thinkingCountLabel = () => {
|
|
251
|
+
const count = Object.keys(config.modelThinkingLevels ?? {}).length;
|
|
252
|
+
return count === 0 ? "none" : `${count} configured`;
|
|
253
|
+
};
|
|
254
|
+
const options = (config.availableDefaultModels ?? []).flatMap((model) => {
|
|
255
|
+
const key = `${model.provider}/${model.id}`;
|
|
256
|
+
const available = model.reasoning ? levels : ["off"];
|
|
257
|
+
const items = available.map((level) => ({
|
|
258
|
+
value: `${key}\0${level}`,
|
|
259
|
+
label: `${model.id} [${model.provider}]`,
|
|
260
|
+
description: `${level}${config.modelThinkingLevels?.[key] === level ? " · default" : ""}`,
|
|
261
|
+
}));
|
|
262
|
+
if (config.modelThinkingLevels?.[key] !== undefined)
|
|
263
|
+
items.push({
|
|
264
|
+
value: `${key}\0`,
|
|
265
|
+
label: `${model.id} [${model.provider}]`,
|
|
266
|
+
description: "clear override",
|
|
267
|
+
});
|
|
268
|
+
return items;
|
|
269
|
+
});
|
|
270
|
+
// An empty catalog must explain itself instead of opening a zero-row
|
|
271
|
+
// picker; upstream 2ff8ba6223/5133c9284f use a sentinel row for this.
|
|
272
|
+
if (options.length === 0)
|
|
273
|
+
options.push({
|
|
274
|
+
value: NO_DEFAULT_MODELS_VALUE,
|
|
275
|
+
label: "No models available",
|
|
276
|
+
description: "Log in to a provider or configure an API key first",
|
|
277
|
+
});
|
|
278
|
+
return new SelectSubmenu("Per-Model Thinking Level", "Select a model and thinking level", options, "", (value) => {
|
|
279
|
+
if (value === NO_DEFAULT_MODELS_VALUE) {
|
|
280
|
+
done();
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const [key, level] = value.split("\0");
|
|
284
|
+
const slash = key.indexOf("/");
|
|
285
|
+
const provider = key.slice(0, slash);
|
|
286
|
+
const modelId = key.slice(slash + 1);
|
|
287
|
+
if (level) {
|
|
288
|
+
callbacks.onModelThinkingLevelChange?.(provider, modelId, level);
|
|
289
|
+
config.modelThinkingLevels = { ...config.modelThinkingLevels, [key]: level };
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
callbacks.onModelThinkingLevelRemove?.(provider, modelId);
|
|
293
|
+
const next = { ...config.modelThinkingLevels };
|
|
294
|
+
delete next[key];
|
|
295
|
+
config.modelThinkingLevels = next;
|
|
296
|
+
}
|
|
297
|
+
done(thinkingCountLabel());
|
|
298
|
+
}, () => done(), undefined, true);
|
|
299
|
+
},
|
|
247
300
|
},
|
|
248
301
|
{
|
|
249
302
|
id: "theme",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-selector-items.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getCapabilities, type SettingItem } from \"@earendil-works/pi-tui\";\nimport { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from \"../../../core/http-dispatcher.ts\";\nimport { keyDisplayText } from \"./keybinding-hints.ts\";\nimport { DEFAULT_PROJECT_TRUST_LABELS, THINKING_DESCRIPTIONS } from \"./settings-selector-options.ts\";\nimport { SelectSubmenu, ThemeSubmenu, WarningSettingsSubmenu } from \"./settings-selector-submenus.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\nfunction insertImageItems(items: SettingItem[], config: SettingsConfig): void {\n\tif (!getCapabilities().images) return;\n\n\titems.splice(1, 0, {\n\t\tid: \"show-images\",\n\t\tlabel: \"Show images\",\n\t\tdescription: \"Render images inline in terminal\",\n\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\titems.splice(2, 0, {\n\t\tid: \"image-width-cells\",\n\t\tlabel: \"Image width\",\n\t\tdescription: \"Preferred inline image width in terminal cells\",\n\t\tcurrentValue: String(config.imageWidthCells),\n\t\tvalues: [\"60\", \"80\", \"120\"],\n\t});\n}\n\nfunction insertAfter(items: SettingItem[], afterId: string, item: SettingItem): void {\n\tconst index = items.findIndex((candidate) => candidate.id === afterId);\n\titems.splice(index + 1, 0, item);\n}\n\nfunction insertUiToggles(items: SettingItem[], config: SettingsConfig): void {\n\tconst supportsImages = getCapabilities().images;\n\titems.splice(supportsImages ? 3 : 1, 0, {\n\t\tid: \"auto-resize-images\",\n\t\tlabel: \"Auto-resize images\",\n\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"auto-resize-images\", {\n\t\tid: \"block-images\",\n\t\tlabel: \"Block images\",\n\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"block-images\", {\n\t\tid: \"skill-commands\",\n\t\tlabel: \"Skill commands\",\n\t\tdescription: \"Register skills as /skill:name commands\",\n\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"skill-commands\", {\n\t\tid: \"show-hardware-cursor\",\n\t\tlabel: \"Show hardware cursor\",\n\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"show-hardware-cursor\", {\n\t\tid: \"fullscreen-scrollbar\",\n\t\tlabel: \"Fullscreen scrollbar\",\n\t\tdescription: \"Scrollbar behavior for the fullscreen transcript\",\n\t\tcurrentValue: config.fullscreenScrollbar,\n\t\tvalues: [\"auto\", \"always\", \"hidden\"],\n\t});\n\tinsertAfter(items, \"fullscreen-scrollbar\", {\n\t\tid: \"fullscreen-exit-output\",\n\t\tlabel: \"Fullscreen exit output\",\n\t\tdescription: \"Print the transcript or only a session resume hint when exiting\",\n\t\tcurrentValue: config.fullscreenExitOutput,\n\t\tvalues: [\"transcript\", \"resume-hint\"],\n\t});\n\tinsertAfter(items, \"fullscreen-exit-output\", {\n\t\tid: \"editor-padding\",\n\t\tlabel: \"Editor padding\",\n\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\tcurrentValue: String(config.editorPaddingX),\n\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t});\n\tinsertAfter(items, \"editor-padding\", {\n\t\tid: \"output-padding\",\n\t\tlabel: \"Output padding\",\n\t\tdescription: \"Horizontal padding for rendered chat output (0-1)\",\n\t\tcurrentValue: String(config.outputPad),\n\t\tvalues: [\"0\", \"1\"],\n\t});\n\tinsertAfter(items, \"output-padding\", {\n\t\tid: \"autocomplete-max-visible\",\n\t\tlabel: \"Autocomplete max items\",\n\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t});\n\tinsertAfter(items, \"autocomplete-max-visible\", {\n\t\tid: \"clear-on-shrink\",\n\t\tlabel: \"Clear on shrink\",\n\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"clear-on-shrink\", {\n\t\tid: \"terminal-progress\",\n\t\tlabel: \"Terminal progress\",\n\t\tdescription: \"Show OSC 9;4 progress indicators in the terminal tab bar\",\n\t\tcurrentValue: config.showTerminalProgress ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"terminal-progress\", {\n\t\tid: \"cache-miss-notices\",\n\t\tlabel: \"Cache miss notices\",\n\t\tdescription: \"Show notices when a large prompt cache miss is detected\",\n\t\tcurrentValue: config.showCacheMissNotices ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n}\n\nexport function buildSettingsItems(config: SettingsConfig, callbacks: SettingsCallbacks): SettingItem[] {\n\tconst followUpKey = keyDisplayText(\"app.message.followUp\");\n\tlet currentWarnings = { ...config.warnings };\n\n\tconst items: SettingItem[] = [\n\t\t{\n\t\t\tid: \"autocompact\",\n\t\t\tlabel: \"Auto-compact\",\n\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"steering-mode\",\n\t\t\tlabel: \"Steering mode\",\n\t\t\tdescription:\n\t\t\t\t\"enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\tcurrentValue: config.steeringMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"follow-up-mode\",\n\t\t\tlabel: \"Follow-up mode\",\n\t\t\tdescription: `${followUpKey} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\tcurrentValue: config.followUpMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"transport\",\n\t\t\tlabel: \"Transport\",\n\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\tcurrentValue: config.transport,\n\t\t\tvalues: [\"sse\", \"websocket\", \"websocket-cached\", \"auto\"],\n\t\t},\n\t\t{\n\t\t\tid: \"http-idle-timeout\",\n\t\t\tlabel: \"HTTP idle timeout\",\n\t\t\tdescription:\n\t\t\t\t\"Maximum idle gap while waiting for HTTP headers or body chunks. Disable for local models that pause longer than five minutes.\",\n\t\t\tcurrentValue: formatHttpIdleTimeoutMs(config.httpIdleTimeoutMs),\n\t\t\tvalues: HTTP_IDLE_TIMEOUT_CHOICES.map((choice) => choice.label),\n\t\t},\n\t\t{\n\t\t\tid: \"bash-interceptor\",\n\t\t\tlabel: \"Bash Interceptor\",\n\t\t\tdescription: \"Block shell commands that have dedicated tools\",\n\t\t\tcurrentValue: config.bashInterceptorEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"hide-thinking\",\n\t\t\tlabel: \"Hide thinking\",\n\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"mermaid-rendering\",\n\t\t\tlabel: \"Mermaid diagrams\",\n\t\t\tdescription: \"Render Mermaid code blocks as Unicode diagrams\",\n\t\t\tcurrentValue: config.mermaidRenderingMode,\n\t\t\tvalues: [\"off\", \"final\", \"streaming\"],\n\t\t},\n\t\t{\n\t\t\tid: \"latex-rendering\",\n\t\t\tlabel: \"LaTeX math\",\n\t\t\tdescription: \"Render LaTeX expressions as Unicode math\",\n\t\t\tcurrentValue: config.latexRenderingEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"collapse-changelog\",\n\t\t\tlabel: \"Collapse changelog\",\n\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"quiet-startup\",\n\t\t\tlabel: \"Quiet startup\",\n\t\t\tdescription: \"Disable verbose printing at startup\",\n\t\t\tcurrentValue: config.quietStartup ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"install-telemetry\",\n\t\t\tlabel: \"Install telemetry\",\n\t\t\tdescription: \"Send an anonymous version/update ping after changelog-detected updates\",\n\t\t\tcurrentValue: config.enableInstallTelemetry ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"default-project-trust\",\n\t\t\tlabel: \"Default project trust\",\n\t\t\tdescription: \"Fallback behavior when no extension or saved trust decision decides project trust\",\n\t\t\tcurrentValue: DEFAULT_PROJECT_TRUST_LABELS[config.defaultProjectTrust],\n\t\t\tvalues: Object.values(DEFAULT_PROJECT_TRUST_LABELS),\n\t\t},\n\t\t{\n\t\t\tid: \"double-escape-action\",\n\t\t\tlabel: \"Double-escape action\",\n\t\t\tdescription: \"Action when pressing esc twice with empty editor\",\n\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t},\n\t\t{\n\t\t\tid: \"tree-filter-mode\",\n\t\t\tlabel: \"Tree filter mode\",\n\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"warnings\",\n\t\t\tlabel: \"Warnings\",\n\t\t\tdescription: \"Enable or disable individual warnings\",\n\t\t\tcurrentValue: \"configure\",\n\t\t\tsubmenu: (_currentValue, done) =>\n\t\t\t\tnew WarningSettingsSubmenu(\n\t\t\t\t\tcurrentWarnings,\n\t\t\t\t\t(warnings) => {\n\t\t\t\t\t\tcurrentWarnings = warnings;\n\t\t\t\t\t\tcallbacks.onWarningsChange(warnings);\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"thinking\",\n\t\t\tlabel: \"Thinking level\",\n\t\t\tdescription: \"Reasoning depth for thinking-capable models\",\n\t\t\tcurrentValue: config.thinkingLevel,\n\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\"Thinking Level\",\n\t\t\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\t\t\tconfig.availableThinkingLevels.map((level) => ({\n\t\t\t\t\t\tvalue: level,\n\t\t\t\t\t\tlabel: level,\n\t\t\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t\t\t})),\n\t\t\t\t\tcurrentValue,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tcallbacks.onThinkingLevelChange(value as ThinkingLevel);\n\t\t\t\t\t\tdone(value);\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"theme\",\n\t\t\tlabel: \"Theme\",\n\t\t\tdescription: \"Color theme for the interface\",\n\t\t\tcurrentValue: config.currentTheme,\n\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\tnew ThemeSubmenu(currentValue, config.terminalTheme, config.availableThemes, callbacks, done),\n\t\t},\n\t];\n\n\tinsertImageItems(items, config);\n\tinsertUiToggles(items, config);\n\treturn items;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"settings-selector-items.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getCapabilities, type SettingItem } from \"@earendil-works/pi-tui\";\nimport { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from \"../../../core/http-dispatcher.ts\";\nimport { keyDisplayText } from \"./keybinding-hints.ts\";\nimport { DEFAULT_PROJECT_TRUST_LABELS } from \"./settings-selector-options.ts\";\nimport { SelectSubmenu, ThemeSubmenu, WarningSettingsSubmenu } from \"./settings-selector-submenus.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\n/**\n * Sentinel row shown when no default-model catalog entry exists to configure.\n * Upstream uses a double-underscore `none` marker; Atomic must not, because\n * `test/ci/subagents-clean-break-contracts.test.ts` bans that exact literal as\n * a deleted subagent environment key.\n */\nconst NO_DEFAULT_MODELS_VALUE = \"__no-models__\";\n\nfunction insertImageItems(items: SettingItem[], config: SettingsConfig): void {\n\tif (!getCapabilities().images) return;\n\n\titems.splice(1, 0, {\n\t\tid: \"show-images\",\n\t\tlabel: \"Show images\",\n\t\tdescription: \"Render images inline in terminal\",\n\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\titems.splice(2, 0, {\n\t\tid: \"image-width-cells\",\n\t\tlabel: \"Image width\",\n\t\tdescription: \"Preferred inline image width in terminal cells\",\n\t\tcurrentValue: String(config.imageWidthCells),\n\t\tvalues: [\"60\", \"80\", \"120\"],\n\t});\n}\n\nfunction insertAfter(items: SettingItem[], afterId: string, item: SettingItem): void {\n\tconst index = items.findIndex((candidate) => candidate.id === afterId);\n\titems.splice(index + 1, 0, item);\n}\n\nfunction insertUiToggles(items: SettingItem[], config: SettingsConfig): void {\n\tconst supportsImages = getCapabilities().images;\n\titems.splice(supportsImages ? 3 : 1, 0, {\n\t\tid: \"auto-resize-images\",\n\t\tlabel: \"Auto-resize images\",\n\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"auto-resize-images\", {\n\t\tid: \"block-images\",\n\t\tlabel: \"Block images\",\n\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"block-images\", {\n\t\tid: \"skill-commands\",\n\t\tlabel: \"Skill commands\",\n\t\tdescription: \"Register skills as /skill:name commands\",\n\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"skill-commands\", {\n\t\tid: \"show-hardware-cursor\",\n\t\tlabel: \"Show hardware cursor\",\n\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"show-hardware-cursor\", {\n\t\tid: \"fullscreen-scrollbar\",\n\t\tlabel: \"Fullscreen scrollbar\",\n\t\tdescription: \"Scrollbar behavior for the fullscreen transcript\",\n\t\tcurrentValue: config.fullscreenScrollbar,\n\t\tvalues: [\"auto\", \"always\", \"hidden\"],\n\t});\n\tinsertAfter(items, \"fullscreen-scrollbar\", {\n\t\tid: \"fullscreen-exit-output\",\n\t\tlabel: \"Fullscreen exit output\",\n\t\tdescription: \"Print the transcript or only a session resume hint when exiting\",\n\t\tcurrentValue: config.fullscreenExitOutput,\n\t\tvalues: [\"transcript\", \"resume-hint\"],\n\t});\n\tinsertAfter(items, \"fullscreen-exit-output\", {\n\t\tid: \"editor-padding\",\n\t\tlabel: \"Editor padding\",\n\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\tcurrentValue: String(config.editorPaddingX),\n\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t});\n\tinsertAfter(items, \"editor-padding\", {\n\t\tid: \"output-padding\",\n\t\tlabel: \"Output padding\",\n\t\tdescription: \"Horizontal padding for rendered chat output (0-1)\",\n\t\tcurrentValue: String(config.outputPad),\n\t\tvalues: [\"0\", \"1\"],\n\t});\n\tinsertAfter(items, \"output-padding\", {\n\t\tid: \"autocomplete-max-visible\",\n\t\tlabel: \"Autocomplete max items\",\n\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t});\n\tinsertAfter(items, \"autocomplete-max-visible\", {\n\t\tid: \"clear-on-shrink\",\n\t\tlabel: \"Clear on shrink\",\n\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"clear-on-shrink\", {\n\t\tid: \"terminal-progress\",\n\t\tlabel: \"Terminal progress\",\n\t\tdescription: \"Show OSC 9;4 progress indicators in the terminal tab bar\",\n\t\tcurrentValue: config.showTerminalProgress ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"terminal-progress\", {\n\t\tid: \"cache-miss-notices\",\n\t\tlabel: \"Cache miss notices\",\n\t\tdescription: \"Show prompt-cache misses and compaction or branch-summary billing\",\n\t\tcurrentValue: config.showCacheMissNotices ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n}\n\nexport function buildSettingsItems(config: SettingsConfig, callbacks: SettingsCallbacks): SettingItem[] {\n\tconst followUpKey = keyDisplayText(\"app.message.followUp\");\n\tlet currentWarnings = { ...config.warnings };\n\n\tconst items: SettingItem[] = [\n\t\t{\n\t\t\tid: \"autocompact\",\n\t\t\tlabel: \"Auto-compact\",\n\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"steering-mode\",\n\t\t\tlabel: \"Steering mode\",\n\t\t\tdescription:\n\t\t\t\t\"enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\tcurrentValue: config.steeringMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"follow-up-mode\",\n\t\t\tlabel: \"Follow-up mode\",\n\t\t\tdescription: `${followUpKey} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\tcurrentValue: config.followUpMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"transport\",\n\t\t\tlabel: \"Transport\",\n\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\tcurrentValue: config.transport,\n\t\t\tvalues: [\"sse\", \"websocket\", \"websocket-cached\", \"auto\"],\n\t\t},\n\t\t{\n\t\t\tid: \"http-idle-timeout\",\n\t\t\tlabel: \"HTTP idle timeout\",\n\t\t\tdescription:\n\t\t\t\t\"Maximum idle gap while waiting for HTTP headers or body chunks. Disable for local models that pause longer than five minutes.\",\n\t\t\tcurrentValue: formatHttpIdleTimeoutMs(config.httpIdleTimeoutMs),\n\t\t\tvalues: HTTP_IDLE_TIMEOUT_CHOICES.map((choice) => choice.label),\n\t\t},\n\t\t{\n\t\t\tid: \"bash-interceptor\",\n\t\t\tlabel: \"Bash Interceptor\",\n\t\t\tdescription: \"Block shell commands that have dedicated tools\",\n\t\t\tcurrentValue: config.bashInterceptorEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"hide-thinking\",\n\t\t\tlabel: \"Hide thinking\",\n\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"mermaid-rendering\",\n\t\t\tlabel: \"Mermaid diagrams\",\n\t\t\tdescription: \"Render Mermaid code blocks as Unicode diagrams\",\n\t\t\tcurrentValue: config.mermaidRenderingMode,\n\t\t\tvalues: [\"off\", \"final\", \"streaming\"],\n\t\t},\n\t\t{\n\t\t\tid: \"latex-rendering\",\n\t\t\tlabel: \"LaTeX math\",\n\t\t\tdescription: \"Render LaTeX expressions as Unicode math\",\n\t\t\tcurrentValue: config.latexRenderingEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"collapse-changelog\",\n\t\t\tlabel: \"Collapse changelog\",\n\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"quiet-startup\",\n\t\t\tlabel: \"Quiet startup\",\n\t\t\tdescription: \"Disable verbose printing at startup\",\n\t\t\tcurrentValue: config.quietStartup ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"install-telemetry\",\n\t\t\tlabel: \"Install telemetry\",\n\t\t\tdescription: \"Send an anonymous version/update ping after changelog-detected updates\",\n\t\t\tcurrentValue: config.enableInstallTelemetry ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"default-project-trust\",\n\t\t\tlabel: \"Default project trust\",\n\t\t\tdescription: \"Fallback behavior when no extension or saved trust decision decides project trust\",\n\t\t\tcurrentValue: DEFAULT_PROJECT_TRUST_LABELS[config.defaultProjectTrust],\n\t\t\tvalues: Object.values(DEFAULT_PROJECT_TRUST_LABELS),\n\t\t},\n\t\t{\n\t\t\tid: \"double-escape-action\",\n\t\t\tlabel: \"Double-escape action\",\n\t\t\tdescription: \"Action when pressing esc twice with empty editor\",\n\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t},\n\t\t{\n\t\t\tid: \"tree-filter-mode\",\n\t\t\tlabel: \"Tree filter mode\",\n\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"warnings\",\n\t\t\tlabel: \"Warnings\",\n\t\t\tdescription: \"Enable or disable individual warnings\",\n\t\t\tcurrentValue: \"configure\",\n\t\t\tsubmenu: (_currentValue, done) =>\n\t\t\t\tnew WarningSettingsSubmenu(\n\t\t\t\t\tcurrentWarnings,\n\t\t\t\t\t(warnings) => {\n\t\t\t\t\t\tcurrentWarnings = warnings;\n\t\t\t\t\t\tcallbacks.onWarningsChange(warnings);\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"model-thinking\",\n\t\t\tlabel: \"Default thinking level per model\",\n\t\t\tdescription: \"Search models and set a startup thinking override\",\n\t\t\tcurrentValue:\n\t\t\t\tObject.keys(config.modelThinkingLevels ?? {}).length === 0\n\t\t\t\t\t? \"none\"\n\t\t\t\t\t: `${Object.keys(config.modelThinkingLevels ?? {}).length} configured`,\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst levels: ThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\t\t\t\tconst thinkingCountLabel = () => {\n\t\t\t\t\tconst count = Object.keys(config.modelThinkingLevels ?? {}).length;\n\t\t\t\t\treturn count === 0 ? \"none\" : `${count} configured`;\n\t\t\t\t};\n\t\t\t\tconst options = (config.availableDefaultModels ?? []).flatMap((model) => {\n\t\t\t\t\tconst key = `${model.provider}/${model.id}`;\n\t\t\t\t\tconst available = model.reasoning ? levels : ([\"off\"] as ThinkingLevel[]);\n\t\t\t\t\tconst items = available.map((level) => ({\n\t\t\t\t\t\tvalue: `${key}\\0${level}`,\n\t\t\t\t\t\tlabel: `${model.id} [${model.provider}]`,\n\t\t\t\t\t\tdescription: `${level}${config.modelThinkingLevels?.[key] === level ? \" · default\" : \"\"}`,\n\t\t\t\t\t}));\n\t\t\t\t\tif (config.modelThinkingLevels?.[key] !== undefined)\n\t\t\t\t\t\titems.push({\n\t\t\t\t\t\t\tvalue: `${key}\\0`,\n\t\t\t\t\t\t\tlabel: `${model.id} [${model.provider}]`,\n\t\t\t\t\t\t\tdescription: \"clear override\",\n\t\t\t\t\t\t});\n\t\t\t\t\treturn items;\n\t\t\t\t});\n\t\t\t\t// An empty catalog must explain itself instead of opening a zero-row\n\t\t\t\t// picker; upstream 2ff8ba6223/5133c9284f use a sentinel row for this.\n\t\t\t\tif (options.length === 0)\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: NO_DEFAULT_MODELS_VALUE,\n\t\t\t\t\t\tlabel: \"No models available\",\n\t\t\t\t\t\tdescription: \"Log in to a provider or configure an API key first\",\n\t\t\t\t\t});\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Per-Model Thinking Level\",\n\t\t\t\t\t\"Select a model and thinking level\",\n\t\t\t\t\toptions,\n\t\t\t\t\t\"\",\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tif (value === NO_DEFAULT_MODELS_VALUE) {\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst [key, level] = value.split(\"\\0\");\n\t\t\t\t\t\tconst slash = key.indexOf(\"/\");\n\t\t\t\t\t\tconst provider = key.slice(0, slash);\n\t\t\t\t\t\tconst modelId = key.slice(slash + 1);\n\t\t\t\t\t\tif (level) {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelChange?.(provider, modelId, level as ThinkingLevel);\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = { ...config.modelThinkingLevels, [key]: level as ThinkingLevel };\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelRemove?.(provider, modelId);\n\t\t\t\t\t\t\tconst next = { ...config.modelThinkingLevels };\n\t\t\t\t\t\t\tdelete next[key];\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone(thinkingCountLabel());\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"theme\",\n\t\t\tlabel: \"Theme\",\n\t\t\tdescription: \"Color theme for the interface\",\n\t\t\tcurrentValue: config.currentTheme,\n\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\tnew ThemeSubmenu(currentValue, config.terminalTheme, config.availableThemes, callbacks, done),\n\t\t},\n\t];\n\n\tinsertImageItems(items, config);\n\tinsertUiToggles(items, config);\n\treturn items;\n}\n"]}
|
|
@@ -14,7 +14,13 @@ export declare class WarningSettingsSubmenu extends Container {
|
|
|
14
14
|
}
|
|
15
15
|
export declare class SelectSubmenu extends Container {
|
|
16
16
|
private selectList;
|
|
17
|
-
|
|
17
|
+
private readonly allOptions;
|
|
18
|
+
private readonly currentValue;
|
|
19
|
+
private readonly onSelectValue;
|
|
20
|
+
private readonly onCancelValue;
|
|
21
|
+
private searchInput?;
|
|
22
|
+
private listChildIndex;
|
|
23
|
+
constructor(title: string, description: string, options: SelectItem[], currentValue: string, onSelect: (value: string) => void, onCancel: () => void, onSelectionChange?: (value: string) => void, searchable?: boolean);
|
|
18
24
|
handleInput(data: string): boolean;
|
|
19
25
|
}
|
|
20
26
|
export declare function themeItems(availableThemes: string[]): SelectItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-selector-submenus.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,UAAU,EAAwC,MAAM,wBAAwB,CAAC;AAC1G,OAAO,
|
|
1
|
+
{"version":3,"file":"settings-selector-submenus.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,UAAU,EAAwC,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EACN,SAAS,EAQT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAIN,KAAK,aAAa,EAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAStE;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,SAAS;IACpD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAkB;IAE/B,YAAY,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,EA+BzG;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjC;CACD;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC3C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAK;IAE3B,YACC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,QAAQ,EAAE,MAAM,IAAI,EACpB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAC3C,UAAU,UAAQ,EAoDlB;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiCjC;CACD;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAElE;AA+BD,qBAAa,YAAa,SAAQ,SAAS;IAC1C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAE1B,YACC,mBAAmB,EAAE,MAAM,EAC3B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,EAyBxC;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIjC;IAED,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,iBAAiB;IAqFzB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;CAId"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Container, SelectList, SettingsList, Spacer, Text } from "@earendil-works/pi-tui";
|
|
1
|
+
import { Container, fuzzyFilter, getKeybindings, Input, SelectList, SettingsList, Spacer, Text, } from "@earendil-works/pi-tui";
|
|
2
2
|
import { getSelectListTheme, getSettingsListTheme, parseAutoThemeSetting, theme, } from "../theme/theme.js";
|
|
3
3
|
const SETTINGS_SUBMENU_SELECT_LIST_LAYOUT = {
|
|
4
4
|
minPrimaryColumnWidth: 12,
|
|
@@ -37,13 +37,23 @@ export class WarningSettingsSubmenu extends Container {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
export class SelectSubmenu extends Container {
|
|
40
|
-
constructor(title, description, options, currentValue, onSelect, onCancel, onSelectionChange) {
|
|
40
|
+
constructor(title, description, options, currentValue, onSelect, onCancel, onSelectionChange, searchable = false) {
|
|
41
41
|
super();
|
|
42
|
+
this.listChildIndex = 0;
|
|
43
|
+
this.allOptions = options;
|
|
44
|
+
this.currentValue = currentValue;
|
|
45
|
+
this.onSelectValue = onSelect;
|
|
46
|
+
this.onCancelValue = onCancel;
|
|
42
47
|
this.addChild(new Text(theme.bold(theme.fg("accent", title)), 0, 0));
|
|
43
48
|
if (description) {
|
|
44
49
|
this.addChild(new Spacer(1));
|
|
45
50
|
this.addChild(new Text(theme.fg("muted", description), 0, 0));
|
|
46
51
|
}
|
|
52
|
+
if (searchable) {
|
|
53
|
+
this.addChild(new Spacer(1));
|
|
54
|
+
this.searchInput = new Input();
|
|
55
|
+
this.addChild(this.searchInput);
|
|
56
|
+
}
|
|
47
57
|
this.addChild(new Spacer(1));
|
|
48
58
|
this.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme(), SETTINGS_SUBMENU_SELECT_LIST_LAYOUT);
|
|
49
59
|
const currentIndex = options.findIndex((o) => o.value === currentValue);
|
|
@@ -59,12 +69,37 @@ export class SelectSubmenu extends Container {
|
|
|
59
69
|
onSelectionChange(item.value);
|
|
60
70
|
};
|
|
61
71
|
}
|
|
72
|
+
this.listChildIndex = this.children.length;
|
|
62
73
|
this.addChild(this.selectList);
|
|
63
74
|
this.addChild(new Spacer(1));
|
|
64
75
|
this.addChild(new Text(theme.fg("dim", " enter select · esc back"), 0, 0));
|
|
65
76
|
}
|
|
66
77
|
handleInput(data) {
|
|
67
|
-
this.
|
|
78
|
+
if (!this.searchInput) {
|
|
79
|
+
this.selectList.handleInput(data);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
const kb = getKeybindings();
|
|
83
|
+
if (kb.matches(data, "tui.select.up") ||
|
|
84
|
+
kb.matches(data, "tui.select.down") ||
|
|
85
|
+
kb.matches(data, "tui.select.confirm") ||
|
|
86
|
+
kb.matches(data, "tui.select.cancel")) {
|
|
87
|
+
this.selectList.handleInput(data);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
this.searchInput.handleInput(data);
|
|
91
|
+
const query = this.searchInput.getValue();
|
|
92
|
+
const options = query
|
|
93
|
+
? fuzzyFilter(this.allOptions, query, (item) => `${item.label} ${item.description ?? ""}`)
|
|
94
|
+
: this.allOptions;
|
|
95
|
+
const list = new SelectList(options, Math.min(options.length, 10), getSelectListTheme(), SETTINGS_SUBMENU_SELECT_LIST_LAYOUT);
|
|
96
|
+
const currentIndex = options.findIndex((item) => item.value === this.currentValue);
|
|
97
|
+
if (currentIndex !== -1)
|
|
98
|
+
list.setSelectedIndex(currentIndex);
|
|
99
|
+
list.onSelect = (item) => this.onSelectValue(item.value);
|
|
100
|
+
list.onCancel = this.onCancelValue;
|
|
101
|
+
this.children[this.listChildIndex] = list;
|
|
102
|
+
this.selectList = list;
|
|
68
103
|
return true;
|
|
69
104
|
}
|
|
70
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-selector-submenus.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component, SelectItem, SelectListLayoutOptions, SettingItem } from \"@earendil-works/pi-tui\";\nimport { Container, SelectList, SettingsList, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type { WarningSettings } from \"../../../core/settings-manager.ts\";\nimport {\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\tparseAutoThemeSetting,\n\ttype TerminalTheme,\n\ttheme,\n} from \"../theme/theme.ts\";\nimport type { SettingsCallbacks } from \"./settings-selector-types.ts\";\n\nconst SETTINGS_SUBMENU_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\nconst AUTOMATIC_THEME_VALUE = \"/\";\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class WarningSettingsSubmenu extends Container {\n\tprivate settingsList: SettingsList;\n\tprivate state: WarningSettings;\n\n\tconstructor(warnings: WarningSettings, onChange: (warnings: WarningSettings) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tthis.state = { ...warnings };\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"anthropic-extra-usage\",\n\t\t\t\tlabel: \"Anthropic extra usage\",\n\t\t\t\tdescription: \"Warn when Anthropic subscription auth may use paid extra usage\",\n\t\t\t\tcurrentValue: (this.state.anthropicExtraUsage ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t];\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"anthropic-extra-usage\":\n\t\t\t\t\t\tthis.state = { ...this.state, anthropicExtraUsage: newValue === \"true\" };\n\t\t\t\t\t\tonChange({ ...this.state });\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tthis.settingsList.handleInput(data);\n\t\treturn true;\n\t}\n}\n\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.selectList = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.addChild(this.selectList);\n\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" enter select · esc back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tthis.selectList.handleInput(data);\n\t\treturn true;\n\t}\n}\n\nexport function themeItems(availableThemes: string[]): SelectItem[] {\n\treturn availableThemes.map((name) => ({ value: name, label: name }));\n}\n\nfunction singleModeThemeItems(availableThemes: string[]): SelectItem[] {\n\treturn [\n\t\t{\n\t\t\tvalue: AUTOMATIC_THEME_VALUE,\n\t\t\tlabel: \"Automatic\",\n\t\t\tdescription: \"Use separate themes for light and dark terminal appearance\",\n\t\t},\n\t\t...themeItems(availableThemes),\n\t];\n}\n\nfunction preferredTheme(availableThemes: string[], preferred: string | undefined, fallback: string): string {\n\tif (preferred && availableThemes.includes(preferred)) return preferred;\n\tif (availableThemes.includes(fallback)) return fallback;\n\treturn availableThemes[0] ?? fallback;\n}\n\nfunction defaultAutomaticThemes(\n\tcurrentThemeSetting: string,\n\tavailableThemes: string[],\n): { lightTheme: string; darkTheme: string } {\n\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\tif (autoTheme) return autoTheme;\n\n\tconst currentFixedTheme = currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\tconst themeName = preferredTheme(availableThemes, currentFixedTheme, \"dark\");\n\treturn { lightTheme: themeName, darkTheme: themeName };\n}\n\nexport class ThemeSubmenu extends Container {\n\tprivate inputComponent: Component | undefined;\n\tprivate readonly callbacks: SettingsCallbacks;\n\tprivate readonly availableThemes: string[];\n\tprivate readonly terminalTheme: TerminalTheme;\n\tprivate readonly onDone: (selectedValue?: string) => void;\n\tprivate readonly originalThemeSetting: string;\n\tprivate mode: \"single\" | \"automatic\";\n\tprivate singleTheme: string;\n\tprivate lightTheme: string;\n\tprivate darkTheme: string;\n\n\tconstructor(\n\t\tcurrentThemeSetting: string,\n\t\tterminalTheme: TerminalTheme,\n\t\tavailableThemes: string[],\n\t\tcallbacks: SettingsCallbacks,\n\t\tonDone: (selectedValue?: string) => void,\n\t) {\n\t\tsuper();\n\t\tthis.callbacks = callbacks;\n\t\tthis.availableThemes = availableThemes;\n\t\tthis.terminalTheme = terminalTheme;\n\t\tthis.onDone = onDone;\n\t\tthis.originalThemeSetting = currentThemeSetting;\n\t\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\t\tconst automaticThemes = defaultAutomaticThemes(currentThemeSetting, availableThemes);\n\t\tconst fixedTheme = autoTheme || currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\t\tthis.mode = autoTheme ? \"automatic\" : \"single\";\n\t\tthis.lightTheme = automaticThemes.lightTheme;\n\t\tthis.darkTheme = automaticThemes.darkTheme;\n\t\tthis.singleTheme = preferredTheme(\n\t\t\tavailableThemes,\n\t\t\tfixedTheme ?? (autoTheme ? this.getActiveAutomaticTheme() : undefined),\n\t\t\t\"dark\",\n\t\t);\n\n\t\tif (this.mode === \"automatic\") {\n\t\t\tthis.showAutomaticMenu();\n\t\t} else {\n\t\t\tthis.showSingleMenu();\n\t\t}\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.inputComponent?.handleInput) return false;\n\t\tthis.inputComponent.handleInput(data);\n\t\treturn true;\n\t}\n\n\tprivate setContent(renderComponent: Component, inputComponent: Component = renderComponent): void {\n\t\tthis.clear();\n\t\tthis.addChild(renderComponent);\n\t\tthis.inputComponent = inputComponent;\n\t}\n\n\tprivate showSingleMenu(): void {\n\t\tthis.mode = \"single\";\n\t\tconst menu = new SelectSubmenu(\n\t\t\t\"Theme\",\n\t\t\t\"Select a theme, or choose Automatic to follow terminal appearance.\",\n\t\t\tsingleModeThemeItems(this.availableThemes),\n\t\t\tthis.singleTheme,\n\t\t\t(value) => {\n\t\t\t\tif (value === AUTOMATIC_THEME_VALUE) {\n\t\t\t\t\tthis.mode = \"automatic\";\n\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\tthis.showAutomaticMenu();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.singleTheme = value;\n\t\t\t\tthis.apply(value);\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t\t(value) => {\n\t\t\t\tthis.callbacks.onThemePreview?.(value === AUTOMATIC_THEME_VALUE ? this.getAutomaticThemeSetting() : value);\n\t\t\t},\n\t\t);\n\t\tthis.setContent(menu);\n\t}\n\n\tprivate showAutomaticMenu(): void {\n\t\tthis.mode = \"automatic\";\n\t\tconst content = new Container();\n\t\tcontent.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Automatic Theme\")), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Choose themes for terminal light and dark appearance.\"), 0, 0));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Light/dark detection requires terminal support.\"), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"light-theme\",\n\t\t\t\tlabel: \"Light theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is light\",\n\t\t\t\tcurrentValue: this.lightTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Light Theme\",\n\t\t\t\t\t\t\"Select the theme to use for light terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.lightTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"dark-theme\",\n\t\t\t\tlabel: \"Dark theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is dark\",\n\t\t\t\tcurrentValue: this.darkTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Dark Theme\",\n\t\t\t\t\t\t\"Select the theme to use for dark terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.darkTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"apply\",\n\t\t\t\tlabel: \"Apply\",\n\t\t\t\tdescription: \"Save and go back\",\n\t\t\t\tcurrentValue: \"save and go back\",\n\t\t\t\tvalues: [\"save and go back\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"single-mode\",\n\t\t\t\tlabel: \"Change mode\",\n\t\t\t\tdescription: \"Switch to one theme for light and dark\",\n\t\t\t\tcurrentValue: \"switch to single theme\",\n\t\t\t\tvalues: [\"switch to single theme\"],\n\t\t\t},\n\t\t];\n\n\t\tconst settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"single-mode\":\n\t\t\t\t\t\tthis.mode = \"single\";\n\t\t\t\t\t\tthis.singleTheme = this.getActiveAutomaticTheme();\n\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.singleTheme);\n\t\t\t\t\t\tthis.showSingleMenu();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"apply\":\n\t\t\t\t\t\tthis.apply(this.getAutomaticThemeSetting());\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t);\n\t\tcontent.addChild(settingsList);\n\t\tthis.setContent(content, settingsList);\n\t}\n\n\tprivate createThemeSelect(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\tcurrentValue: string,\n\t\tdone: (selectedValue?: string) => void,\n\t\tonSelect: (value: string) => void,\n\t): SelectSubmenu {\n\t\treturn new SelectSubmenu(\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\tthemeItems(this.availableThemes),\n\t\t\tcurrentValue,\n\t\t\tonSelect,\n\t\t\t() => {\n\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\tdone();\n\t\t\t},\n\t\t\t(value) => this.callbacks.onThemePreview?.(value),\n\t\t);\n\t}\n\n\tprivate getThemeSetting(): string {\n\t\treturn this.mode === \"automatic\" ? this.getAutomaticThemeSetting() : this.singleTheme;\n\t}\n\n\tprivate getActiveAutomaticTheme(): string {\n\t\treturn this.terminalTheme === \"light\" ? this.lightTheme : this.darkTheme;\n\t}\n\n\tprivate getAutomaticThemeSetting(): string {\n\t\treturn `${this.lightTheme}/${this.darkTheme}`;\n\t}\n\n\tprivate apply(themeSetting: string): void {\n\t\tthis.onDone(themeSetting);\n\t}\n\n\tprivate cancel(): void {\n\t\tthis.callbacks.onThemePreview?.(this.originalThemeSetting);\n\t\tthis.onDone();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"settings-selector-submenus.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component, SelectItem, SelectListLayoutOptions, SettingItem } from \"@earendil-works/pi-tui\";\nimport {\n\tContainer,\n\tfuzzyFilter,\n\tgetKeybindings,\n\tInput,\n\tSelectList,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@earendil-works/pi-tui\";\nimport type { WarningSettings } from \"../../../core/settings-manager.ts\";\nimport {\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\tparseAutoThemeSetting,\n\ttype TerminalTheme,\n\ttheme,\n} from \"../theme/theme.ts\";\nimport type { SettingsCallbacks } from \"./settings-selector-types.ts\";\n\nconst SETTINGS_SUBMENU_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\nconst AUTOMATIC_THEME_VALUE = \"/\";\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class WarningSettingsSubmenu extends Container {\n\tprivate settingsList: SettingsList;\n\tprivate state: WarningSettings;\n\n\tconstructor(warnings: WarningSettings, onChange: (warnings: WarningSettings) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tthis.state = { ...warnings };\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"anthropic-extra-usage\",\n\t\t\t\tlabel: \"Anthropic extra usage\",\n\t\t\t\tdescription: \"Warn when Anthropic subscription auth may use paid extra usage\",\n\t\t\t\tcurrentValue: (this.state.anthropicExtraUsage ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t];\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"anthropic-extra-usage\":\n\t\t\t\t\t\tthis.state = { ...this.state, anthropicExtraUsage: newValue === \"true\" };\n\t\t\t\t\t\tonChange({ ...this.state });\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tthis.settingsList.handleInput(data);\n\t\treturn true;\n\t}\n}\n\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\tprivate readonly allOptions: SelectItem[];\n\tprivate readonly currentValue: string;\n\tprivate readonly onSelectValue: (value: string) => void;\n\tprivate readonly onCancelValue: () => void;\n\tprivate searchInput?: Input;\n\tprivate listChildIndex = 0;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t\tsearchable = false,\n\t) {\n\t\tsuper();\n\t\tthis.allOptions = options;\n\t\tthis.currentValue = currentValue;\n\t\tthis.onSelectValue = onSelect;\n\t\tthis.onCancelValue = onCancel;\n\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\tif (searchable) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.searchInput = new Input();\n\t\t\tthis.addChild(this.searchInput);\n\t\t}\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.selectList = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.listChildIndex = this.children.length;\n\t\tthis.addChild(this.selectList);\n\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" enter select · esc back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.searchInput) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tconst kb = getKeybindings();\n\t\tif (\n\t\t\tkb.matches(data, \"tui.select.up\") ||\n\t\t\tkb.matches(data, \"tui.select.down\") ||\n\t\t\tkb.matches(data, \"tui.select.confirm\") ||\n\t\t\tkb.matches(data, \"tui.select.cancel\")\n\t\t) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tthis.searchInput.handleInput(data);\n\t\tconst query = this.searchInput.getValue();\n\t\tconst options = query\n\t\t\t? fuzzyFilter(this.allOptions, query, (item) => `${item.label} ${item.description ?? \"\"}`)\n\t\t\t: this.allOptions;\n\t\tconst list = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\t\tconst currentIndex = options.findIndex((item) => item.value === this.currentValue);\n\t\tif (currentIndex !== -1) list.setSelectedIndex(currentIndex);\n\t\tlist.onSelect = (item) => this.onSelectValue(item.value);\n\t\tlist.onCancel = this.onCancelValue;\n\t\tthis.children[this.listChildIndex] = list;\n\t\tthis.selectList = list;\n\t\treturn true;\n\t}\n}\n\nexport function themeItems(availableThemes: string[]): SelectItem[] {\n\treturn availableThemes.map((name) => ({ value: name, label: name }));\n}\n\nfunction singleModeThemeItems(availableThemes: string[]): SelectItem[] {\n\treturn [\n\t\t{\n\t\t\tvalue: AUTOMATIC_THEME_VALUE,\n\t\t\tlabel: \"Automatic\",\n\t\t\tdescription: \"Use separate themes for light and dark terminal appearance\",\n\t\t},\n\t\t...themeItems(availableThemes),\n\t];\n}\n\nfunction preferredTheme(availableThemes: string[], preferred: string | undefined, fallback: string): string {\n\tif (preferred && availableThemes.includes(preferred)) return preferred;\n\tif (availableThemes.includes(fallback)) return fallback;\n\treturn availableThemes[0] ?? fallback;\n}\n\nfunction defaultAutomaticThemes(\n\tcurrentThemeSetting: string,\n\tavailableThemes: string[],\n): { lightTheme: string; darkTheme: string } {\n\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\tif (autoTheme) return autoTheme;\n\n\tconst currentFixedTheme = currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\tconst themeName = preferredTheme(availableThemes, currentFixedTheme, \"dark\");\n\treturn { lightTheme: themeName, darkTheme: themeName };\n}\n\nexport class ThemeSubmenu extends Container {\n\tprivate inputComponent: Component | undefined;\n\tprivate readonly callbacks: SettingsCallbacks;\n\tprivate readonly availableThemes: string[];\n\tprivate readonly terminalTheme: TerminalTheme;\n\tprivate readonly onDone: (selectedValue?: string) => void;\n\tprivate readonly originalThemeSetting: string;\n\tprivate mode: \"single\" | \"automatic\";\n\tprivate singleTheme: string;\n\tprivate lightTheme: string;\n\tprivate darkTheme: string;\n\n\tconstructor(\n\t\tcurrentThemeSetting: string,\n\t\tterminalTheme: TerminalTheme,\n\t\tavailableThemes: string[],\n\t\tcallbacks: SettingsCallbacks,\n\t\tonDone: (selectedValue?: string) => void,\n\t) {\n\t\tsuper();\n\t\tthis.callbacks = callbacks;\n\t\tthis.availableThemes = availableThemes;\n\t\tthis.terminalTheme = terminalTheme;\n\t\tthis.onDone = onDone;\n\t\tthis.originalThemeSetting = currentThemeSetting;\n\t\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\t\tconst automaticThemes = defaultAutomaticThemes(currentThemeSetting, availableThemes);\n\t\tconst fixedTheme = autoTheme || currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\t\tthis.mode = autoTheme ? \"automatic\" : \"single\";\n\t\tthis.lightTheme = automaticThemes.lightTheme;\n\t\tthis.darkTheme = automaticThemes.darkTheme;\n\t\tthis.singleTheme = preferredTheme(\n\t\t\tavailableThemes,\n\t\t\tfixedTheme ?? (autoTheme ? this.getActiveAutomaticTheme() : undefined),\n\t\t\t\"dark\",\n\t\t);\n\n\t\tif (this.mode === \"automatic\") {\n\t\t\tthis.showAutomaticMenu();\n\t\t} else {\n\t\t\tthis.showSingleMenu();\n\t\t}\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.inputComponent?.handleInput) return false;\n\t\tthis.inputComponent.handleInput(data);\n\t\treturn true;\n\t}\n\n\tprivate setContent(renderComponent: Component, inputComponent: Component = renderComponent): void {\n\t\tthis.clear();\n\t\tthis.addChild(renderComponent);\n\t\tthis.inputComponent = inputComponent;\n\t}\n\n\tprivate showSingleMenu(): void {\n\t\tthis.mode = \"single\";\n\t\tconst menu = new SelectSubmenu(\n\t\t\t\"Theme\",\n\t\t\t\"Select a theme, or choose Automatic to follow terminal appearance.\",\n\t\t\tsingleModeThemeItems(this.availableThemes),\n\t\t\tthis.singleTheme,\n\t\t\t(value) => {\n\t\t\t\tif (value === AUTOMATIC_THEME_VALUE) {\n\t\t\t\t\tthis.mode = \"automatic\";\n\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\tthis.showAutomaticMenu();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.singleTheme = value;\n\t\t\t\tthis.apply(value);\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t\t(value) => {\n\t\t\t\tthis.callbacks.onThemePreview?.(value === AUTOMATIC_THEME_VALUE ? this.getAutomaticThemeSetting() : value);\n\t\t\t},\n\t\t);\n\t\tthis.setContent(menu);\n\t}\n\n\tprivate showAutomaticMenu(): void {\n\t\tthis.mode = \"automatic\";\n\t\tconst content = new Container();\n\t\tcontent.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Automatic Theme\")), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Choose themes for terminal light and dark appearance.\"), 0, 0));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Light/dark detection requires terminal support.\"), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"light-theme\",\n\t\t\t\tlabel: \"Light theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is light\",\n\t\t\t\tcurrentValue: this.lightTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Light Theme\",\n\t\t\t\t\t\t\"Select the theme to use for light terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.lightTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"dark-theme\",\n\t\t\t\tlabel: \"Dark theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is dark\",\n\t\t\t\tcurrentValue: this.darkTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Dark Theme\",\n\t\t\t\t\t\t\"Select the theme to use for dark terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.darkTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"apply\",\n\t\t\t\tlabel: \"Apply\",\n\t\t\t\tdescription: \"Save and go back\",\n\t\t\t\tcurrentValue: \"save and go back\",\n\t\t\t\tvalues: [\"save and go back\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"single-mode\",\n\t\t\t\tlabel: \"Change mode\",\n\t\t\t\tdescription: \"Switch to one theme for light and dark\",\n\t\t\t\tcurrentValue: \"switch to single theme\",\n\t\t\t\tvalues: [\"switch to single theme\"],\n\t\t\t},\n\t\t];\n\n\t\tconst settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"single-mode\":\n\t\t\t\t\t\tthis.mode = \"single\";\n\t\t\t\t\t\tthis.singleTheme = this.getActiveAutomaticTheme();\n\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.singleTheme);\n\t\t\t\t\t\tthis.showSingleMenu();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"apply\":\n\t\t\t\t\t\tthis.apply(this.getAutomaticThemeSetting());\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t);\n\t\tcontent.addChild(settingsList);\n\t\tthis.setContent(content, settingsList);\n\t}\n\n\tprivate createThemeSelect(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\tcurrentValue: string,\n\t\tdone: (selectedValue?: string) => void,\n\t\tonSelect: (value: string) => void,\n\t): SelectSubmenu {\n\t\treturn new SelectSubmenu(\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\tthemeItems(this.availableThemes),\n\t\t\tcurrentValue,\n\t\t\tonSelect,\n\t\t\t() => {\n\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\tdone();\n\t\t\t},\n\t\t\t(value) => this.callbacks.onThemePreview?.(value),\n\t\t);\n\t}\n\n\tprivate getThemeSetting(): string {\n\t\treturn this.mode === \"automatic\" ? this.getAutomaticThemeSetting() : this.singleTheme;\n\t}\n\n\tprivate getActiveAutomaticTheme(): string {\n\t\treturn this.terminalTheme === \"light\" ? this.lightTheme : this.darkTheme;\n\t}\n\n\tprivate getAutomaticThemeSetting(): string {\n\t\treturn `${this.lightTheme}/${this.darkTheme}`;\n\t}\n\n\tprivate apply(themeSetting: string): void {\n\t\tthis.onDone(themeSetting);\n\t}\n\n\tprivate cancel(): void {\n\t\tthis.callbacks.onThemePreview?.(this.originalThemeSetting);\n\t\tthis.onDone();\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Transport } from "@bastani/pi-ai/compat";
|
|
1
|
+
import type { Api, Model, Transport } from "@bastani/pi-ai/compat";
|
|
2
2
|
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
3
3
|
import type { ScrollViewScrollbar } from "@earendil-works/pi-tui";
|
|
4
4
|
import type { DefaultProjectTrust, FullscreenExitOutput, MermaidRenderingMode, WarningSettings } from "../../../core/settings-manager.ts";
|
|
@@ -20,6 +20,8 @@ export interface SettingsConfig {
|
|
|
20
20
|
bashInterceptorEnabled: boolean;
|
|
21
21
|
thinkingLevel: ThinkingLevel;
|
|
22
22
|
availableThinkingLevels: ThinkingLevel[];
|
|
23
|
+
availableDefaultModels?: Model<Api>[];
|
|
24
|
+
modelThinkingLevels?: Record<string, ThinkingLevel>;
|
|
23
25
|
currentTheme: string;
|
|
24
26
|
terminalTheme: TerminalTheme;
|
|
25
27
|
availableThemes: string[];
|
|
@@ -56,6 +58,8 @@ export interface SettingsCallbacks {
|
|
|
56
58
|
onHttpIdleTimeoutChange: (timeoutMs: number) => void;
|
|
57
59
|
onBashInterceptorEnabledChange: (enabled: boolean) => void;
|
|
58
60
|
onThinkingLevelChange: (level: ThinkingLevel) => void;
|
|
61
|
+
onModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;
|
|
62
|
+
onModelThinkingLevelRemove?: (provider: string, modelId: string) => void;
|
|
59
63
|
onThemeChange: (theme: string) => void;
|
|
60
64
|
onThemePreview?: (theme: string) => void;
|
|
61
65
|
onHideThinkingBlockChange: (hidden: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-selector-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-selector-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\nimport type {\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.ts\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: boolean;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, Model, Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\nimport type {\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.ts\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tavailableDefaultModels?: Model<Api>[];\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>;\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: boolean;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;\n\tonModelThinkingLevelRemove?: (provider: string, modelId: string) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
|
-
import { Container, SelectList } from "@earendil-works/pi-tui";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
export declare class ThinkingSelectorComponent extends Container {
|
|
2
|
+
import { Container, type Focusable, SelectList } from "@earendil-works/pi-tui";
|
|
3
|
+
export declare class ThinkingSelectorComponent extends Container implements Focusable {
|
|
4
|
+
private searchInput;
|
|
7
5
|
private selectList;
|
|
8
|
-
|
|
6
|
+
private selectListChildIndex;
|
|
7
|
+
private allItems;
|
|
8
|
+
private readonly onSelectLevel;
|
|
9
|
+
private readonly onCancelSelect;
|
|
10
|
+
private readonly onSelectAsDefault?;
|
|
11
|
+
private _focused;
|
|
12
|
+
get focused(): boolean;
|
|
13
|
+
set focused(value: boolean);
|
|
14
|
+
constructor(currentLevel: ThinkingLevel, availableLevels: ThinkingLevel[], onSelectLevel: (level: ThinkingLevel) => void, onCancelSelect: () => void, onSelectAsDefault?: (level: ThinkingLevel) => void, defaultThinkingLevel?: ThinkingLevel);
|
|
15
|
+
private buildSelectList;
|
|
16
|
+
private applyFilter;
|
|
17
|
+
handleInput(keyData: string): void;
|
|
9
18
|
getSelectList(): SelectList;
|
|
10
19
|
}
|
|
11
20
|
//# sourceMappingURL=thinking-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/thinking-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"thinking-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/thinking-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAMd,UAAU,EAIV,MAAM,wBAAwB,CAAC;AAgBhC,qBAAa,yBAA0B,SAAQ,SAAU,YAAW,SAAS;IAC5E,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAiC;IACpE,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAGzB;IAED,YACC,YAAY,EAAE,aAAa,EAC3B,eAAe,EAAE,aAAa,EAAE,EAChC,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC7C,cAAc,EAAE,MAAM,IAAI,EAC1B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAClD,oBAAoB,CAAC,EAAE,aAAa,EA0BpC;IAED,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAUnB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBjC;IAED,aAAa,IAAI,UAAU,CAE1B;CACD"}
|