@oh-my-pi/pi-coding-agent 8.0.20 → 8.2.0
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 +125 -0
- package/docs/session.md +111 -46
- package/examples/custom-tools/hello/index.ts +1 -1
- package/examples/custom-tools/todo/index.ts +3 -4
- package/examples/extensions/api-demo.ts +0 -1
- package/examples/extensions/chalk-logger.ts +2 -3
- package/examples/extensions/hello.ts +0 -1
- package/examples/extensions/pirate.ts +0 -1
- package/examples/extensions/plan-mode.ts +15 -16
- package/examples/extensions/todo.ts +3 -4
- package/examples/extensions/tools.ts +1 -2
- package/examples/extensions/with-deps/index.ts +0 -1
- package/examples/hooks/auto-commit-on-exit.ts +1 -2
- package/examples/hooks/confirm-destructive.ts +0 -1
- package/examples/hooks/custom-compaction.ts +1 -2
- package/examples/hooks/dirty-repo-guard.ts +0 -1
- package/examples/hooks/file-trigger.ts +3 -4
- package/examples/hooks/git-checkpoint.ts +0 -1
- package/examples/hooks/handoff.ts +3 -4
- package/examples/hooks/permission-gate.ts +1 -2
- package/examples/hooks/protected-paths.ts +1 -2
- package/examples/hooks/qna.ts +2 -3
- package/examples/hooks/snake.ts +4 -5
- package/examples/hooks/status-line.ts +0 -1
- package/examples/sdk/01-minimal.ts +2 -3
- package/examples/sdk/02-custom-model.ts +2 -3
- package/examples/sdk/03-custom-prompt.ts +3 -4
- package/examples/sdk/04-skills.ts +2 -3
- package/examples/sdk/06-extensions.ts +1 -2
- package/examples/sdk/06-hooks.ts +6 -7
- package/examples/sdk/07-context-files.ts +0 -1
- package/examples/sdk/08-prompt-templates.ts +0 -1
- package/examples/sdk/08-slash-commands.ts +0 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +0 -1
- package/examples/sdk/10-settings.ts +0 -1
- package/examples/sdk/11-sessions.ts +0 -1
- package/package.json +54 -23
- package/scripts/format-prompts.ts +0 -1
- package/src/capability/context-file.ts +3 -4
- package/src/capability/extension-module.ts +3 -4
- package/src/capability/extension.ts +3 -4
- package/src/capability/fs.ts +20 -21
- package/src/capability/hook.ts +3 -4
- package/src/capability/index.ts +15 -16
- package/src/capability/instruction.ts +3 -4
- package/src/capability/mcp.ts +3 -4
- package/src/capability/prompt.ts +3 -4
- package/src/capability/rule.ts +3 -4
- package/src/capability/settings.ts +2 -3
- package/src/capability/skill.ts +3 -4
- package/src/capability/slash-command.ts +3 -4
- package/src/capability/ssh.ts +3 -4
- package/src/capability/system-prompt.ts +3 -4
- package/src/capability/tool.ts +3 -4
- package/src/cli/args.ts +5 -6
- package/src/cli/config-cli.ts +6 -7
- package/src/cli/file-processor.ts +19 -17
- package/src/cli/jupyter-cli.ts +105 -0
- package/src/cli/list-models.ts +10 -11
- package/src/cli/plugin-cli.ts +20 -25
- package/src/cli/session-picker.ts +2 -3
- package/src/cli/setup-cli.ts +2 -3
- package/src/cli/stats-cli.ts +2 -3
- package/src/cli/update-cli.ts +25 -22
- package/src/commit/agentic/agent.ts +307 -0
- package/src/commit/agentic/fallback.ts +96 -0
- package/src/commit/agentic/index.ts +351 -0
- package/src/commit/agentic/prompts/analyze-file.md +22 -0
- package/src/commit/agentic/prompts/session-user.md +26 -0
- package/src/commit/agentic/prompts/split-confirm.md +1 -0
- package/src/commit/agentic/prompts/system.md +40 -0
- package/src/commit/agentic/state.ts +69 -0
- package/src/commit/agentic/tools/analyze-file.ts +131 -0
- package/src/commit/agentic/tools/git-file-diff.ts +194 -0
- package/src/commit/agentic/tools/git-hunk.ts +50 -0
- package/src/commit/agentic/tools/git-overview.ts +84 -0
- package/src/commit/agentic/tools/index.ts +56 -0
- package/src/commit/agentic/tools/propose-changelog.ts +128 -0
- package/src/commit/agentic/tools/propose-commit.ts +154 -0
- package/src/commit/agentic/tools/recent-commits.ts +81 -0
- package/src/commit/agentic/tools/split-commit.ts +280 -0
- package/src/commit/agentic/topo-sort.ts +44 -0
- package/src/commit/agentic/trivial.ts +51 -0
- package/src/commit/agentic/validation.ts +200 -0
- package/src/commit/analysis/conventional.ts +165 -0
- package/src/commit/analysis/index.ts +4 -0
- package/src/commit/analysis/scope.ts +242 -0
- package/src/commit/analysis/summary.ts +112 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +36 -0
- package/src/commit/changelog/generate.ts +110 -0
- package/src/commit/changelog/index.ts +233 -0
- package/src/commit/changelog/parse.ts +44 -0
- package/src/commit/cli.ts +93 -0
- package/src/commit/git/diff.ts +148 -0
- package/src/commit/git/errors.ts +11 -0
- package/src/commit/git/index.ts +212 -0
- package/src/commit/git/operations.ts +53 -0
- package/src/commit/index.ts +5 -0
- package/src/commit/map-reduce/index.ts +63 -0
- package/src/commit/map-reduce/map-phase.ts +178 -0
- package/src/commit/map-reduce/reduce-phase.ts +145 -0
- package/src/commit/map-reduce/utils.ts +9 -0
- package/src/commit/message.ts +11 -0
- package/src/commit/model-selection.ts +80 -0
- package/src/commit/pipeline.ts +240 -0
- package/src/commit/prompts/analysis-system.md +155 -0
- package/src/commit/prompts/analysis-user.md +41 -0
- package/src/commit/prompts/changelog-system.md +56 -0
- package/src/commit/prompts/changelog-user.md +19 -0
- package/src/commit/prompts/file-observer-system.md +26 -0
- package/src/commit/prompts/file-observer-user.md +9 -0
- package/src/commit/prompts/reduce-system.md +60 -0
- package/src/commit/prompts/reduce-user.md +17 -0
- package/src/commit/prompts/summary-retry.md +4 -0
- package/src/commit/prompts/summary-system.md +52 -0
- package/src/commit/prompts/summary-user.md +13 -0
- package/src/commit/prompts/types-description.md +2 -0
- package/src/commit/types.ts +109 -0
- package/src/commit/utils/exclusions.ts +42 -0
- package/src/config/file-lock.ts +121 -0
- package/src/config/keybindings.ts +6 -8
- package/src/config/model-registry.ts +65 -38
- package/src/config/model-resolver.ts +18 -19
- package/src/config/prompt-templates.ts +11 -11
- package/src/config/settings-manager.ts +141 -50
- package/src/config.ts +64 -66
- package/src/cursor.ts +11 -9
- package/src/discovery/agents-md.ts +11 -12
- package/src/discovery/builtin.ts +68 -73
- package/src/discovery/claude.ts +41 -42
- package/src/discovery/cline.ts +11 -12
- package/src/discovery/codex.ts +52 -53
- package/src/discovery/cursor.ts +9 -10
- package/src/discovery/gemini.ts +17 -22
- package/src/discovery/github.ts +13 -14
- package/src/discovery/helpers.ts +35 -34
- package/src/discovery/index.ts +22 -24
- package/src/discovery/mcp-json.ts +8 -9
- package/src/discovery/ssh.ts +8 -9
- package/src/discovery/vscode.ts +4 -5
- package/src/discovery/windsurf.ts +6 -7
- package/src/exa/company.ts +1 -2
- package/src/exa/index.ts +2 -3
- package/src/exa/linkedin.ts +1 -2
- package/src/exa/mcp-client.ts +14 -16
- package/src/exa/render.ts +10 -11
- package/src/exa/researcher.ts +1 -2
- package/src/exa/search.ts +1 -2
- package/src/exa/types.ts +0 -1
- package/src/exa/websets.ts +1 -2
- package/src/exec/bash-executor.ts +3 -4
- package/src/exec/exec.ts +0 -1
- package/src/export/custom-share.ts +5 -6
- package/src/export/html/index.ts +24 -21
- package/src/export/ttsr.ts +2 -3
- package/src/extensibility/custom-commands/bundled/review/index.ts +7 -8
- package/src/extensibility/custom-commands/loader.ts +18 -15
- package/src/extensibility/custom-commands/types.ts +2 -3
- package/src/extensibility/custom-tools/loader.ts +11 -12
- package/src/extensibility/custom-tools/types.ts +7 -8
- package/src/extensibility/custom-tools/wrapper.ts +2 -3
- package/src/extensibility/extensions/loader.ts +76 -54
- package/src/extensibility/extensions/runner.ts +11 -12
- package/src/extensibility/extensions/types.ts +20 -27
- package/src/extensibility/extensions/wrapper.ts +3 -4
- package/src/extensibility/hooks/index.ts +1 -1
- package/src/extensibility/hooks/loader.ts +9 -10
- package/src/extensibility/hooks/runner.ts +7 -8
- package/src/extensibility/hooks/tool-wrapper.ts +0 -1
- package/src/extensibility/hooks/types.ts +11 -18
- package/src/extensibility/plugins/doctor.ts +3 -3
- package/src/extensibility/plugins/installer.ts +27 -27
- package/src/extensibility/plugins/loader.ts +59 -56
- package/src/extensibility/plugins/manager.ts +211 -171
- package/src/extensibility/plugins/parser.ts +1 -1
- package/src/extensibility/plugins/paths.ts +8 -8
- package/src/extensibility/skills.ts +63 -60
- package/src/extensibility/slash-commands.ts +10 -10
- package/src/index.ts +54 -54
- package/src/internal-urls/agent-protocol.ts +21 -11
- package/src/internal-urls/artifact-protocol.ts +17 -13
- package/src/internal-urls/router.ts +1 -2
- package/src/internal-urls/rule-protocol.ts +3 -4
- package/src/internal-urls/skill-protocol.ts +3 -4
- package/src/ipy/executor.ts +109 -9
- package/src/ipy/gateway-coordinator.ts +79 -90
- package/src/ipy/kernel.ts +32 -30
- package/src/ipy/modules.ts +13 -13
- package/src/lsp/client.ts +21 -10
- package/src/lsp/clients/biome-client.ts +1 -2
- package/src/lsp/clients/index.ts +3 -3
- package/src/lsp/clients/lsp-linter-client.ts +4 -5
- package/src/lsp/config.ts +15 -15
- package/src/lsp/edits.ts +4 -5
- package/src/lsp/index.ts +43 -44
- package/src/lsp/lspmux.ts +8 -8
- package/src/lsp/render.ts +99 -61
- package/src/lsp/utils.ts +3 -3
- package/src/main.ts +71 -37
- package/src/mcp/client.ts +2 -3
- package/src/mcp/config.ts +5 -6
- package/src/mcp/json-rpc.ts +0 -1
- package/src/mcp/loader.ts +6 -7
- package/src/mcp/manager.ts +17 -18
- package/src/mcp/tool-bridge.ts +4 -9
- package/src/mcp/tool-cache.ts +2 -3
- package/src/mcp/transports/http.ts +2 -4
- package/src/mcp/transports/stdio.ts +1 -2
- package/src/migrations.ts +63 -52
- package/src/modes/components/armin.ts +4 -5
- package/src/modes/components/assistant-message.ts +33 -5
- package/src/modes/components/bash-execution.ts +7 -8
- package/src/modes/components/bordered-loader.ts +3 -3
- package/src/modes/components/branch-summary-message.ts +3 -3
- package/src/modes/components/compaction-summary-message.ts +3 -3
- package/src/modes/components/countdown-timer.ts +0 -1
- package/src/modes/components/custom-message.ts +5 -5
- package/src/modes/components/diff.ts +1 -1
- package/src/modes/components/dynamic-border.ts +2 -2
- package/src/modes/components/extensions/extension-dashboard.ts +6 -7
- package/src/modes/components/extensions/extension-list.ts +2 -3
- package/src/modes/components/extensions/inspector-panel.ts +3 -4
- package/src/modes/components/extensions/state-manager.ts +25 -26
- package/src/modes/components/extensions/types.ts +1 -2
- package/src/modes/components/footer.ts +47 -43
- package/src/modes/components/history-search.ts +2 -2
- package/src/modes/components/hook-editor.ts +3 -4
- package/src/modes/components/hook-input.ts +2 -3
- package/src/modes/components/hook-message.ts +5 -5
- package/src/modes/components/hook-selector.ts +2 -3
- package/src/modes/components/keybinding-hints.ts +2 -3
- package/src/modes/components/login-dialog.ts +2 -2
- package/src/modes/components/model-selector.ts +12 -12
- package/src/modes/components/oauth-selector.ts +2 -2
- package/src/modes/components/plugin-settings.ts +20 -20
- package/src/modes/components/python-execution.ts +7 -8
- package/src/modes/components/queue-mode-selector.ts +3 -3
- package/src/modes/components/read-tool-group.ts +2 -2
- package/src/modes/components/session-selector.ts +4 -4
- package/src/modes/components/settings-defs.ts +77 -69
- package/src/modes/components/settings-selector.ts +16 -16
- package/src/modes/components/show-images-selector.ts +2 -2
- package/src/modes/components/status-line/segments.ts +4 -4
- package/src/modes/components/status-line/separators.ts +1 -1
- package/src/modes/components/status-line/types.ts +2 -2
- package/src/modes/components/status-line-segment-editor.ts +7 -8
- package/src/modes/components/status-line.ts +12 -12
- package/src/modes/components/theme-selector.ts +8 -7
- package/src/modes/components/thinking-selector.ts +4 -4
- package/src/modes/components/todo-display.ts +2 -2
- package/src/modes/components/todo-reminder.ts +4 -4
- package/src/modes/components/tool-execution.ts +16 -19
- package/src/modes/components/tree-selector.ts +12 -12
- package/src/modes/components/ttsr-notification.ts +5 -5
- package/src/modes/components/user-message-selector.ts +1 -1
- package/src/modes/components/user-message.ts +1 -1
- package/src/modes/components/visual-truncate.ts +0 -1
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +46 -47
- package/src/modes/controllers/event-controller.ts +16 -20
- package/src/modes/controllers/extension-ui-controller.ts +40 -46
- package/src/modes/controllers/input-controller.ts +17 -18
- package/src/modes/controllers/selector-controller.ts +103 -91
- package/src/modes/index.ts +3 -3
- package/src/modes/interactive-mode.ts +31 -31
- package/src/modes/print-mode.ts +12 -13
- package/src/modes/rpc/rpc-client.ts +7 -8
- package/src/modes/rpc/rpc-mode.ts +24 -28
- package/src/modes/rpc/rpc-types.ts +3 -4
- package/src/modes/theme/mermaid-cache.ts +89 -0
- package/src/modes/theme/theme.ts +130 -53
- package/src/modes/types.ts +10 -10
- package/src/modes/utils/ui-helpers.ts +17 -17
- package/src/patch/applicator.ts +18 -19
- package/src/patch/diff.ts +1 -2
- package/src/patch/fuzzy.ts +1 -2
- package/src/patch/index.ts +11 -18
- package/src/patch/normalize.ts +4 -4
- package/src/patch/normative.ts +1 -2
- package/src/patch/parser.ts +8 -9
- package/src/patch/shared.ts +43 -16
- package/src/prompts/tools/task.md +2 -0
- package/src/sdk.ts +100 -65
- package/src/session/agent-session.ts +84 -85
- package/src/session/agent-storage.ts +43 -39
- package/src/session/artifacts.ts +32 -10
- package/src/session/auth-storage.ts +50 -39
- package/src/session/compaction/branch-summarization.ts +7 -10
- package/src/session/compaction/compaction.ts +8 -19
- package/src/session/compaction/utils.ts +6 -9
- package/src/session/history-storage.ts +10 -10
- package/src/session/messages.ts +4 -5
- package/src/session/session-manager.ts +76 -65
- package/src/session/session-storage.ts +57 -69
- package/src/session/storage-migration.ts +14 -56
- package/src/session/streaming-output.ts +2 -2
- package/src/ssh/connection-manager.ts +43 -50
- package/src/ssh/ssh-executor.ts +2 -2
- package/src/ssh/sshfs-mount.ts +11 -18
- package/src/system-prompt.ts +28 -35
- package/src/task/agents.ts +45 -30
- package/src/task/commands.ts +6 -7
- package/src/task/discovery.ts +39 -76
- package/src/task/executor.ts +14 -15
- package/src/task/index.ts +40 -34
- package/src/task/output-manager.ts +93 -0
- package/src/task/parallel.ts +0 -1
- package/src/task/render.ts +24 -30
- package/src/task/subprocess-tool-registry.ts +1 -2
- package/src/task/worker-protocol.ts +3 -3
- package/src/task/worker.ts +33 -39
- package/src/task/worktree.ts +19 -19
- package/src/tools/ask.ts +41 -20
- package/src/tools/bash-interceptor.ts +1 -5
- package/src/tools/bash.ts +91 -97
- package/src/tools/calculator.ts +49 -47
- package/src/tools/complete.ts +4 -5
- package/src/tools/context.ts +2 -2
- package/src/tools/fetch.ts +84 -124
- package/src/tools/find.ts +94 -98
- package/src/tools/gemini-image.ts +14 -14
- package/src/tools/grep.ts +100 -116
- package/src/tools/index.ts +80 -55
- package/src/tools/list-limit.ts +1 -1
- package/src/tools/ls.ts +44 -70
- package/src/tools/notebook.ts +51 -67
- package/src/tools/output-meta.ts +3 -4
- package/src/tools/output-utils.ts +2 -2
- package/src/tools/path-utils.ts +5 -5
- package/src/tools/python.ts +104 -217
- package/src/tools/read.ts +92 -33
- package/src/tools/render-utils.ts +8 -23
- package/src/tools/renderers.ts +6 -7
- package/src/tools/review.ts +8 -11
- package/src/tools/ssh.ts +69 -49
- package/src/tools/todo-write.ts +37 -25
- package/src/tools/tool-errors.ts +3 -3
- package/src/tools/tool-result.ts +3 -8
- package/src/tools/write.ts +99 -75
- package/src/tui/code-cell.ts +109 -0
- package/src/tui/file-list.ts +47 -0
- package/src/tui/index.ts +11 -0
- package/src/tui/output-block.ts +72 -0
- package/src/tui/status-line.ts +39 -0
- package/src/tui/tree-list.ts +55 -0
- package/src/tui/types.ts +16 -0
- package/src/tui/utils.ts +48 -0
- package/src/utils/changelog.ts +9 -10
- package/src/utils/clipboard.ts +11 -11
- package/src/utils/file-mentions.ts +4 -10
- package/src/utils/frontmatter.ts +6 -3
- package/src/utils/fuzzy.ts +2 -2
- package/src/utils/image-convert.ts +1 -1
- package/src/utils/image-resize.ts +1 -1
- package/src/utils/mime.ts +2 -2
- package/src/utils/shell-snapshot.ts +11 -13
- package/src/utils/shell.ts +4 -5
- package/src/utils/title-generator.ts +8 -9
- package/src/utils/tools-manager.ts +23 -23
- package/src/vendor/photon/index.js +1099 -1059
- package/src/vendor/photon/photon_rs_bg.wasm +0 -0
- package/src/web/scrapers/artifacthub.ts +1 -1
- package/src/web/scrapers/arxiv.ts +2 -2
- package/src/web/scrapers/bluesky.ts +2 -2
- package/src/web/scrapers/cheatsh.ts +1 -1
- package/src/web/scrapers/chocolatey.ts +2 -2
- package/src/web/scrapers/choosealicense.ts +5 -5
- package/src/web/scrapers/cisa-kev.ts +1 -1
- package/src/web/scrapers/crossref.ts +2 -2
- package/src/web/scrapers/devto.ts +3 -3
- package/src/web/scrapers/discogs.ts +3 -4
- package/src/web/scrapers/discourse.ts +1 -1
- package/src/web/scrapers/dockerhub.ts +1 -1
- package/src/web/scrapers/fdroid.ts +2 -2
- package/src/web/scrapers/firefox-addons.ts +3 -3
- package/src/web/scrapers/flathub.ts +1 -1
- package/src/web/scrapers/github.ts +3 -3
- package/src/web/scrapers/gitlab.ts +4 -4
- package/src/web/scrapers/hackernews.ts +2 -2
- package/src/web/scrapers/huggingface.ts +1 -1
- package/src/web/scrapers/iacr.ts +2 -2
- package/src/web/scrapers/index.ts +0 -1
- package/src/web/scrapers/jetbrains-marketplace.ts +1 -1
- package/src/web/scrapers/lemmy.ts +2 -2
- package/src/web/scrapers/maven.ts +2 -2
- package/src/web/scrapers/mdn.ts +2 -4
- package/src/web/scrapers/metacpan.ts +2 -2
- package/src/web/scrapers/musicbrainz.ts +1 -2
- package/src/web/scrapers/npm.ts +1 -1
- package/src/web/scrapers/nuget.ts +2 -2
- package/src/web/scrapers/nvd.ts +3 -3
- package/src/web/scrapers/ollama.ts +7 -9
- package/src/web/scrapers/opencorporates.ts +2 -2
- package/src/web/scrapers/openlibrary.ts +6 -6
- package/src/web/scrapers/orcid.ts +0 -1
- package/src/web/scrapers/osv.ts +2 -2
- package/src/web/scrapers/packagist.ts +1 -1
- package/src/web/scrapers/pubmed.ts +1 -2
- package/src/web/scrapers/rawg.ts +2 -2
- package/src/web/scrapers/readthedocs.ts +1 -2
- package/src/web/scrapers/repology.ts +2 -2
- package/src/web/scrapers/rfc.ts +1 -1
- package/src/web/scrapers/searchcode.ts +2 -2
- package/src/web/scrapers/semantic-scholar.ts +1 -1
- package/src/web/scrapers/snapcraft.ts +2 -2
- package/src/web/scrapers/sourcegraph.ts +1 -1
- package/src/web/scrapers/spdx.ts +3 -3
- package/src/web/scrapers/spotify.ts +0 -1
- package/src/web/scrapers/twitter.ts +1 -1
- package/src/web/scrapers/types.ts +1 -2
- package/src/web/scrapers/utils.ts +5 -5
- package/src/web/scrapers/wikidata.ts +3 -3
- package/src/web/scrapers/youtube.ts +9 -14
- package/src/web/search/auth.ts +5 -10
- package/src/web/search/index.ts +11 -21
- package/src/web/search/providers/anthropic.ts +3 -9
- package/src/web/search/providers/exa.ts +6 -10
- package/src/web/search/providers/perplexity.ts +5 -5
- package/src/web/search/render.ts +129 -175
- package/tsconfig.json +0 -42
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* 2. Add the definition here
|
|
8
8
|
* 3. Add the handler in interactive-mode.ts settingsHandlers
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
import type { ThinkingLevel } from "@oh-my-pi/pi-agent-core";
|
|
11
|
+
import { getCapabilities } from "@oh-my-pi/pi-tui";
|
|
12
12
|
import type {
|
|
13
13
|
ImageProviderOption,
|
|
14
14
|
NotificationMethod,
|
|
@@ -19,8 +19,7 @@ import type {
|
|
|
19
19
|
StatusLineSeparatorStyle,
|
|
20
20
|
SymbolPreset,
|
|
21
21
|
WebSearchProviderOption,
|
|
22
|
-
} from "
|
|
23
|
-
import { getCapabilities } from "@oh-my-pi/pi-tui";
|
|
22
|
+
} from "../../config/settings-manager";
|
|
24
23
|
import { getPreset } from "./status-line/presets";
|
|
25
24
|
|
|
26
25
|
// Setting value types
|
|
@@ -98,7 +97,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
98
97
|
type: "boolean",
|
|
99
98
|
label: "Auto-compact",
|
|
100
99
|
description: "Automatically compact context when it gets too large",
|
|
101
|
-
get:
|
|
100
|
+
get: sm => sm.getCompactionEnabled(),
|
|
102
101
|
set: (sm, v) => sm.setCompactionEnabled(v),
|
|
103
102
|
},
|
|
104
103
|
{
|
|
@@ -107,7 +106,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
107
106
|
type: "boolean",
|
|
108
107
|
label: "Branch summaries",
|
|
109
108
|
description: "Prompt to summarize when leaving a branch",
|
|
110
|
-
get:
|
|
109
|
+
get: sm => sm.getBranchSummaryEnabled(),
|
|
111
110
|
set: (sm, v) => sm.setBranchSummaryEnabled(v),
|
|
112
111
|
},
|
|
113
112
|
{
|
|
@@ -116,7 +115,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
116
115
|
type: "boolean",
|
|
117
116
|
label: "Todo completion",
|
|
118
117
|
description: "Remind agent to complete todos before stopping",
|
|
119
|
-
get:
|
|
118
|
+
get: sm => sm.getTodoCompletionEnabled(),
|
|
120
119
|
set: (sm, v) => sm.setTodoCompletionEnabled(v),
|
|
121
120
|
},
|
|
122
121
|
{
|
|
@@ -125,7 +124,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
125
124
|
type: "submenu",
|
|
126
125
|
label: "Todo max reminders",
|
|
127
126
|
description: "Maximum reminders to complete todos before giving up",
|
|
128
|
-
get:
|
|
127
|
+
get: sm => String(sm.getTodoCompletionMaxReminders()),
|
|
129
128
|
set: (sm, v) => sm.setTodoCompletionMaxReminders(Number.parseInt(v, 10)),
|
|
130
129
|
getOptions: () => [
|
|
131
130
|
{ value: "1", label: "1 reminder" },
|
|
@@ -141,7 +140,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
141
140
|
label: "Steering mode",
|
|
142
141
|
description: "How to process queued messages while agent is working",
|
|
143
142
|
values: ["one-at-a-time", "all"],
|
|
144
|
-
get:
|
|
143
|
+
get: sm => sm.getSteeringMode(),
|
|
145
144
|
set: (sm, v) => sm.setSteeringMode(v as "all" | "one-at-a-time"),
|
|
146
145
|
},
|
|
147
146
|
{
|
|
@@ -151,7 +150,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
151
150
|
label: "Follow-up mode",
|
|
152
151
|
description: "How to drain follow-up messages after a turn completes",
|
|
153
152
|
values: ["one-at-a-time", "all"],
|
|
154
|
-
get:
|
|
153
|
+
get: sm => sm.getFollowUpMode(),
|
|
155
154
|
set: (sm, v) => sm.setFollowUpMode(v as "one-at-a-time" | "all"),
|
|
156
155
|
},
|
|
157
156
|
{
|
|
@@ -161,7 +160,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
161
160
|
label: "Interrupt mode",
|
|
162
161
|
description: "When steering messages interrupt tool execution",
|
|
163
162
|
values: ["immediate", "wait"],
|
|
164
|
-
get:
|
|
163
|
+
get: sm => sm.getInterruptMode(),
|
|
165
164
|
set: (sm, v) => sm.setInterruptMode(v as "immediate" | "wait"),
|
|
166
165
|
},
|
|
167
166
|
{
|
|
@@ -170,7 +169,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
170
169
|
type: "submenu",
|
|
171
170
|
label: "Retry max attempts",
|
|
172
171
|
description: "Maximum retry attempts on API errors",
|
|
173
|
-
get:
|
|
172
|
+
get: sm => String(sm.getRetryMaxRetries()),
|
|
174
173
|
set: (sm, v) => sm.setRetryMaxRetries(Number.parseInt(v, 10)),
|
|
175
174
|
getOptions: () => [
|
|
176
175
|
{ value: "1", label: "1 retry" },
|
|
@@ -187,7 +186,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
187
186
|
label: "Completion notification",
|
|
188
187
|
description: "Notify when the agent completes",
|
|
189
188
|
values: ["auto", "bell", "osc99", "osc9", "off"],
|
|
190
|
-
get:
|
|
189
|
+
get: sm => sm.getNotificationOnComplete(),
|
|
191
190
|
set: (sm, v) => sm.setNotificationOnComplete(v as NotificationMethod),
|
|
192
191
|
},
|
|
193
192
|
{
|
|
@@ -196,7 +195,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
196
195
|
type: "boolean",
|
|
197
196
|
label: "Startup quiet",
|
|
198
197
|
description: "Skip welcome screen and startup status messages",
|
|
199
|
-
get:
|
|
198
|
+
get: sm => sm.getStartupQuiet(),
|
|
200
199
|
set: (sm, v) => sm.setStartupQuiet(v),
|
|
201
200
|
},
|
|
202
201
|
{
|
|
@@ -205,7 +204,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
205
204
|
type: "boolean",
|
|
206
205
|
label: "Collapse changelog",
|
|
207
206
|
description: "Show condensed changelog after updates",
|
|
208
|
-
get:
|
|
207
|
+
get: sm => sm.getCollapseChangelog(),
|
|
209
208
|
set: (sm, v) => sm.setCollapseChangelog(v),
|
|
210
209
|
},
|
|
211
210
|
{
|
|
@@ -214,7 +213,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
214
213
|
type: "boolean",
|
|
215
214
|
label: "Normative rewrite",
|
|
216
215
|
description: "Rewrite tool call arguments to normalized format in session history",
|
|
217
|
-
get:
|
|
216
|
+
get: sm => sm.getNormativeRewrite(),
|
|
218
217
|
set: (sm, v) => sm.setNormativeRewrite(v),
|
|
219
218
|
},
|
|
220
219
|
{
|
|
@@ -224,7 +223,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
224
223
|
label: "Double-escape action",
|
|
225
224
|
description: "Action when pressing Escape twice with empty editor",
|
|
226
225
|
values: ["tree", "branch"],
|
|
227
|
-
get:
|
|
226
|
+
get: sm => sm.getDoubleEscapeAction(),
|
|
228
227
|
set: (sm, v) => sm.setDoubleEscapeAction(v as "branch" | "tree"),
|
|
229
228
|
},
|
|
230
229
|
|
|
@@ -237,7 +236,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
237
236
|
type: "boolean",
|
|
238
237
|
label: "Bash interceptor",
|
|
239
238
|
description: "Block shell commands that have dedicated tools (grep, cat, etc.)",
|
|
240
|
-
get:
|
|
239
|
+
get: sm => sm.getBashInterceptorEnabled(),
|
|
241
240
|
set: (sm, v) => sm.setBashInterceptorEnabled(v),
|
|
242
241
|
},
|
|
243
242
|
{
|
|
@@ -246,7 +245,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
246
245
|
type: "boolean",
|
|
247
246
|
label: "Intercept simple ls",
|
|
248
247
|
description: "Intercept bare ls commands (when bash interceptor is enabled)",
|
|
249
|
-
get:
|
|
248
|
+
get: sm => sm.getBashInterceptorSimpleLsEnabled(),
|
|
250
249
|
set: (sm, v) => sm.setBashInterceptorSimpleLsEnabled(v),
|
|
251
250
|
},
|
|
252
251
|
{
|
|
@@ -256,7 +255,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
256
255
|
label: "Python tool mode",
|
|
257
256
|
description: "How Python code is executed",
|
|
258
257
|
values: ["ipy-only", "bash-only", "both"],
|
|
259
|
-
get:
|
|
258
|
+
get: sm => sm.getPythonToolMode(),
|
|
260
259
|
set: (sm, v) => sm.setPythonToolMode(v as PythonToolMode),
|
|
261
260
|
},
|
|
262
261
|
{
|
|
@@ -266,7 +265,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
266
265
|
label: "Python kernel mode",
|
|
267
266
|
description: "Whether to keep IPython kernel alive across calls",
|
|
268
267
|
values: ["session", "per-call"],
|
|
269
|
-
get:
|
|
268
|
+
get: sm => sm.getPythonKernelMode(),
|
|
270
269
|
set: (sm, v) => sm.setPythonKernelMode(v as PythonKernelMode),
|
|
271
270
|
},
|
|
272
271
|
{
|
|
@@ -275,7 +274,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
275
274
|
type: "boolean",
|
|
276
275
|
label: "Python shared gateway",
|
|
277
276
|
description: "Share IPython kernel gateway across pi instances",
|
|
278
|
-
get:
|
|
277
|
+
get: sm => sm.getPythonSharedGateway(),
|
|
279
278
|
set: (sm, v) => sm.setPythonSharedGateway(v),
|
|
280
279
|
},
|
|
281
280
|
{
|
|
@@ -284,7 +283,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
284
283
|
type: "boolean",
|
|
285
284
|
label: "Edit fuzzy match",
|
|
286
285
|
description: "Accept high-confidence fuzzy matches for whitespace/indentation differences",
|
|
287
|
-
get:
|
|
286
|
+
get: sm => sm.getEditFuzzyMatch(),
|
|
288
287
|
set: (sm, v) => sm.setEditFuzzyMatch(v),
|
|
289
288
|
},
|
|
290
289
|
{
|
|
@@ -293,7 +292,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
293
292
|
type: "submenu",
|
|
294
293
|
label: "Edit fuzzy threshold",
|
|
295
294
|
description: "Similarity threshold for fuzzy matches (higher = stricter)",
|
|
296
|
-
get:
|
|
295
|
+
get: sm => sm.getEditFuzzyThreshold().toFixed(2),
|
|
297
296
|
set: (sm, v) => sm.setEditFuzzyThreshold(Number(v)),
|
|
298
297
|
getOptions: () => [
|
|
299
298
|
{ value: "0.85", label: "0.85", description: "Lenient" },
|
|
@@ -308,7 +307,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
308
307
|
type: "boolean",
|
|
309
308
|
label: "Edit patch mode",
|
|
310
309
|
description: "Use codex-style apply-patch format instead of old_text/new_text for edits",
|
|
311
|
-
get:
|
|
310
|
+
get: sm => sm.getEditPatchMode(),
|
|
312
311
|
set: (sm, v) => sm.setEditPatchMode(v),
|
|
313
312
|
},
|
|
314
313
|
{
|
|
@@ -317,7 +316,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
317
316
|
type: "boolean",
|
|
318
317
|
label: "Edit streaming abort",
|
|
319
318
|
description: "Abort streaming edit tool calls when patch preview fails",
|
|
320
|
-
get:
|
|
319
|
+
get: sm => sm.getEditStreamingAbort(),
|
|
321
320
|
set: (sm, v) => sm.setEditStreamingAbort(v),
|
|
322
321
|
},
|
|
323
322
|
{
|
|
@@ -326,7 +325,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
326
325
|
type: "boolean",
|
|
327
326
|
label: "Read line numbers",
|
|
328
327
|
description: "Prepend line numbers to read tool output by default",
|
|
329
|
-
get:
|
|
328
|
+
get: sm => sm.getReadLineNumbers(),
|
|
330
329
|
set: (sm, v) => sm.setReadLineNumbers(v),
|
|
331
330
|
},
|
|
332
331
|
{
|
|
@@ -335,7 +334,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
335
334
|
type: "boolean",
|
|
336
335
|
label: "MCP project config",
|
|
337
336
|
description: "Load .mcp.json/mcp.json from project root",
|
|
338
|
-
get:
|
|
337
|
+
get: sm => sm.getMCPProjectConfigEnabled(),
|
|
339
338
|
set: (sm, v) => sm.setMCPProjectConfigEnabled(v),
|
|
340
339
|
},
|
|
341
340
|
{
|
|
@@ -344,7 +343,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
344
343
|
type: "boolean",
|
|
345
344
|
label: "Skill commands",
|
|
346
345
|
description: "Register skills as /skill:name commands",
|
|
347
|
-
get:
|
|
346
|
+
get: sm => sm.getEnableSkillCommands(),
|
|
348
347
|
set: (sm, v) => sm.setEnableSkillCommands(v),
|
|
349
348
|
},
|
|
350
349
|
{
|
|
@@ -353,7 +352,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
353
352
|
type: "boolean",
|
|
354
353
|
label: "Claude user commands",
|
|
355
354
|
description: "Load commands from ~/.claude/commands/",
|
|
356
|
-
get:
|
|
355
|
+
get: sm => sm.getCommandsEnableClaudeUser(),
|
|
357
356
|
set: (sm, v) => sm.setCommandsEnableClaudeUser(v),
|
|
358
357
|
},
|
|
359
358
|
{
|
|
@@ -362,7 +361,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
362
361
|
type: "boolean",
|
|
363
362
|
label: "Claude project commands",
|
|
364
363
|
description: "Load commands from .claude/commands/",
|
|
365
|
-
get:
|
|
364
|
+
get: sm => sm.getCommandsEnableClaudeProject(),
|
|
366
365
|
set: (sm, v) => sm.setCommandsEnableClaudeProject(v),
|
|
367
366
|
},
|
|
368
367
|
{
|
|
@@ -371,7 +370,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
371
370
|
type: "submenu",
|
|
372
371
|
label: "Web search provider",
|
|
373
372
|
description: "Provider for web search tool",
|
|
374
|
-
get:
|
|
373
|
+
get: sm => sm.getWebSearchProvider(),
|
|
375
374
|
set: (sm, v) => sm.setWebSearchProvider(v as WebSearchProviderOption),
|
|
376
375
|
getOptions: () => [
|
|
377
376
|
{ value: "auto", label: "Auto", description: "Priority: Exa > Perplexity > Anthropic" },
|
|
@@ -386,7 +385,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
386
385
|
type: "submenu",
|
|
387
386
|
label: "Image provider",
|
|
388
387
|
description: "Provider for image generation tool",
|
|
389
|
-
get:
|
|
388
|
+
get: sm => sm.getImageProvider(),
|
|
390
389
|
set: (sm, v) => sm.setImageProvider(v as ImageProviderOption),
|
|
391
390
|
getOptions: () => [
|
|
392
391
|
{ value: "auto", label: "Auto", description: "Priority: OpenRouter > Gemini" },
|
|
@@ -404,7 +403,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
404
403
|
type: "submenu",
|
|
405
404
|
label: "Theme",
|
|
406
405
|
description: "Color theme for the interface",
|
|
407
|
-
get:
|
|
406
|
+
get: sm => sm.getTheme() ?? "dark",
|
|
408
407
|
set: (sm, v) => sm.setTheme(v),
|
|
409
408
|
getOptions: () => [], // Filled dynamically from context
|
|
410
409
|
},
|
|
@@ -414,7 +413,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
414
413
|
type: "submenu",
|
|
415
414
|
label: "Symbol preset",
|
|
416
415
|
description: "Icon/symbol style (overrides theme default)",
|
|
417
|
-
get:
|
|
416
|
+
get: sm => sm.getSymbolPreset() ?? "unicode",
|
|
418
417
|
set: (sm, v) => sm.setSymbolPreset(v as SymbolPreset),
|
|
419
418
|
getOptions: () => [
|
|
420
419
|
{ value: "unicode", label: "Unicode", description: "Standard Unicode symbols (default)" },
|
|
@@ -422,16 +421,25 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
422
421
|
{ value: "ascii", label: "ASCII", description: "ASCII-only characters (maximum compatibility)" },
|
|
423
422
|
],
|
|
424
423
|
},
|
|
424
|
+
{
|
|
425
|
+
id: "colorBlindMode",
|
|
426
|
+
tab: "display",
|
|
427
|
+
type: "boolean",
|
|
428
|
+
label: "Color blind mode",
|
|
429
|
+
description: "Use blue instead of green for diff additions (red-green color blindness)",
|
|
430
|
+
get: sm => sm.getColorBlindMode(),
|
|
431
|
+
set: (sm, v) => sm.setColorBlindMode(v),
|
|
432
|
+
},
|
|
425
433
|
{
|
|
426
434
|
id: "thinkingLevel",
|
|
427
435
|
tab: "display",
|
|
428
436
|
type: "submenu",
|
|
429
437
|
label: "Thinking level",
|
|
430
438
|
description: "Reasoning depth for thinking-capable models",
|
|
431
|
-
get:
|
|
439
|
+
get: sm => sm.getDefaultThinkingLevel() ?? "off",
|
|
432
440
|
set: (sm, v) => sm.setDefaultThinkingLevel(v as ThinkingLevel),
|
|
433
441
|
getOptions: () =>
|
|
434
|
-
(["off", "minimal", "low", "medium", "high", "xhigh"] as ThinkingLevel[]).map(
|
|
442
|
+
(["off", "minimal", "low", "medium", "high", "xhigh"] as ThinkingLevel[]).map(level => ({
|
|
435
443
|
value: level,
|
|
436
444
|
label: level,
|
|
437
445
|
description: THINKING_DESCRIPTIONS[level],
|
|
@@ -443,7 +451,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
443
451
|
type: "boolean",
|
|
444
452
|
label: "Hide thinking",
|
|
445
453
|
description: "Hide thinking blocks in assistant responses",
|
|
446
|
-
get:
|
|
454
|
+
get: sm => sm.getHideThinkingBlock(),
|
|
447
455
|
set: (sm, v) => sm.setHideThinkingBlock(v),
|
|
448
456
|
},
|
|
449
457
|
{
|
|
@@ -452,7 +460,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
452
460
|
type: "boolean",
|
|
453
461
|
label: "Show images",
|
|
454
462
|
description: "Render images inline in terminal",
|
|
455
|
-
get:
|
|
463
|
+
get: sm => sm.getShowImages(),
|
|
456
464
|
set: (sm, v) => sm.setShowImages(v),
|
|
457
465
|
condition: () => !!getCapabilities().images,
|
|
458
466
|
},
|
|
@@ -462,7 +470,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
462
470
|
type: "boolean",
|
|
463
471
|
label: "Auto-resize images",
|
|
464
472
|
description: "Resize large images to 2000x2000 max for better model compatibility",
|
|
465
|
-
get:
|
|
473
|
+
get: sm => sm.getImageAutoResize(),
|
|
466
474
|
set: (sm, v) => sm.setImageAutoResize(v),
|
|
467
475
|
},
|
|
468
476
|
{
|
|
@@ -471,7 +479,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
471
479
|
type: "boolean",
|
|
472
480
|
label: "Block images",
|
|
473
481
|
description: "Prevent images from being sent to LLM providers",
|
|
474
|
-
get:
|
|
482
|
+
get: sm => sm.getBlockImages(),
|
|
475
483
|
set: (sm, v) => sm.setBlockImages(v),
|
|
476
484
|
},
|
|
477
485
|
{
|
|
@@ -480,7 +488,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
480
488
|
type: "boolean",
|
|
481
489
|
label: "Hardware cursor",
|
|
482
490
|
description: "Show terminal cursor for IME support (default: on for Linux/macOS)",
|
|
483
|
-
get:
|
|
491
|
+
get: sm => sm.getShowHardwareCursor(),
|
|
484
492
|
set: (sm, v) => sm.setShowHardwareCursor(v),
|
|
485
493
|
},
|
|
486
494
|
|
|
@@ -493,7 +501,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
493
501
|
type: "boolean",
|
|
494
502
|
label: "TTSR enabled",
|
|
495
503
|
description: "Time Traveling Stream Rules: interrupt agent when output matches patterns",
|
|
496
|
-
get:
|
|
504
|
+
get: sm => sm.getTtsrEnabled(),
|
|
497
505
|
set: (sm, v) => sm.setTtsrEnabled(v),
|
|
498
506
|
},
|
|
499
507
|
{
|
|
@@ -503,7 +511,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
503
511
|
label: "TTSR context mode",
|
|
504
512
|
description: "What to do with partial output when TTSR triggers",
|
|
505
513
|
values: ["discard", "keep"],
|
|
506
|
-
get:
|
|
514
|
+
get: sm => sm.getTtsrContextMode(),
|
|
507
515
|
set: (sm, v) => sm.setTtsrContextMode(v as "keep" | "discard"),
|
|
508
516
|
},
|
|
509
517
|
{
|
|
@@ -513,7 +521,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
513
521
|
label: "TTSR repeat mode",
|
|
514
522
|
description: "How rules can repeat: once per session or after a message gap",
|
|
515
523
|
values: ["once", "after-gap"],
|
|
516
|
-
get:
|
|
524
|
+
get: sm => sm.getTtsrRepeatMode(),
|
|
517
525
|
set: (sm, v) => sm.setTtsrRepeatMode(v as "once" | "after-gap"),
|
|
518
526
|
},
|
|
519
527
|
{
|
|
@@ -522,7 +530,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
522
530
|
type: "submenu",
|
|
523
531
|
label: "TTSR repeat gap",
|
|
524
532
|
description: "Messages before a rule can trigger again (when repeat mode is after-gap)",
|
|
525
|
-
get:
|
|
533
|
+
get: sm => String(sm.getTtsrRepeatGap()),
|
|
526
534
|
set: (sm, v) => sm.setTtsrRepeatGap(Number.parseInt(v, 10)),
|
|
527
535
|
getOptions: () => [
|
|
528
536
|
{ value: "5", label: "5 messages" },
|
|
@@ -542,7 +550,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
542
550
|
type: "submenu",
|
|
543
551
|
label: "Preset",
|
|
544
552
|
description: "Pre-built status line configurations",
|
|
545
|
-
get:
|
|
553
|
+
get: sm => sm.getStatusLinePreset(),
|
|
546
554
|
set: (sm, v) => sm.setStatusLinePreset(v as StatusLinePreset),
|
|
547
555
|
getOptions: () => [
|
|
548
556
|
{ value: "default", label: "Default", description: "Model, path, git, context, tokens, cost" },
|
|
@@ -560,7 +568,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
560
568
|
type: "submenu",
|
|
561
569
|
label: "Separator style",
|
|
562
570
|
description: "Style of separators between segments",
|
|
563
|
-
get:
|
|
571
|
+
get: sm => {
|
|
564
572
|
const settings = sm.getStatusLineSettings();
|
|
565
573
|
if (settings.separator) return settings.separator;
|
|
566
574
|
return getPreset(sm.getStatusLinePreset()).separator;
|
|
@@ -582,7 +590,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
582
590
|
type: "boolean",
|
|
583
591
|
label: "Show extension status",
|
|
584
592
|
description: "Display hook status messages below status line",
|
|
585
|
-
get:
|
|
593
|
+
get: sm => sm.getStatusLineShowHookStatus(),
|
|
586
594
|
set: (sm, v) => sm.setStatusLineShowHookStatus(v),
|
|
587
595
|
},
|
|
588
596
|
{
|
|
@@ -602,7 +610,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
602
610
|
label: "Model thinking level",
|
|
603
611
|
description: "Show thinking level in the model segment",
|
|
604
612
|
values: ["default", "on", "off"],
|
|
605
|
-
get:
|
|
613
|
+
get: sm => {
|
|
606
614
|
const value = sm.getStatusLineSegmentOptions().model?.showThinkingLevel;
|
|
607
615
|
if (value === undefined) return "default";
|
|
608
616
|
return value ? "on" : "off";
|
|
@@ -622,7 +630,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
622
630
|
label: "Path abbreviate",
|
|
623
631
|
description: "Use ~ and strip home prefix in path segment",
|
|
624
632
|
values: ["default", "on", "off"],
|
|
625
|
-
get:
|
|
633
|
+
get: sm => {
|
|
626
634
|
const value = sm.getStatusLineSegmentOptions().path?.abbreviate;
|
|
627
635
|
if (value === undefined) return "default";
|
|
628
636
|
return value ? "on" : "off";
|
|
@@ -641,7 +649,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
641
649
|
type: "submenu",
|
|
642
650
|
label: "Path max length",
|
|
643
651
|
description: "Maximum length for displayed path",
|
|
644
|
-
get:
|
|
652
|
+
get: sm => {
|
|
645
653
|
const value = sm.getStatusLineSegmentOptions().path?.maxLength;
|
|
646
654
|
return typeof value === "number" ? String(value) : "default";
|
|
647
655
|
},
|
|
@@ -669,7 +677,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
669
677
|
label: "Path strip /work",
|
|
670
678
|
description: "Strip /work prefix in path segment",
|
|
671
679
|
values: ["default", "on", "off"],
|
|
672
|
-
get:
|
|
680
|
+
get: sm => {
|
|
673
681
|
const value = sm.getStatusLineSegmentOptions().path?.stripWorkPrefix;
|
|
674
682
|
if (value === undefined) return "default";
|
|
675
683
|
return value ? "on" : "off";
|
|
@@ -689,7 +697,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
689
697
|
label: "Git show branch",
|
|
690
698
|
description: "Show branch name in git segment",
|
|
691
699
|
values: ["default", "on", "off"],
|
|
692
|
-
get:
|
|
700
|
+
get: sm => {
|
|
693
701
|
const value = sm.getStatusLineSegmentOptions().git?.showBranch;
|
|
694
702
|
if (value === undefined) return "default";
|
|
695
703
|
return value ? "on" : "off";
|
|
@@ -709,7 +717,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
709
717
|
label: "Git show staged",
|
|
710
718
|
description: "Show staged file count in git segment",
|
|
711
719
|
values: ["default", "on", "off"],
|
|
712
|
-
get:
|
|
720
|
+
get: sm => {
|
|
713
721
|
const value = sm.getStatusLineSegmentOptions().git?.showStaged;
|
|
714
722
|
if (value === undefined) return "default";
|
|
715
723
|
return value ? "on" : "off";
|
|
@@ -729,7 +737,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
729
737
|
label: "Git show unstaged",
|
|
730
738
|
description: "Show unstaged file count in git segment",
|
|
731
739
|
values: ["default", "on", "off"],
|
|
732
|
-
get:
|
|
740
|
+
get: sm => {
|
|
733
741
|
const value = sm.getStatusLineSegmentOptions().git?.showUnstaged;
|
|
734
742
|
if (value === undefined) return "default";
|
|
735
743
|
return value ? "on" : "off";
|
|
@@ -749,7 +757,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
749
757
|
label: "Git show untracked",
|
|
750
758
|
description: "Show untracked file count in git segment",
|
|
751
759
|
values: ["default", "on", "off"],
|
|
752
|
-
get:
|
|
760
|
+
get: sm => {
|
|
753
761
|
const value = sm.getStatusLineSegmentOptions().git?.showUntracked;
|
|
754
762
|
if (value === undefined) return "default";
|
|
755
763
|
return value ? "on" : "off";
|
|
@@ -769,7 +777,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
769
777
|
label: "Time format",
|
|
770
778
|
description: "Clock segment time format",
|
|
771
779
|
values: ["default", "12h", "24h"],
|
|
772
|
-
get:
|
|
780
|
+
get: sm => sm.getStatusLineSegmentOptions().time?.format ?? "default",
|
|
773
781
|
set: (sm, v) => {
|
|
774
782
|
if (v === "default") {
|
|
775
783
|
sm.clearStatusLineSegmentOption("time", "format");
|
|
@@ -785,7 +793,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
785
793
|
label: "Time show seconds",
|
|
786
794
|
description: "Include seconds in clock segment",
|
|
787
795
|
values: ["default", "on", "off"],
|
|
788
|
-
get:
|
|
796
|
+
get: sm => {
|
|
789
797
|
const value = sm.getStatusLineSegmentOptions().time?.showSeconds;
|
|
790
798
|
if (value === undefined) return "default";
|
|
791
799
|
return value ? "on" : "off";
|
|
@@ -808,7 +816,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
808
816
|
type: "boolean",
|
|
809
817
|
label: "Format on write",
|
|
810
818
|
description: "Automatically format code files using LSP after writing",
|
|
811
|
-
get:
|
|
819
|
+
get: sm => sm.getLspFormatOnWrite(),
|
|
812
820
|
set: (sm, v) => sm.setLspFormatOnWrite(v),
|
|
813
821
|
},
|
|
814
822
|
{
|
|
@@ -817,7 +825,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
817
825
|
type: "boolean",
|
|
818
826
|
label: "Diagnostics on write",
|
|
819
827
|
description: "Return LSP diagnostics (errors/warnings) after writing code files",
|
|
820
|
-
get:
|
|
828
|
+
get: sm => sm.getLspDiagnosticsOnWrite(),
|
|
821
829
|
set: (sm, v) => sm.setLspDiagnosticsOnWrite(v),
|
|
822
830
|
},
|
|
823
831
|
{
|
|
@@ -826,7 +834,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
826
834
|
type: "boolean",
|
|
827
835
|
label: "Diagnostics on edit",
|
|
828
836
|
description: "Return LSP diagnostics (errors/warnings) after editing code files",
|
|
829
|
-
get:
|
|
837
|
+
get: sm => sm.getLspDiagnosticsOnEdit(),
|
|
830
838
|
set: (sm, v) => sm.setLspDiagnosticsOnEdit(v),
|
|
831
839
|
},
|
|
832
840
|
|
|
@@ -839,7 +847,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
839
847
|
type: "boolean",
|
|
840
848
|
label: "Exa enabled",
|
|
841
849
|
description: "Master toggle for all Exa search tools",
|
|
842
|
-
get:
|
|
850
|
+
get: sm => sm.getExaSettings().enabled,
|
|
843
851
|
set: (sm, v) => sm.setExaEnabled(v),
|
|
844
852
|
},
|
|
845
853
|
{
|
|
@@ -848,7 +856,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
848
856
|
type: "boolean",
|
|
849
857
|
label: "Exa search",
|
|
850
858
|
description: "Basic search, deep search, code search, crawl",
|
|
851
|
-
get:
|
|
859
|
+
get: sm => sm.getExaSettings().enableSearch,
|
|
852
860
|
set: (sm, v) => sm.setExaSearchEnabled(v),
|
|
853
861
|
},
|
|
854
862
|
{
|
|
@@ -857,7 +865,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
857
865
|
type: "boolean",
|
|
858
866
|
label: "Exa LinkedIn",
|
|
859
867
|
description: "Search LinkedIn for people and companies",
|
|
860
|
-
get:
|
|
868
|
+
get: sm => sm.getExaSettings().enableLinkedin,
|
|
861
869
|
set: (sm, v) => sm.setExaLinkedinEnabled(v),
|
|
862
870
|
},
|
|
863
871
|
{
|
|
@@ -866,7 +874,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
866
874
|
type: "boolean",
|
|
867
875
|
label: "Exa company",
|
|
868
876
|
description: "Comprehensive company research tool",
|
|
869
|
-
get:
|
|
877
|
+
get: sm => sm.getExaSettings().enableCompany,
|
|
870
878
|
set: (sm, v) => sm.setExaCompanyEnabled(v),
|
|
871
879
|
},
|
|
872
880
|
{
|
|
@@ -875,7 +883,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
875
883
|
type: "boolean",
|
|
876
884
|
label: "Exa researcher",
|
|
877
885
|
description: "AI-powered deep research tasks",
|
|
878
|
-
get:
|
|
886
|
+
get: sm => sm.getExaSettings().enableResearcher,
|
|
879
887
|
set: (sm, v) => sm.setExaResearcherEnabled(v),
|
|
880
888
|
},
|
|
881
889
|
{
|
|
@@ -884,7 +892,7 @@ export const SETTINGS_DEFS: SettingDef[] = [
|
|
|
884
892
|
type: "boolean",
|
|
885
893
|
label: "Exa websets",
|
|
886
894
|
description: "Webset management and enrichment tools",
|
|
887
|
-
get:
|
|
895
|
+
get: sm => sm.getExaSettings().enableWebsets,
|
|
888
896
|
set: (sm, v) => sm.setExaWebsetsEnabled(v),
|
|
889
897
|
},
|
|
890
898
|
];
|
|
@@ -898,10 +906,10 @@ function getAllSettings(): SettingDef[] {
|
|
|
898
906
|
|
|
899
907
|
/** Get settings for a specific tab */
|
|
900
908
|
export function getSettingsForTab(tab: string): SettingDef[] {
|
|
901
|
-
return getAllSettings().filter(
|
|
909
|
+
return getAllSettings().filter(def => def.tab === tab);
|
|
902
910
|
}
|
|
903
911
|
|
|
904
912
|
/** Get a setting definition by id */
|
|
905
913
|
export function getSettingDef(id: string): SettingDef | undefined {
|
|
906
|
-
return getAllSettings().find(
|
|
914
|
+
return getAllSettings().find(def => def.id === id);
|
|
907
915
|
}
|