@travisennis/acai 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -760
- package/bin/acai +52 -0
- package/dist/agent/index.d.ts +12 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +380 -199
- package/dist/agent/sub-agent.d.ts +23 -0
- package/dist/agent/sub-agent.d.ts.map +1 -0
- package/dist/agent/sub-agent.js +109 -0
- package/dist/cli/index.d.ts +26 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/{cli.js → cli/index.js} +84 -77
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +2 -1
- package/dist/cli/stdin.d.ts.map +1 -0
- package/dist/{stdin.js → cli/stdin.js} +11 -0
- package/dist/commands/copy/index.js +2 -2
- package/dist/commands/copy/utils.d.ts.map +1 -1
- package/dist/commands/copy/utils.js +15 -13
- package/dist/commands/generate-rules/index.d.ts +1 -1
- package/dist/commands/generate-rules/index.d.ts.map +1 -1
- package/dist/commands/generate-rules/index.js +16 -101
- package/dist/commands/generate-rules/service.d.ts +22 -0
- package/dist/commands/generate-rules/service.d.ts.map +1 -0
- package/dist/commands/generate-rules/service.js +103 -0
- package/dist/commands/handoff/index.js +2 -2
- package/dist/commands/health/index.js +1 -1
- package/dist/commands/health/utils.d.ts +3 -2
- package/dist/commands/health/utils.d.ts.map +1 -1
- package/dist/commands/health/utils.js +6 -0
- package/dist/commands/history/index.d.ts +1 -1
- package/dist/commands/history/index.d.ts.map +1 -1
- package/dist/commands/history/index.js +17 -18
- package/dist/commands/history/types.d.ts +38 -0
- package/dist/commands/history/types.d.ts.map +1 -1
- package/dist/commands/history/utils.d.ts.map +1 -1
- package/dist/commands/history/utils.js +63 -58
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +3 -8
- package/dist/commands/init-project/index.d.ts.map +1 -1
- package/dist/commands/init-project/index.js +3 -3
- package/dist/commands/init-project/utils.d.ts +2 -1
- package/dist/commands/init-project/utils.d.ts.map +1 -1
- package/dist/commands/init-project/utils.js +10 -2
- package/dist/commands/list-tools/index.d.ts.map +1 -1
- package/dist/commands/list-tools/index.js +7 -31
- package/dist/commands/manager.d.ts +2 -2
- package/dist/commands/manager.d.ts.map +1 -1
- package/dist/commands/manager.js +55 -33
- package/dist/commands/model/index.d.ts.map +1 -1
- package/dist/commands/model/index.js +20 -151
- package/dist/commands/model/model-panel.d.ts +4 -0
- package/dist/commands/model/model-panel.d.ts.map +1 -0
- package/dist/commands/model/model-panel.js +144 -0
- package/dist/commands/paste/index.d.ts.map +1 -1
- package/dist/commands/paste/index.js +59 -62
- package/dist/commands/paste/utils.d.ts.map +1 -1
- package/dist/commands/paste/utils.js +88 -58
- package/dist/commands/pickup/index.d.ts.map +1 -1
- package/dist/commands/pickup/index.js +6 -3
- package/dist/commands/pickup/utils.js +3 -3
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +33 -50
- package/dist/commands/review/index.d.ts.map +1 -1
- package/dist/commands/review/index.js +3 -117
- package/dist/commands/review/review-panel.d.ts +3 -0
- package/dist/commands/review/review-panel.d.ts.map +1 -0
- package/dist/commands/review/review-panel.js +186 -0
- package/dist/commands/review/utils.d.ts +15 -1
- package/dist/commands/review/utils.d.ts.map +1 -1
- package/dist/commands/review/utils.js +127 -68
- package/dist/commands/session/index.d.ts +1 -1
- package/dist/commands/session/index.d.ts.map +1 -1
- package/dist/commands/session/index.js +124 -135
- package/dist/commands/shell/index.d.ts.map +1 -1
- package/dist/commands/shell/index.js +16 -1
- package/dist/commands/types.d.ts +2 -2
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/{config.d.ts → config/index.d.ts} +20 -9
- package/dist/config/index.d.ts.map +1 -0
- package/dist/{config.js → config/index.js} +43 -42
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +75 -55
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +148 -141
- package/dist/middleware/cache.d.ts.map +1 -1
- package/dist/middleware/cache.js +18 -36
- package/dist/models/ai-config.d.ts +1 -0
- package/dist/models/ai-config.d.ts.map +1 -1
- package/dist/models/ai-config.js +4 -3
- package/dist/models/anthropic-provider.d.ts +2 -5
- package/dist/models/anthropic-provider.d.ts.map +1 -1
- package/dist/models/anthropic-provider.js +3 -70
- package/dist/models/deepseek-provider.d.ts +1 -0
- package/dist/models/deepseek-provider.d.ts.map +1 -1
- package/dist/models/google-provider.d.ts +2 -3
- package/dist/models/google-provider.d.ts.map +1 -1
- package/dist/models/google-provider.js +0 -26
- package/dist/models/groq-provider.d.ts +1 -0
- package/dist/models/groq-provider.d.ts.map +1 -1
- package/dist/models/manager.d.ts +13 -2
- package/dist/models/manager.d.ts.map +1 -1
- package/dist/models/manager.js +20 -8
- package/dist/models/openai-provider.d.ts +2 -5
- package/dist/models/openai-provider.d.ts.map +1 -1
- package/dist/models/openai-provider.js +0 -52
- package/dist/models/opencode-go-provider.d.ts +25 -0
- package/dist/models/opencode-go-provider.d.ts.map +1 -0
- package/dist/models/opencode-go-provider.js +78 -0
- package/dist/models/opencode-zen-provider.d.ts +7 -3
- package/dist/models/opencode-zen-provider.d.ts.map +1 -1
- package/dist/models/opencode-zen-provider.js +49 -10
- package/dist/models/openrouter-provider.d.ts +27 -31
- package/dist/models/openrouter-provider.d.ts.map +1 -1
- package/dist/models/openrouter-provider.js +121 -180
- package/dist/models/providers.d.ts +3 -3
- package/dist/models/providers.d.ts.map +1 -1
- package/dist/models/providers.js +6 -0
- package/dist/models/xai-provider.d.ts +4 -3
- package/dist/models/xai-provider.d.ts.map +1 -1
- package/dist/models/xai-provider.js +18 -18
- package/dist/modes/manager.d.ts +24 -0
- package/dist/modes/manager.d.ts.map +1 -0
- package/dist/modes/manager.js +77 -0
- package/dist/modes/prompts.d.ts +2 -0
- package/dist/modes/prompts.d.ts.map +1 -0
- package/dist/modes/prompts.js +142 -0
- package/dist/prompts/mentions.d.ts +11 -0
- package/dist/prompts/mentions.d.ts.map +1 -0
- package/dist/{mentions.js → prompts/mentions.js} +55 -85
- package/dist/{prompts.d.ts → prompts/system-prompt.d.ts} +7 -2
- package/dist/prompts/system-prompt.d.ts.map +1 -0
- package/dist/{prompts.js → prompts/system-prompt.js} +31 -16
- package/dist/repl/index.d.ts +174 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/{repl-new.js → repl/index.js} +397 -76
- package/dist/repl/project-status.d.ts +1 -0
- package/dist/repl/project-status.d.ts.map +1 -1
- package/dist/repl/project-status.js +4 -1
- package/dist/sessions/manager.d.ts +92 -0
- package/dist/sessions/manager.d.ts.map +1 -1
- package/dist/sessions/manager.js +262 -9
- package/dist/sessions/summary.d.ts +4 -0
- package/dist/sessions/summary.d.ts.map +1 -0
- package/dist/sessions/summary.js +30 -0
- package/dist/skills/index.d.ts +29 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +294 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.d.ts.map +1 -0
- package/dist/subagents/index.js +231 -0
- package/dist/terminal/control.d.ts +1 -1
- package/dist/terminal/control.d.ts.map +1 -1
- package/dist/terminal/control.js +3 -3
- package/dist/terminal/east-asian-width.d.ts.map +1 -1
- package/dist/terminal/east-asian-width.js +404 -351
- package/dist/terminal/keys.d.ts +17 -0
- package/dist/terminal/keys.d.ts.map +1 -1
- package/dist/terminal/keys.js +37 -0
- package/dist/terminal/select-prompt.d.ts.map +1 -1
- package/dist/terminal/select-prompt.js +24 -12
- package/dist/terminal/string-width.d.ts.map +1 -1
- package/dist/terminal/string-width.js +25 -27
- package/dist/terminal/style.d.ts.map +1 -1
- package/dist/terminal/style.js +4 -7
- package/dist/terminal/supports-color.d.ts.map +1 -1
- package/dist/terminal/supports-color.js +41 -27
- package/dist/terminal/table/cell.d.ts +12 -0
- package/dist/terminal/table/cell.d.ts.map +1 -1
- package/dist/terminal/table/cell.js +40 -25
- package/dist/terminal/table/layout-manager.d.ts.map +1 -1
- package/dist/terminal/table/layout-manager.js +100 -68
- package/dist/terminal/table/utils.d.ts +1 -1
- package/dist/terminal/table/utils.d.ts.map +1 -1
- package/dist/terminal/table/utils.js +17 -10
- package/dist/terminal/wrap-ansi.d.ts.map +1 -1
- package/dist/terminal/wrap-ansi.js +174 -105
- package/dist/tokens/tracker.d.ts +1 -0
- package/dist/tokens/tracker.d.ts.map +1 -1
- package/dist/tokens/tracker.js +3 -0
- package/dist/tools/agent.d.ts +27 -0
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +81 -0
- package/dist/tools/apply-patch.d.ts +62 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +377 -0
- package/dist/tools/bash.d.ts +4 -3
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +349 -141
- package/dist/tools/directory-tree.d.ts +3 -3
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +8 -5
- package/dist/tools/dynamic-tool-loader.d.ts +3 -6
- package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
- package/dist/tools/dynamic-tool-loader.js +20 -4
- package/dist/tools/edit-file.d.ts +7 -7
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +292 -85
- package/dist/tools/glob.d.ts +6 -6
- package/dist/tools/glob.d.ts.map +1 -1
- package/dist/tools/glob.js +110 -63
- package/dist/tools/grep.d.ts +15 -12
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +315 -193
- package/dist/tools/index.d.ts +114 -9
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +39 -24
- package/dist/tools/ls.d.ts +2 -2
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/ls.js +7 -5
- package/dist/tools/read-file.d.ts +4 -6
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +84 -39
- package/dist/tools/save-file.d.ts +3 -3
- package/dist/tools/save-file.d.ts.map +1 -1
- package/dist/tools/save-file.js +36 -31
- package/dist/tools/skill.d.ts +23 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +65 -0
- package/dist/tools/think.d.ts.map +1 -1
- package/dist/tools/think.js +2 -9
- package/dist/tools/utils.d.ts +2 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +12 -0
- package/dist/tools/web-fetch.d.ts +50 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +446 -0
- package/dist/tools/web-search.d.ts +44 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +226 -0
- package/dist/tui/autocomplete/attachment-provider.d.ts +3 -6
- package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -1
- package/dist/tui/autocomplete/attachment-provider.js +25 -78
- package/dist/tui/autocomplete/base-provider.d.ts +1 -0
- package/dist/tui/autocomplete/base-provider.d.ts.map +1 -1
- package/dist/tui/autocomplete/combined-provider.d.ts +1 -4
- package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -1
- package/dist/tui/autocomplete/combined-provider.js +3 -17
- package/dist/tui/autocomplete/command-provider.d.ts +1 -0
- package/dist/tui/autocomplete/command-provider.d.ts.map +1 -1
- package/dist/tui/autocomplete/command-provider.js +3 -0
- package/dist/tui/autocomplete/file-search-provider.d.ts +2 -1
- package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -1
- package/dist/tui/autocomplete/file-search-provider.js +37 -17
- package/dist/tui/autocomplete/skill-provider.d.ts +17 -0
- package/dist/tui/autocomplete/skill-provider.d.ts.map +1 -0
- package/dist/tui/autocomplete/skill-provider.js +49 -0
- package/dist/tui/autocomplete/utils.d.ts +2 -1
- package/dist/tui/autocomplete/utils.d.ts.map +1 -1
- package/dist/tui/autocomplete/utils.js +25 -23
- package/dist/tui/autocomplete.d.ts +2 -2
- package/dist/tui/autocomplete.d.ts.map +1 -1
- package/dist/tui/autocomplete.js +3 -5
- package/dist/tui/components/assistant-message.d.ts.map +1 -1
- package/dist/tui/components/assistant-message.js +0 -4
- package/dist/tui/components/editor.d.ts +18 -3
- package/dist/tui/components/editor.d.ts.map +1 -1
- package/dist/tui/components/editor.js +211 -237
- package/dist/tui/components/footer.d.ts +6 -4
- package/dist/tui/components/footer.d.ts.map +1 -1
- package/dist/tui/components/footer.js +49 -25
- package/dist/tui/components/markdown.d.ts +10 -7
- package/dist/tui/components/markdown.d.ts.map +1 -1
- package/dist/tui/components/markdown.js +57 -39
- package/dist/tui/components/modal.d.ts.map +1 -1
- package/dist/tui/components/modal.js +35 -33
- package/dist/tui/components/notification.d.ts +13 -2
- package/dist/tui/components/notification.d.ts.map +1 -1
- package/dist/tui/components/notification.js +36 -2
- package/dist/tui/components/progress-bar.js +1 -1
- package/dist/tui/components/select-list.d.ts +1 -0
- package/dist/tui/components/select-list.d.ts.map +1 -1
- package/dist/tui/components/select-list.js +14 -11
- package/dist/tui/components/text.d.ts +16 -0
- package/dist/tui/components/text.d.ts.map +1 -1
- package/dist/tui/components/text.js +72 -57
- package/dist/tui/components/thinking-block.d.ts +9 -0
- package/dist/tui/components/thinking-block.d.ts.map +1 -1
- package/dist/tui/components/thinking-block.js +43 -11
- package/dist/tui/components/tool-execution.d.ts +5 -1
- package/dist/tui/components/tool-execution.d.ts.map +1 -1
- package/dist/tui/components/tool-execution.js +19 -10
- package/dist/tui/components/user-message.d.ts.map +1 -1
- package/dist/tui/components/user-message.js +0 -3
- package/dist/tui/components/welcome.d.ts +2 -1
- package/dist/tui/components/welcome.d.ts.map +1 -1
- package/dist/tui/components/welcome.js +2 -2
- package/dist/tui/editor-launcher.d.ts +3 -2
- package/dist/tui/editor-launcher.d.ts.map +1 -1
- package/dist/tui/index.d.ts +0 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/terminal.d.ts.map +1 -1
- package/dist/tui/terminal.js +10 -2
- package/dist/tui/tui.d.ts +43 -0
- package/dist/tui/tui.d.ts.map +1 -1
- package/dist/tui/tui.js +166 -41
- package/dist/tui/utils.d.ts +1 -5
- package/dist/tui/utils.d.ts.map +1 -1
- package/dist/tui/utils.js +271 -44
- package/dist/utils/bash/parse.d.ts +19 -0
- package/dist/utils/bash/parse.d.ts.map +1 -0
- package/dist/utils/bash/parse.js +223 -0
- package/dist/utils/bash/quote.d.ts +6 -0
- package/dist/utils/bash/quote.d.ts.map +1 -0
- package/dist/utils/bash/quote.js +23 -0
- package/dist/utils/bash.d.ts.map +1 -1
- package/dist/utils/bash.js +211 -126
- package/dist/utils/command-protection.d.ts +28 -0
- package/dist/utils/command-protection.d.ts.map +1 -0
- package/dist/utils/command-protection.js +324 -0
- package/dist/utils/dedent.d.ts.map +1 -0
- package/dist/utils/env-expand.d.ts +2 -0
- package/dist/utils/env-expand.d.ts.map +1 -0
- package/dist/utils/env-expand.js +8 -0
- package/dist/utils/filesystem/path-display.d.ts +11 -0
- package/dist/utils/filesystem/path-display.d.ts.map +1 -0
- package/dist/utils/filesystem/path-display.js +32 -0
- package/dist/utils/filesystem/security.d.ts +2 -2
- package/dist/utils/filesystem/security.d.ts.map +1 -1
- package/dist/utils/filesystem/security.js +28 -30
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/{formatting.js → utils/formatting.js} +1 -1
- package/dist/utils/git.d.ts +4 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +30 -0
- package/dist/utils/glob.d.ts +1 -1
- package/dist/utils/glob.d.ts.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/{logger.js → utils/logger.js} +1 -1
- package/dist/utils/parsing.d.ts.map +1 -0
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +90 -37
- package/dist/utils/templates.d.ts +2 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +24 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/{version.js → utils/version.js} +1 -1
- package/package.json +35 -26
- package/dist/cli.d.ts +0 -23
- package/dist/cli.d.ts.map +0 -1
- package/dist/commands/add-directory/types.d.ts +0 -6
- package/dist/commands/add-directory/types.d.ts.map +0 -1
- package/dist/commands/add-directory/types.js +0 -1
- package/dist/commands/copy/types.d.ts +0 -3
- package/dist/commands/copy/types.d.ts.map +0 -1
- package/dist/commands/copy/types.js +0 -1
- package/dist/commands/exit/index.d.ts +0 -10
- package/dist/commands/exit/index.d.ts.map +0 -1
- package/dist/commands/exit/index.js +0 -21
- package/dist/commands/exit/types.d.ts +0 -8
- package/dist/commands/exit/types.d.ts.map +0 -1
- package/dist/commands/exit/types.js +0 -1
- package/dist/commands/exit/utils.d.ts +0 -2
- package/dist/commands/exit/utils.d.ts.map +0 -1
- package/dist/commands/exit/utils.js +0 -13
- package/dist/commands/prompt/index.d.ts +0 -5
- package/dist/commands/prompt/index.d.ts.map +0 -1
- package/dist/commands/prompt/index.js +0 -122
- package/dist/commands/prompt/types.d.ts +0 -15
- package/dist/commands/prompt/types.d.ts.map +0 -1
- package/dist/commands/prompt/types.js +0 -1
- package/dist/commands/prompt/utils.d.ts +0 -12
- package/dist/commands/prompt/utils.d.ts.map +0 -1
- package/dist/commands/prompt/utils.js +0 -107
- package/dist/commands/reset/index.d.ts +0 -3
- package/dist/commands/reset/index.d.ts.map +0 -1
- package/dist/commands/reset/index.js +0 -25
- package/dist/commands/reset/types.d.ts +0 -1
- package/dist/commands/reset/types.d.ts.map +0 -1
- package/dist/commands/reset/types.js +0 -3
- package/dist/commands/review/types.d.ts +0 -12
- package/dist/commands/review/types.d.ts.map +0 -1
- package/dist/commands/review/types.js +0 -1
- package/dist/commands/save/index.d.ts +0 -3
- package/dist/commands/save/index.d.ts.map +0 -1
- package/dist/commands/save/index.js +0 -19
- package/dist/config.d.ts.map +0 -1
- package/dist/dedent.d.ts.map +0 -1
- package/dist/formatting.d.ts.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/mentions.d.ts +0 -14
- package/dist/mentions.d.ts.map +0 -1
- package/dist/parsing.d.ts.map +0 -1
- package/dist/prompts.d.ts.map +0 -1
- package/dist/repl-new.d.ts +0 -65
- package/dist/repl-new.d.ts.map +0 -1
- package/dist/skills.d.ts +0 -16
- package/dist/skills.d.ts.map +0 -1
- package/dist/skills.js +0 -233
- package/dist/stdin.d.ts.map +0 -1
- package/dist/tui/autocomplete/path-provider.d.ts +0 -21
- package/dist/tui/autocomplete/path-provider.d.ts.map +0 -1
- package/dist/tui/autocomplete/path-provider.js +0 -164
- package/dist/utils/iterables.d.ts +0 -2
- package/dist/utils/iterables.d.ts.map +0 -1
- package/dist/utils/iterables.js +0 -6
- package/dist/version.d.ts.map +0 -1
- /package/dist/{dedent.d.ts → utils/dedent.d.ts} +0 -0
- /package/dist/{dedent.js → utils/dedent.js} +0 -0
- /package/dist/{formatting.d.ts → utils/formatting.d.ts} +0 -0
- /package/dist/{logger.d.ts → utils/logger.d.ts} +0 -0
- /package/dist/{parsing.d.ts → utils/parsing.d.ts} +0 -0
- /package/dist/{parsing.js → utils/parsing.js} +0 -0
- /package/dist/{version.d.ts → utils/version.d.ts} +0 -0
package/dist/terminal/keys.d.ts
CHANGED
|
@@ -52,6 +52,18 @@ export declare function isCtrlK(data: string): boolean;
|
|
|
52
52
|
* Ignores lock key bits.
|
|
53
53
|
*/
|
|
54
54
|
export declare function isCtrlL(data: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Check if input matches Ctrl+M (Kitty protocol only).
|
|
57
|
+
* The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
|
|
58
|
+
* so we only match the Kitty protocol sequence to avoid
|
|
59
|
+
* intercepting Enter keypresses.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isCtrlM(data: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if input matches Ctrl+N (raw byte or Kitty protocol).
|
|
64
|
+
* Ignores lock key bits.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isCtrlN(data: string): boolean;
|
|
55
67
|
/**
|
|
56
68
|
* Check if input matches Ctrl+O (raw byte or Kitty protocol).
|
|
57
69
|
* Ignores lock key bits.
|
|
@@ -72,6 +84,11 @@ export declare function isCtrlP(data: string): boolean;
|
|
|
72
84
|
* Ignores lock key bits.
|
|
73
85
|
*/
|
|
74
86
|
export declare function isShiftCtrlP(data: string): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Check if input matches Ctrl+R (raw byte or Kitty protocol).
|
|
89
|
+
* Ignores lock key bits.
|
|
90
|
+
*/
|
|
91
|
+
export declare function isCtrlR(data: string): boolean;
|
|
75
92
|
/**
|
|
76
93
|
* Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
|
|
77
94
|
* Ignores lock key bits.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,sEAAsE;
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/terminal/keys.js
CHANGED
|
@@ -32,8 +32,11 @@ const CODEPOINTS = {
|
|
|
32
32
|
g: 103,
|
|
33
33
|
k: 107,
|
|
34
34
|
l: 108,
|
|
35
|
+
m: 109,
|
|
36
|
+
n: 110,
|
|
35
37
|
o: 111,
|
|
36
38
|
p: 112,
|
|
39
|
+
r: 114,
|
|
37
40
|
t: 116,
|
|
38
41
|
u: 117,
|
|
39
42
|
w: 119,
|
|
@@ -148,8 +151,11 @@ const Keys = {
|
|
|
148
151
|
CTRL_G: kittySequence(CODEPOINTS.g, MODIFIERS.ctrl),
|
|
149
152
|
CTRL_K: kittySequence(CODEPOINTS.k, MODIFIERS.ctrl),
|
|
150
153
|
CTRL_L: kittySequence(CODEPOINTS.l, MODIFIERS.ctrl),
|
|
154
|
+
CTRL_M: kittySequence(CODEPOINTS.m, MODIFIERS.ctrl),
|
|
151
155
|
CTRL_O: kittySequence(CODEPOINTS.o, MODIFIERS.ctrl),
|
|
156
|
+
CTRL_N: kittySequence(CODEPOINTS.n, MODIFIERS.ctrl),
|
|
152
157
|
CTRL_P: kittySequence(CODEPOINTS.p, MODIFIERS.ctrl),
|
|
158
|
+
CTRL_R: kittySequence(CODEPOINTS.r, MODIFIERS.ctrl),
|
|
153
159
|
CTRL_T: kittySequence(CODEPOINTS.t, MODIFIERS.ctrl),
|
|
154
160
|
CTRL_U: kittySequence(CODEPOINTS.u, MODIFIERS.ctrl),
|
|
155
161
|
CTRL_W: kittySequence(CODEPOINTS.w, MODIFIERS.ctrl),
|
|
@@ -202,8 +208,11 @@ const RAW = {
|
|
|
202
208
|
CTRL_G: "\x07",
|
|
203
209
|
CTRL_K: "\x0b",
|
|
204
210
|
CTRL_L: "\x0c",
|
|
211
|
+
CTRL_M: "\x0d",
|
|
212
|
+
CTRL_N: "\x0e",
|
|
205
213
|
CTRL_O: "\x0f",
|
|
206
214
|
CTRL_P: "\x10",
|
|
215
|
+
CTRL_R: "\x12",
|
|
207
216
|
CTRL_T: "\x14",
|
|
208
217
|
CTRL_U: "\x15",
|
|
209
218
|
CTRL_W: "\x17",
|
|
@@ -277,6 +286,25 @@ export function isCtrlL(data) {
|
|
|
277
286
|
data === Keys.CTRL_L ||
|
|
278
287
|
matchesKittySequence(data, CODEPOINTS.l, MODIFIERS.ctrl));
|
|
279
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Check if input matches Ctrl+M (Kitty protocol only).
|
|
291
|
+
* The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
|
|
292
|
+
* so we only match the Kitty protocol sequence to avoid
|
|
293
|
+
* intercepting Enter keypresses.
|
|
294
|
+
*/
|
|
295
|
+
export function isCtrlM(data) {
|
|
296
|
+
return (data === Keys.CTRL_M ||
|
|
297
|
+
matchesKittySequence(data, CODEPOINTS.m, MODIFIERS.ctrl));
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Check if input matches Ctrl+N (raw byte or Kitty protocol).
|
|
301
|
+
* Ignores lock key bits.
|
|
302
|
+
*/
|
|
303
|
+
export function isCtrlN(data) {
|
|
304
|
+
return (data === RAW.CTRL_N ||
|
|
305
|
+
data === Keys.CTRL_N ||
|
|
306
|
+
matchesKittySequence(data, CODEPOINTS.n, MODIFIERS.ctrl));
|
|
307
|
+
}
|
|
280
308
|
/**
|
|
281
309
|
* Check if input matches Ctrl+O (raw byte or Kitty protocol).
|
|
282
310
|
* Ignores lock key bits.
|
|
@@ -309,6 +337,15 @@ export function isCtrlP(data) {
|
|
|
309
337
|
export function isShiftCtrlP(data) {
|
|
310
338
|
return matchesKittySequence(data, CODEPOINTS.p, MODIFIERS.shift + MODIFIERS.ctrl);
|
|
311
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Check if input matches Ctrl+R (raw byte or Kitty protocol).
|
|
342
|
+
* Ignores lock key bits.
|
|
343
|
+
*/
|
|
344
|
+
export function isCtrlR(data) {
|
|
345
|
+
return (data === RAW.CTRL_R ||
|
|
346
|
+
data === Keys.CTRL_R ||
|
|
347
|
+
matchesKittySequence(data, CODEPOINTS.r, MODIFIERS.ctrl));
|
|
348
|
+
}
|
|
312
349
|
/**
|
|
313
350
|
* Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
|
|
314
351
|
* Ignores lock key bits.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";AAEA;;;GAGG;AA2BH,UAAU,YAAY,CAAC,CAAC,GAAG,OAAO;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAQpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAoHD,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EACxC,OAAkB,EAClB,OAAO,EACP,OAAW,EACX,QAAY,EACZ,MAAM,EACN,QAA2D,GAC5D,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA6M/B"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Standalone select prompt (inquirer-like)
|
|
4
4
|
* - TypeScript version
|
|
5
5
|
*/
|
|
6
|
+
import { truncateToWidth } from "../tui/utils.js";
|
|
7
|
+
import { getTerminalSize } from "./control.js";
|
|
6
8
|
import { isArrowDown, isArrowUp, isBackspace, isCtrlC, isEnd, isEnter, isHome, } from "./keys.js";
|
|
7
9
|
const ANSI = {
|
|
8
10
|
hideCursor: "\x1b[?25l",
|
|
@@ -16,6 +18,18 @@ const ANSI = {
|
|
|
16
18
|
dim: "\x1b[2m",
|
|
17
19
|
reset: "\x1b[0m",
|
|
18
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Factory function for creating prompt abort handlers.
|
|
23
|
+
* Defined at module level to avoid capturing closure scope.
|
|
24
|
+
*/
|
|
25
|
+
function createPromptAbortHandler(cleanupFn, rejectFn) {
|
|
26
|
+
return function abortHandler() {
|
|
27
|
+
cleanupFn();
|
|
28
|
+
const err = new Error("AbortError");
|
|
29
|
+
err.name = "AbortError";
|
|
30
|
+
rejectFn(err);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
19
33
|
function normalizeChoice(choice) {
|
|
20
34
|
if (typeof choice === "string") {
|
|
21
35
|
return { name: choice, value: choice, disabled: false };
|
|
@@ -55,7 +69,8 @@ function findLastEnabledIndex(choices) {
|
|
|
55
69
|
}
|
|
56
70
|
return choices.length - 1;
|
|
57
71
|
}
|
|
58
|
-
function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, totalChoices) {
|
|
72
|
+
function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, totalChoices, terminalColumns) {
|
|
73
|
+
const maxItemWidth = Math.max(0, terminalColumns - 4); // 4 chars for prefix and spacing
|
|
59
74
|
const visible = choices.slice(pageStart, pageStart + pageSize);
|
|
60
75
|
const lines = [];
|
|
61
76
|
const searchInfo = typed ? ` (search: ${typed})` : "";
|
|
@@ -67,14 +82,15 @@ function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, total
|
|
|
67
82
|
const actualIndex = pageStart + i;
|
|
68
83
|
const ch = visible[i];
|
|
69
84
|
const prefix = actualIndex === pointerIndex ? "›" : " ";
|
|
85
|
+
const truncatedName = truncateToWidth(ch.name, maxItemWidth, "...");
|
|
70
86
|
if (ch.disabled) {
|
|
71
|
-
lines.push(` ${prefix} ${
|
|
87
|
+
lines.push(` ${prefix} ${truncatedName} (disabled)`);
|
|
72
88
|
}
|
|
73
89
|
else if (actualIndex === pointerIndex) {
|
|
74
|
-
lines.push(`${ANSI.cyan} ${prefix} ${
|
|
90
|
+
lines.push(`${ANSI.cyan} ${prefix} ${truncatedName}${ANSI.reset}`);
|
|
75
91
|
}
|
|
76
92
|
else {
|
|
77
|
-
lines.push(` ${prefix} ${
|
|
93
|
+
lines.push(` ${prefix} ${truncatedName}`);
|
|
78
94
|
}
|
|
79
95
|
}
|
|
80
96
|
if (choices.length > pageSize) {
|
|
@@ -128,7 +144,8 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
|
|
|
128
144
|
stdout.write(ANSI.moveToStart);
|
|
129
145
|
stdout.write(ANSI.clearFromCursor);
|
|
130
146
|
clearPreviousOutput(previousOutputLines);
|
|
131
|
-
const
|
|
147
|
+
const { columns } = getTerminalSize();
|
|
148
|
+
const out = render(filteredChoices, pointer, pageStart, pageSize, message, searchBuffer, normalized.length, columns);
|
|
132
149
|
previousOutputLines = out.split("\n").length;
|
|
133
150
|
stdout.write(`${out}\n`);
|
|
134
151
|
}
|
|
@@ -166,12 +183,7 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
|
|
|
166
183
|
stdout.write(ANSI.showCursor);
|
|
167
184
|
}
|
|
168
185
|
const abortHandler = signal
|
|
169
|
-
? ()
|
|
170
|
-
cleanup();
|
|
171
|
-
const err = new Error("AbortError");
|
|
172
|
-
err.name = "AbortError";
|
|
173
|
-
reject(err);
|
|
174
|
-
}
|
|
186
|
+
? createPromptAbortHandler(cleanup, reject)
|
|
175
187
|
: null;
|
|
176
188
|
if (signal && abortHandler) {
|
|
177
189
|
signal.addEventListener("abort", abortHandler);
|
|
@@ -248,7 +260,7 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
|
|
|
248
260
|
stdout.write("\n");
|
|
249
261
|
}
|
|
250
262
|
};
|
|
251
|
-
process.
|
|
263
|
+
process.once("exit", exitHandler);
|
|
252
264
|
}
|
|
253
265
|
catch (error) {
|
|
254
266
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-width.d.ts","sourceRoot":"","sources":["../../source/terminal/string-width.ts"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"string-width.d.ts","sourceRoot":"","sources":["../../source/terminal/string-width.ts"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA+ED,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAwBR"}
|
|
@@ -32,6 +32,30 @@ function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
|
|
|
32
32
|
}
|
|
33
33
|
return extra;
|
|
34
34
|
}
|
|
35
|
+
function segmentWidth(segment, eastAsianWidthOptions) {
|
|
36
|
+
if (zeroWidthClusterRegex.test(segment)) {
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
if (rgiEmojiRegex.test(segment)) {
|
|
40
|
+
return 2;
|
|
41
|
+
}
|
|
42
|
+
const firstCodePoint = segment.codePointAt(0);
|
|
43
|
+
if (firstCodePoint === undefined) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
const hasLeadingNonPrinting = leadingNonPrintingRegex.test(segment);
|
|
47
|
+
const codePoint = hasLeadingNonPrinting
|
|
48
|
+
? segment.replace(leadingNonPrintingRegex, "").codePointAt(0)
|
|
49
|
+
: firstCodePoint;
|
|
50
|
+
if (codePoint === undefined) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
let width = eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
54
|
+
if (segment.length > 1) {
|
|
55
|
+
width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
|
|
56
|
+
}
|
|
57
|
+
return width;
|
|
58
|
+
}
|
|
35
59
|
export default function stringWidth(input, options = {}) {
|
|
36
60
|
if (typeof input !== "string" || input.length === 0) {
|
|
37
61
|
return 0;
|
|
@@ -46,35 +70,9 @@ export default function stringWidth(input, options = {}) {
|
|
|
46
70
|
}
|
|
47
71
|
let width = 0;
|
|
48
72
|
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
49
|
-
// Use lazy segmenter initialization
|
|
50
73
|
const segmenter = getSegmenter();
|
|
51
74
|
for (const { segment } of segmenter.segment(string)) {
|
|
52
|
-
|
|
53
|
-
if (zeroWidthClusterRegex.test(segment)) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
// Emoji width logic
|
|
57
|
-
if (rgiEmojiRegex.test(segment)) {
|
|
58
|
-
width += 2;
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
// Get first code point directly, avoiding intermediate string
|
|
62
|
-
const firstCodePoint = segment.codePointAt(0);
|
|
63
|
-
if (firstCodePoint === undefined) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
// Check if we need to strip leading non-printing characters
|
|
67
|
-
const hasLeadingNonPrinting = leadingNonPrintingRegex.test(segment);
|
|
68
|
-
const codePoint = hasLeadingNonPrinting
|
|
69
|
-
? segment.replace(leadingNonPrintingRegex, "").codePointAt(0)
|
|
70
|
-
: firstCodePoint;
|
|
71
|
-
if (codePoint !== undefined) {
|
|
72
|
-
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
73
|
-
// Only check trailing width if segment has multiple characters
|
|
74
|
-
if (segment.length > 1) {
|
|
75
|
-
width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
75
|
+
width += segmentWidth(segment, eastAsianWidthOptions);
|
|
78
76
|
}
|
|
79
77
|
return width;
|
|
80
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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"}
|
package/dist/terminal/style.js
CHANGED
|
@@ -97,9 +97,8 @@ for (const model of usedModels) {
|
|
|
97
97
|
get() {
|
|
98
98
|
const { level } = this;
|
|
99
99
|
return function (...args) {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
getModelAnsi(model, levelMapping[level], "color", ...args),
|
|
100
|
+
const levelValue = level ?? 0;
|
|
101
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[levelValue], "color", ...args),
|
|
103
102
|
// biome-ignore lint/suspicious/noExplicitAny: Dynamic property access needed for style compatibility
|
|
104
103
|
ansiStyles.color.close,
|
|
105
104
|
// biome-ignore lint/suspicious/noExplicitAny: Dynamic symbol access needed for style compatibility
|
|
@@ -109,15 +108,13 @@ for (const model of usedModels) {
|
|
|
109
108
|
};
|
|
110
109
|
},
|
|
111
110
|
};
|
|
112
|
-
// biome-ignore lint/style/noNonNullAssertion: Model string is guaranteed to be valid for style compatibility
|
|
113
111
|
const bgModel = `bg${model[0].toUpperCase()}${model.slice(1)}`;
|
|
114
112
|
styles[bgModel] = {
|
|
115
113
|
get() {
|
|
116
114
|
const { level } = this;
|
|
117
115
|
return function (...args) {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
getModelAnsi(model, levelMapping[level], "bgColor", ...args),
|
|
116
|
+
const levelValue = level ?? 0;
|
|
117
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[levelValue], "bgColor", ...args),
|
|
121
118
|
// biome-ignore lint/suspicious/noExplicitAny: Dynamic property access needed for style compatibility
|
|
122
119
|
ansiStyles.bgColor.close,
|
|
123
120
|
// biome-ignore lint/suspicious/noExplicitAny: Dynamic symbol access needed for style compatibility
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAkJD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,GAAG,KAAK,CAOtB;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
|
|
@@ -33,6 +33,41 @@ function translateLevel(level) {
|
|
|
33
33
|
has16m: level >= 3,
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
+
function detectCiColorLevel(min) {
|
|
37
|
+
if (!("CI" in env)) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
|
|
41
|
+
return 3;
|
|
42
|
+
}
|
|
43
|
+
if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) ||
|
|
44
|
+
env["CI_NAME"] === "codeship") {
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
return min;
|
|
48
|
+
}
|
|
49
|
+
function detectTerminalColorLevel() {
|
|
50
|
+
if ("TERM_PROGRAM" in env) {
|
|
51
|
+
const termProgramVersion = String(env["TERM_PROGRAM_VERSION"] || "0");
|
|
52
|
+
const version = Number.parseInt(termProgramVersion.split(".")[0] ?? "0", 10);
|
|
53
|
+
switch (env["TERM_PROGRAM"]) {
|
|
54
|
+
case "iTerm.app": {
|
|
55
|
+
return version >= 3 ? 3 : 2;
|
|
56
|
+
}
|
|
57
|
+
case "Apple_Terminal": {
|
|
58
|
+
return 2;
|
|
59
|
+
}
|
|
60
|
+
// No default
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (/-256(color)?$/i.test(env["TERM"] || "")) {
|
|
64
|
+
return 2;
|
|
65
|
+
}
|
|
66
|
+
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env["TERM"] || "")) {
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
36
71
|
function _supportsColor(haveStream, options = {}) {
|
|
37
72
|
const noFlagForceColor = envForceColor();
|
|
38
73
|
const forceColor = noFlagForceColor;
|
|
@@ -60,15 +95,9 @@ function _supportsColor(haveStream, options = {}) {
|
|
|
60
95
|
}
|
|
61
96
|
return 1;
|
|
62
97
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) ||
|
|
68
|
-
env["CI_NAME"] === "codeship") {
|
|
69
|
-
return 1;
|
|
70
|
-
}
|
|
71
|
-
return min;
|
|
98
|
+
const ciLevel = detectCiColorLevel(min);
|
|
99
|
+
if (ciLevel !== undefined) {
|
|
100
|
+
return ciLevel;
|
|
72
101
|
}
|
|
73
102
|
if ("TEAMCITY_VERSION" in env) {
|
|
74
103
|
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env["TEAMCITY_VERSION"] || "")
|
|
@@ -84,24 +113,9 @@ function _supportsColor(haveStream, options = {}) {
|
|
|
84
113
|
if (env["TERM"] === "xterm-ghostty") {
|
|
85
114
|
return 3;
|
|
86
115
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
switch (env["TERM_PROGRAM"]) {
|
|
91
|
-
case "iTerm.app": {
|
|
92
|
-
return version >= 3 ? 3 : 2;
|
|
93
|
-
}
|
|
94
|
-
case "Apple_Terminal": {
|
|
95
|
-
return 2;
|
|
96
|
-
}
|
|
97
|
-
// No default
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (/-256(color)?$/i.test(env["TERM"] || "")) {
|
|
101
|
-
return 2;
|
|
102
|
-
}
|
|
103
|
-
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env["TERM"] || "")) {
|
|
104
|
-
return 1;
|
|
116
|
+
const terminalLevel = detectTerminalColorLevel();
|
|
117
|
+
if (terminalLevel !== undefined) {
|
|
118
|
+
return terminalLevel;
|
|
105
119
|
}
|
|
106
120
|
if ("COLORTERM" in env) {
|
|
107
121
|
return 1;
|
|
@@ -58,6 +58,18 @@ export declare class Cell {
|
|
|
58
58
|
* @returns {String}
|
|
59
59
|
*/
|
|
60
60
|
drawTop(drawRight: boolean): string;
|
|
61
|
+
/**
|
|
62
|
+
* Determines the base border character based on cell position.
|
|
63
|
+
*/
|
|
64
|
+
private _getBaseTopLeftChar;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if there's a ColSpanCell above this cell.
|
|
67
|
+
*/
|
|
68
|
+
private _hasSpanAbove;
|
|
69
|
+
/**
|
|
70
|
+
* Checks if there's a RowSpanCell to the left of this cell (after walking past any ColSpanCells).
|
|
71
|
+
*/
|
|
72
|
+
private _hasRowSpanToLeft;
|
|
61
73
|
_topLeftChar(offset: number): string;
|
|
62
74
|
wrapWithStyleColors(styleProperty: "head" | "border", content: string): string;
|
|
63
75
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/cell.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEb,KAAK,mBAAmB,EAMxB,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAoBpB,qBAAa,IAAI;IACf,OAAO,EAAG,WAAW,CAAC;IACtB,OAAO,EAAG,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAkC;IACjE,QAAQ,SAAO;IACf,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,IAAI,EAAE,MAAM,EAAE,CAAM;IACpB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,YAAY,SAAK;IACjB,aAAa,SAAK;IAClB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,KAAK,SAAK;IACV,MAAM,SAAK;IACX,MAAM,EAAE,mBAAmB,CAAU;IACrC,MAAM,EAAE,iBAAiB,CAAS;IAClC,SAAS,UAAS;IAClB,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAQ;IAE9B;;;;OAIG;gBACS,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;IAIrE,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IA2B3E,iBAAiB,CAAC,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI;IAqC5E,YAAY,CAAC,YAAY,EAAE,oBAAoB,GAAG,MAAM,EAAE;IAsB1D,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAS5C;;;;;;;OAOG;IACH,IAAI,CAAC,YAAY,EAAE,oBAAoB,GAAG,IAAI;IAqB9C;;;;;;;OAOG;IACH,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAoCvE;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAoBnC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/cell.ts"],"names":[],"mappings":"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"}
|
|
@@ -200,37 +200,52 @@ export class Cell {
|
|
|
200
200
|
}
|
|
201
201
|
return this.wrapWithStyleColors("border", content.join(""));
|
|
202
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Determines the base border character based on cell position.
|
|
205
|
+
*/
|
|
206
|
+
_getBaseTopLeftChar(x, offset) {
|
|
207
|
+
if (this.y === 0) {
|
|
208
|
+
if (x === 0)
|
|
209
|
+
return "topLeft";
|
|
210
|
+
return offset === 0 ? "topMid" : "top";
|
|
211
|
+
}
|
|
212
|
+
if (x === 0)
|
|
213
|
+
return "leftMid";
|
|
214
|
+
return offset === 0 ? "midMid" : "bottomMid";
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Checks if there's a ColSpanCell above this cell.
|
|
218
|
+
*/
|
|
219
|
+
_hasSpanAbove(x) {
|
|
220
|
+
if (!this.cells || this.y === null)
|
|
221
|
+
return false;
|
|
222
|
+
return this.cells[this.y - 1]?.[x] instanceof ColSpanCell;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Checks if there's a RowSpanCell to the left of this cell (after walking past any ColSpanCells).
|
|
226
|
+
*/
|
|
227
|
+
_hasRowSpanToLeft(x) {
|
|
228
|
+
if (!this.cells || this.y === null)
|
|
229
|
+
return false;
|
|
230
|
+
let i = 1;
|
|
231
|
+
while (this.cells[this.y]?.[x - i] instanceof ColSpanCell) {
|
|
232
|
+
i++;
|
|
233
|
+
}
|
|
234
|
+
return this.cells[this.y]?.[x - i] instanceof RowSpanCell;
|
|
235
|
+
}
|
|
203
236
|
_topLeftChar(offset) {
|
|
204
237
|
if (this.x === null) {
|
|
205
238
|
throw new Error("Cell x must be initialized before calling _topLeftChar");
|
|
206
239
|
}
|
|
207
240
|
const x = this.x + offset;
|
|
208
|
-
let leftChar;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (x === 0) {
|
|
214
|
-
leftChar = "leftMid";
|
|
241
|
+
let leftChar = this._getBaseTopLeftChar(x, offset);
|
|
242
|
+
// Apply span modifications for non-top rows
|
|
243
|
+
if (this.y !== 0 && x !== 0) {
|
|
244
|
+
if (this._hasSpanAbove(x)) {
|
|
245
|
+
leftChar = offset === 0 ? "topMid" : "mid";
|
|
215
246
|
}
|
|
216
|
-
else {
|
|
217
|
-
leftChar =
|
|
218
|
-
if (this.cells && this.y !== null) {
|
|
219
|
-
// TODO: cells should always exist - some tests don't fill it in though
|
|
220
|
-
const spanAbove = this.cells[this.y - 1]?.[x] instanceof ColSpanCell;
|
|
221
|
-
if (spanAbove) {
|
|
222
|
-
leftChar = offset === 0 ? "topMid" : "mid";
|
|
223
|
-
}
|
|
224
|
-
if (offset === 0) {
|
|
225
|
-
let i = 1;
|
|
226
|
-
while (this.cells[this.y]?.[x - i] instanceof ColSpanCell) {
|
|
227
|
-
i++;
|
|
228
|
-
}
|
|
229
|
-
if (this.cells[this.y]?.[x - i] instanceof RowSpanCell) {
|
|
230
|
-
leftChar = "leftMid";
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
247
|
+
else if (offset === 0 && this._hasRowSpanToLeft(x)) {
|
|
248
|
+
leftChar = "leftMid";
|
|
234
249
|
}
|
|
235
250
|
}
|
|
236
251
|
return this.chars[leftChar];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-manager.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/layout-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,WAAW,CAAC;AAe3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAsBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAcT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsB5E;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,EAAE,EAAE,EACd,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAOT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAmBxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAWxD;
|
|
1
|
+
{"version":3,"file":"layout-manager.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/layout-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,WAAW,CAAC;AAe3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAsBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAcT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsB5E;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,EAAE,EAAE,EACd,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAOT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAmBxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAWxD;AAiDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAuBvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAOzD;AAoGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,cAAc,GAAG,eAAe,EAC9C,CAAC,EAAE,GAAG,GAAG,GAAG,EACZ,SAAS,EAAE,MAAM,GAChB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,CAmBvD;AAED,eAAO,MAAM,aAAa,SArBhB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IA0BnD,CAAC;AACF,eAAO,MAAM,cAAc,SA3BjB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IAgCnD,CAAC"}
|