@linxiraos/pi-tui 1.1.26 → 1.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 +51 -491
- package/README.md +13 -7
- package/dist/types/active-terminal.d.ts +30 -0
- package/dist/types/app-keybindings.d.ts +7 -2
- package/dist/types/apps/cleanse-board.d.ts +1 -1
- package/dist/types/apps/debug/log-viewer.d.ts +4 -0
- package/dist/types/apps/debug/raw-sse-buffer.d.ts +2 -0
- package/dist/types/apps/git/git-tui.d.ts +5 -4
- package/dist/types/apps/git/help.d.ts +3 -1
- package/dist/types/apps/if-bench-board.d.ts +2 -2
- package/dist/types/apps/setup-model-picker.d.ts +1 -1
- package/dist/types/autocomplete.d.ts +5 -2
- package/dist/types/charts/chart-plan.d.ts +674 -0
- package/dist/types/charts/chart-svg.d.ts +59 -0
- package/dist/types/charts/table-data.d.ts +175 -0
- package/dist/types/chat/assistant-message.d.ts +11 -1
- package/dist/types/chat/chat-transcript-builder.d.ts +3 -0
- package/dist/types/chat/compaction-summary-message.d.ts +1 -0
- package/dist/types/chat/execution-shared.d.ts +6 -5
- package/dist/types/chat/fence-figure.d.ts +42 -0
- package/dist/types/chat/figure-markdown.d.ts +42 -0
- package/dist/types/chat/messages.d.ts +1 -1
- package/dist/types/chat/svg-figure.d.ts +33 -0
- package/dist/types/chat/svg-source.d.ts +49 -0
- package/dist/types/chat/table-chart.d.ts +89 -0
- package/dist/types/chat/tool-execution.d.ts +2 -0
- package/dist/types/chat/user-message.d.ts +17 -4
- package/dist/types/chrome/shared.d.ts +9 -0
- package/dist/types/chrome/status-notice.d.ts +15 -3
- package/dist/types/chrome/transcript-container.d.ts +6 -0
- package/dist/types/components/box.d.ts +1 -0
- package/dist/types/components/disclosure.d.ts +1 -0
- package/dist/types/components/editor.d.ts +23 -5
- package/dist/types/components/form.d.ts +1 -0
- package/dist/types/components/image.d.ts +26 -44
- package/dist/types/components/input.d.ts +2 -1
- package/dist/types/components/key-value-list.d.ts +1 -0
- package/dist/types/components/layout/row.d.ts +1 -0
- package/dist/types/components/layout/stack.d.ts +1 -0
- package/dist/types/components/loader.d.ts +5 -6
- package/dist/types/components/markdown.d.ts +47 -5
- package/dist/types/components/scroll-view.d.ts +1 -0
- package/dist/types/components/section.d.ts +1 -0
- package/dist/types/components/table.d.ts +1 -0
- package/dist/types/components/text.d.ts +1 -0
- package/dist/types/components/tree-view.d.ts +7 -0
- package/dist/types/components/truncated-text.d.ts +1 -0
- package/dist/types/fuzzy.d.ts +29 -1
- package/dist/types/key-hint-format.d.ts +9 -1
- package/dist/types/keybinding-matchers.d.ts +3 -0
- package/dist/types/keybindings.d.ts +1 -1
- package/dist/types/kitty-graphics.d.ts +2 -2
- package/dist/types/loop-watchdog.d.ts +8 -7
- package/dist/types/multiplexers/cmux.d.ts +16 -0
- package/dist/types/multiplexers/herdr.d.ts +26 -0
- package/dist/types/multiplexers/notify.d.ts +13 -0
- package/dist/types/multiplexers/orca.d.ts +12 -0
- package/dist/types/multiplexers/screen.d.ts +9 -0
- package/dist/types/multiplexers/tmux.d.ts +29 -0
- package/dist/types/multiplexers/types.d.ts +100 -0
- package/dist/types/multiplexers/wmux.d.ts +12 -0
- package/dist/types/multiplexers/zellij.d.ts +12 -0
- package/dist/types/native/apply.d.ts +4 -3
- package/dist/types/native/backend.d.ts +5 -4
- package/dist/types/native/blobs.d.ts +7 -3
- package/dist/types/native/encode.d.ts +8 -6
- package/dist/types/native/node.d.ts +36 -5
- package/dist/types/native/overlay.d.ts +8 -3
- package/dist/types/native/settle.d.ts +4 -3
- package/dist/types/overlays/agent-hub-projection.d.ts +6 -5
- package/dist/types/overlays/agent-hub-types.d.ts +9 -0
- package/dist/types/overlays/agent-hub.d.ts +3 -0
- package/dist/types/overlays/agent-transcript-viewer.d.ts +12 -2
- package/dist/types/overlays/agents-hub.d.ts +9 -0
- package/dist/types/overlays/annotation-overlay.d.ts +19 -2
- package/dist/types/overlays/annotation-types.d.ts +2 -0
- package/dist/types/overlays/ask-dialog.d.ts +5 -2
- package/dist/types/overlays/btw-history-panel.d.ts +13 -1
- package/dist/types/overlays/copy-selector.d.ts +1 -0
- package/dist/types/overlays/history-search.d.ts +10 -0
- package/dist/types/overlays/hook-selector.d.ts +9 -4
- package/dist/types/overlays/hub-frame.d.ts +4 -1
- package/dist/types/overlays/jobs-panel.d.ts +1 -7
- package/dist/types/overlays/model-browser.d.ts +54 -7
- package/dist/types/overlays/model-hub.d.ts +37 -0
- package/dist/types/overlays/oauth-selector.d.ts +0 -1
- package/dist/types/overlays/plan-review-overlay.d.ts +3 -2
- package/dist/types/overlays/report-panel.d.ts +68 -0
- package/dist/types/overlays/rewind-selector.d.ts +1 -0
- package/dist/types/overlays/session-observer-registry.d.ts +2 -0
- package/dist/types/overlays/session-selector.d.ts +6 -2
- package/dist/types/overlays/settings-defs.d.ts +1 -0
- package/dist/types/overlays/thinking-selector.d.ts +2 -2
- package/dist/types/overlays/usage-dashboard.d.ts +12 -8
- package/dist/types/overlays/usage-display.d.ts +3 -1
- package/dist/types/prompt/composer-cache.d.ts +0 -16
- package/dist/types/prompt/composer.d.ts +18 -3
- package/dist/types/prompt/custom-editor.d.ts +25 -13
- package/dist/types/prompt/image-source.d.ts +2 -1
- package/dist/types/prompt/interactive-context-helpers.d.ts +5 -1
- package/dist/types/prompt/model-mention-autocomplete.d.ts +1 -1
- package/dist/types/prompt/welcome.d.ts +7 -2
- package/dist/types/render/composite.d.ts +2 -0
- package/dist/types/render/output-pane.d.ts +1 -0
- package/dist/types/render/render-utils.d.ts +1 -0
- package/dist/types/render/tool-card.d.ts +6 -0
- package/dist/types/render/width-aware-text.d.ts +2 -0
- package/dist/types/setup/scenes/types.d.ts +1 -0
- package/dist/types/space-hold.d.ts +40 -25
- package/dist/types/status-line/component.d.ts +3 -0
- package/dist/types/status-line/context-usage.d.ts +7 -5
- package/dist/types/status-line/host.d.ts +4 -1
- package/dist/types/status-line/segments.d.ts +2 -0
- package/dist/types/status-line/types.d.ts +14 -3
- package/dist/types/terminal-capabilities.d.ts +41 -36
- package/dist/types/terminal-multiplexer.d.ts +127 -14
- package/dist/types/terminal.d.ts +23 -16
- package/dist/types/theme/active-symbols.d.ts +1 -1
- package/dist/types/theme/schema.d.ts +11 -2
- package/dist/types/theme/symbols.d.ts +1 -1
- package/dist/types/theme/theme-class.d.ts +7 -0
- package/dist/types/theme/theme.d.ts +1 -1
- package/dist/types/theme/tui-adapters.d.ts +3 -0
- package/dist/types/thinking.d.ts +1 -1
- package/dist/types/tmux.d.ts +11 -4
- package/dist/types/tools/bash.d.ts +7 -2
- package/dist/types/tools/daemon.d.ts +1 -1
- package/dist/types/tools/eval.d.ts +22 -3
- package/dist/types/tools/glob.d.ts +4 -0
- package/dist/types/tools/native-view.d.ts +47 -0
- package/dist/types/tools/output-meta.d.ts +11 -1
- package/dist/types/tools/renderer.d.ts +37 -2
- package/dist/types/tools/streaming-output.d.ts +20 -1
- package/dist/types/tools/task.d.ts +2 -3
- package/dist/types/tools/write.d.ts +9 -2
- package/dist/types/tools/yield.d.ts +22 -0
- package/dist/types/tui.d.ts +36 -0
- package/dist/types/utils.d.ts +6 -0
- package/dist/types/vim.d.ts +19 -5
- package/dist/types/windows-input-mode.d.ts +33 -1
- package/package.json +13 -9
- package/src/active-terminal.d.ts +30 -0
- package/src/active-terminal.ts +80 -0
- package/src/app-keybindings.d.ts +7 -2
- package/src/app-keybindings.ts +7 -2
- package/src/apps/autoresearch-dashboard.ts +7 -3
- package/src/apps/cleanse-board.ts +2 -2
- package/src/apps/cleanse-picker.ts +1 -1
- package/src/apps/debug/log-viewer.ts +188 -72
- package/src/apps/debug/raw-sse-buffer.ts +8 -0
- package/src/apps/debug/raw-sse.ts +39 -5
- package/src/apps/git/diff-pane.ts +96 -23
- package/src/apps/git/git-tui.ts +23 -16
- package/src/apps/git/help.ts +29 -20
- package/src/apps/git/sidebar.ts +8 -3
- package/src/apps/if-bench-board.ts +2 -2
- package/src/apps/ps-top.ts +2 -2
- package/src/apps/setup-model-picker.ts +1 -1
- package/src/autocomplete.d.ts +5 -2
- package/src/autocomplete.ts +67 -43
- package/src/bracketed-paste.ts +10 -3
- package/src/charts/chart-plan.d.ts +674 -0
- package/src/charts/chart-plan.ts +5081 -0
- package/src/charts/chart-svg.d.ts +59 -0
- package/src/charts/chart-svg.ts +4657 -0
- package/src/charts/table-data.d.ts +175 -0
- package/src/charts/table-data.ts +1478 -0
- package/src/chat/advisor-message.ts +11 -0
- package/src/chat/assistant-message.d.ts +11 -1
- package/src/chat/assistant-message.ts +245 -54
- package/src/chat/chat-transcript-builder.d.ts +3 -0
- package/src/chat/chat-transcript-builder.ts +9 -3
- package/src/chat/compaction-summary-message.d.ts +1 -0
- package/src/chat/compaction-summary-message.ts +8 -0
- package/src/chat/execution-shared.d.ts +6 -5
- package/src/chat/execution-shared.ts +42 -25
- package/src/chat/fence-figure.d.ts +42 -0
- package/src/chat/fence-figure.ts +80 -0
- package/src/chat/figure-markdown.d.ts +42 -0
- package/src/chat/figure-markdown.ts +174 -0
- package/src/chat/messages.d.ts +1 -1
- package/src/chat/messages.ts +1 -1
- package/src/chat/read-tool-group.ts +6 -4
- package/src/chat/skill-message.ts +6 -0
- package/src/chat/svg-figure.d.ts +33 -0
- package/src/chat/svg-figure.ts +399 -0
- package/src/chat/svg-source.d.ts +49 -0
- package/src/chat/svg-source.ts +188 -0
- package/src/chat/table-chart.d.ts +89 -0
- package/src/chat/table-chart.ts +294 -0
- package/src/chat/tool-execution.d.ts +2 -0
- package/src/chat/tool-execution.ts +86 -7
- package/src/chat/user-message.d.ts +17 -4
- package/src/chat/user-message.ts +71 -8
- package/src/chrome/shared.ts +53 -0
- package/src/chrome/status-notice.ts +25 -7
- package/src/chrome/transcript-container.d.ts +6 -0
- package/src/chrome/transcript-container.ts +162 -19
- package/src/components/box.d.ts +1 -0
- package/src/components/box.ts +5 -0
- package/src/components/disclosure.d.ts +1 -0
- package/src/components/disclosure.ts +8 -0
- package/src/components/editor.d.ts +23 -5
- package/src/components/editor.ts +316 -47
- package/src/components/form.d.ts +1 -0
- package/src/components/form.ts +8 -0
- package/src/components/image.d.ts +26 -44
- package/src/components/image.ts +115 -152
- package/src/components/input.d.ts +2 -1
- package/src/components/input.ts +17 -7
- package/src/components/key-value-list.d.ts +1 -0
- package/src/components/key-value-list.ts +4 -0
- package/src/components/layout/row.d.ts +1 -0
- package/src/components/layout/row.ts +7 -0
- package/src/components/layout/stack.d.ts +1 -0
- package/src/components/layout/stack.ts +7 -0
- package/src/components/loader.d.ts +5 -6
- package/src/components/loader.ts +10 -17
- package/src/components/markdown.d.ts +47 -5
- package/src/components/markdown.ts +786 -303
- package/src/components/scroll-view.d.ts +1 -0
- package/src/components/scroll-view.ts +5 -0
- package/src/components/section.d.ts +1 -0
- package/src/components/section.ts +5 -0
- package/src/components/settings-list.ts +2 -0
- package/src/components/table.d.ts +1 -0
- package/src/components/table.ts +4 -0
- package/src/components/text.d.ts +1 -0
- package/src/components/text.ts +7 -0
- package/src/components/tree-view.d.ts +7 -0
- package/src/components/tree-view.ts +38 -8
- package/src/components/truncated-text.d.ts +1 -0
- package/src/components/truncated-text.ts +5 -0
- package/src/desktop-notify.ts +3 -2
- package/src/fuzzy.d.ts +29 -1
- package/src/fuzzy.ts +115 -30
- package/src/hotkeys-markdown.ts +9 -2
- package/src/key-hint-format.d.ts +9 -1
- package/src/key-hint-format.ts +26 -11
- package/src/keybinding-matchers.d.ts +3 -0
- package/src/keybinding-matchers.ts +6 -2
- package/src/keybindings.d.ts +1 -1
- package/src/keybindings.ts +1 -1
- package/src/kitty-graphics.d.ts +2 -2
- package/src/kitty-graphics.ts +11 -5
- package/src/loop-watchdog.d.ts +8 -7
- package/src/loop-watchdog.ts +18 -13
- package/src/multiplexers/cmux.d.ts +16 -0
- package/src/multiplexers/cmux.ts +29 -0
- package/src/multiplexers/herdr.d.ts +26 -0
- package/src/multiplexers/herdr.ts +64 -0
- package/src/multiplexers/notify.d.ts +13 -0
- package/src/multiplexers/notify.ts +24 -0
- package/src/multiplexers/orca.d.ts +12 -0
- package/src/multiplexers/orca.ts +16 -0
- package/src/multiplexers/screen.d.ts +9 -0
- package/src/multiplexers/screen.ts +15 -0
- package/src/multiplexers/tmux.d.ts +29 -0
- package/src/multiplexers/tmux.ts +40 -0
- package/src/multiplexers/types.d.ts +100 -0
- package/src/multiplexers/types.ts +110 -0
- package/src/multiplexers/wmux.d.ts +12 -0
- package/src/multiplexers/wmux.ts +16 -0
- package/src/multiplexers/zellij.d.ts +12 -0
- package/src/multiplexers/zellij.ts +24 -0
- package/src/native/apply.d.ts +4 -3
- package/src/native/apply.ts +4 -3
- package/src/native/backend.d.ts +5 -4
- package/src/native/backend.ts +199 -22
- package/src/native/blobs.d.ts +7 -3
- package/src/native/blobs.ts +47 -12
- package/src/native/encode.d.ts +8 -6
- package/src/native/encode.ts +76 -34
- package/src/native/node.d.ts +36 -5
- package/src/native/node.ts +31 -5
- package/src/native/overlay.d.ts +8 -3
- package/src/native/overlay.ts +17 -4
- package/src/native/reconcile.ts +16 -4
- package/src/native/settle.d.ts +4 -3
- package/src/native/settle.ts +4 -3
- package/src/overlays/agent-hub-projection.d.ts +6 -5
- package/src/overlays/agent-hub-projection.ts +124 -13
- package/src/overlays/agent-hub-types.d.ts +9 -0
- package/src/overlays/agent-hub-types.ts +6 -0
- package/src/overlays/agent-hub.ts +48 -29
- package/src/overlays/agent-transcript-viewer.ts +93 -23
- package/src/overlays/agents-hub.ts +28 -8
- package/src/overlays/annotation-overlay.ts +293 -90
- package/src/overlays/annotation-types.ts +2 -0
- package/src/overlays/ask-dialog.ts +10 -17
- package/src/overlays/btw-history-panel.ts +136 -39
- package/src/overlays/copy-selector.d.ts +1 -0
- package/src/overlays/copy-selector.ts +32 -8
- package/src/overlays/extensions/extension-dashboard.ts +4 -4
- package/src/overlays/extensions/state-manager.ts +52 -12
- package/src/overlays/history-search.ts +100 -7
- package/src/overlays/hook-selector.ts +12 -5
- package/src/overlays/hub-frame.ts +19 -1
- package/src/overlays/jobs-panel.ts +33 -52
- package/src/overlays/model-browser.ts +367 -122
- package/src/overlays/model-hub.ts +435 -59
- package/src/overlays/move-overlay.ts +28 -14
- package/src/overlays/oauth-selector.ts +54 -70
- package/src/overlays/pause-screen.ts +2 -2
- package/src/overlays/plan-review-overlay.ts +208 -70
- package/src/overlays/plugin-settings.ts +3 -3
- package/src/overlays/report-panel.ts +191 -0
- package/src/overlays/rewind-selector.ts +88 -17
- package/src/overlays/session-observer-registry.d.ts +2 -0
- package/src/overlays/session-observer-registry.ts +10 -2
- package/src/overlays/session-selector.ts +64 -26
- package/src/overlays/settings-defs.ts +5 -4
- package/src/overlays/settings-selector.ts +33 -8
- package/src/overlays/snapcompact-shape-preview.ts +2 -3
- package/src/overlays/stats-notice.ts +1 -1
- package/src/overlays/thinking-selector.ts +11 -10
- package/src/overlays/tree-selector.ts +41 -20
- package/src/overlays/usage-dashboard.ts +117 -58
- package/src/overlays/usage-display.ts +10 -4
- package/src/overlays/usage-row.ts +22 -8
- package/src/prompt/attachment-chips.ts +15 -11
- package/src/prompt/composer-attachments.ts +6 -4
- package/src/prompt/composer-cache.ts +7 -86
- package/src/prompt/composer.ts +37 -26
- package/src/prompt/custom-editor.ts +282 -105
- package/src/prompt/image-source.ts +2 -1
- package/src/prompt/interactive-context-helpers.ts +32 -18
- package/src/prompt/macos-spelling.ts +7 -0
- package/src/prompt/magic-keywords.ts +11 -2
- package/src/prompt/model-mention-autocomplete.ts +14 -14
- package/src/prompt/queued-messages.ts +6 -4
- package/src/prompt/tips.txt +13 -9
- package/src/prompt/welcome.ts +64 -46
- package/src/prompt/word-completion.ts +38 -5
- package/src/render/composite.d.ts +2 -0
- package/src/render/composite.ts +64 -0
- package/src/render/output-pane.d.ts +1 -0
- package/src/render/output-pane.ts +6 -0
- package/src/render/render-utils.d.ts +1 -0
- package/src/render/render-utils.ts +16 -1
- package/src/render/tool-card.d.ts +6 -0
- package/src/render/tool-card.ts +15 -0
- package/src/render/width-aware-text.d.ts +2 -0
- package/src/render/width-aware-text.ts +5 -0
- package/src/setup/scenes/model.ts +2 -1
- package/src/setup/scenes/types.ts +1 -0
- package/src/space-hold.d.ts +40 -25
- package/src/space-hold.ts +156 -52
- package/src/status-line/component.ts +292 -78
- package/src/status-line/context-usage.ts +21 -46
- package/src/status-line/host.ts +4 -1
- package/src/status-line/segments.ts +40 -22
- package/src/status-line/types.ts +15 -3
- package/src/terminal-capabilities.d.ts +41 -36
- package/src/terminal-capabilities.ts +137 -213
- package/src/terminal-multiplexer.d.ts +127 -14
- package/src/terminal-multiplexer.ts +112 -33
- package/src/terminal.d.ts +23 -16
- package/src/terminal.ts +203 -99
- package/src/theme/active-symbols.d.ts +1 -1
- package/src/theme/active-symbols.ts +1 -1
- package/src/theme/schema-validation.ts +1 -0
- package/src/theme/schema.d.ts +11 -2
- package/src/theme/schema.ts +14 -1
- package/src/theme/session-color.ts +1 -7
- package/src/theme/symbols.d.ts +1 -1
- package/src/theme/symbols.ts +11 -4
- package/src/theme/theme-class.d.ts +7 -0
- package/src/theme/theme-class.ts +26 -1
- package/src/theme/theme-schema.json +5 -1
- package/src/theme/theme.d.ts +1 -1
- package/src/theme/theme.ts +8 -4
- package/src/theme/tui-adapters.d.ts +3 -0
- package/src/theme/tui-adapters.ts +68 -0
- package/src/thinking.d.ts +1 -1
- package/src/thinking.ts +1 -1
- package/src/tmux.d.ts +11 -4
- package/src/tmux.ts +47 -11
- package/src/tools/ast-edit.ts +59 -35
- package/src/tools/ast-grep.ts +35 -16
- package/src/tools/bash.d.ts +7 -2
- package/src/tools/bash.ts +116 -47
- package/src/tools/daemon.d.ts +1 -1
- package/src/tools/daemon.ts +1 -1
- package/src/tools/default-renderer.ts +35 -19
- package/src/tools/edit.ts +142 -120
- package/src/tools/eval-format/index.ts +28 -2
- package/src/tools/eval-format/javascript.ts +7 -5
- package/src/tools/eval.d.ts +22 -3
- package/src/tools/eval.ts +364 -208
- package/src/tools/fetch.ts +5 -6
- package/src/tools/glob.d.ts +4 -0
- package/src/tools/glob.ts +33 -65
- package/src/tools/grep.ts +81 -48
- package/src/tools/index.ts +2 -0
- package/src/tools/lsp.ts +81 -59
- package/src/tools/mcp.ts +111 -68
- package/src/tools/native-view.d.ts +47 -0
- package/src/tools/native-view.ts +102 -1
- package/src/tools/output-meta.d.ts +11 -1
- package/src/tools/output-meta.ts +23 -3
- package/src/tools/read.ts +7 -5
- package/src/tools/renderer.d.ts +37 -2
- package/src/tools/renderer.ts +42 -2
- package/src/tools/streaming-output.d.ts +20 -1
- package/src/tools/streaming-output.ts +154 -50
- package/src/tools/task.d.ts +2 -3
- package/src/tools/task.ts +115 -62
- package/src/tools/todo.ts +119 -30
- package/src/tools/wait.ts +34 -24
- package/src/tools/web-search.ts +1 -1
- package/src/tools/write.d.ts +9 -2
- package/src/tools/write.ts +147 -95
- package/src/tools/yield.d.ts +22 -0
- package/src/tools/yield.ts +225 -0
- package/src/tui.d.ts +36 -0
- package/src/tui.ts +666 -217
- package/src/utils.d.ts +6 -0
- package/src/utils.ts +19 -0
- package/src/vim.d.ts +19 -5
- package/src/vim.ts +333 -18
- package/src/windows-input-mode.d.ts +33 -1
- package/src/windows-input-mode.ts +212 -6
package/README.md
CHANGED
|
@@ -66,14 +66,16 @@ interface Component {
|
|
|
66
66
|
render(width: number): readonly string[];
|
|
67
67
|
handleInput?(data: string): void;
|
|
68
68
|
invalidate?(): void;
|
|
69
|
+
releaseRenderCaches?(): void;
|
|
69
70
|
}
|
|
70
71
|
```
|
|
71
72
|
|
|
72
|
-
| Method
|
|
73
|
-
|
|
|
74
|
-
| `render(width)`
|
|
75
|
-
| `handleInput?(data)`
|
|
76
|
-
| `invalidate?()`
|
|
73
|
+
| Method | Description |
|
|
74
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
75
|
+
| `render(width)` | Returns an array of strings, one per line. Each line **must not exceed `width`** or the TUI will error. Use `truncateToWidth()` or manual wrapping to ensure this. The result is component-owned and immutable to callers; return the same array reference when unchanged (enables renderer memoization) and a new array when content changed. |
|
|
76
|
+
| `handleInput?(data)` | Called when the component has focus and receives keyboard input. The `data` string contains raw terminal input (may include ANSI escape sequences). |
|
|
77
|
+
| `invalidate?()` | Called to clear any cached render state. Components should re-render from scratch on the next `render()` call. |
|
|
78
|
+
| `releaseRenderCaches?()` | Drops only derived render caches. The next `render()` must return the same rows without eager rebuilds, renderer callbacks, image conversions, or child replacement. |
|
|
77
79
|
|
|
78
80
|
## Built-in Components
|
|
79
81
|
|
|
@@ -455,7 +457,7 @@ const spacer = new Spacer(2); // 2 empty lines (default: 1)
|
|
|
455
457
|
|
|
456
458
|
### Image
|
|
457
459
|
|
|
458
|
-
Renders images inline for terminals that support the Kitty graphics protocol (Kitty, Ghostty, WezTerm, and Warp on macOS/Linux)
|
|
460
|
+
Renders images inline for terminals that support the Kitty graphics protocol (Kitty, Ghostty, WezTerm, and Warp on macOS/Linux), iTerm2 inline images or SIXEL. Falls back to a text placeholder on unsupported terminals.
|
|
459
461
|
|
|
460
462
|
```typescript
|
|
461
463
|
interface ImageTheme {
|
|
@@ -466,17 +468,21 @@ interface ImageOptions {
|
|
|
466
468
|
maxWidthCells?: number;
|
|
467
469
|
maxHeightCells?: number;
|
|
468
470
|
filename?: string;
|
|
471
|
+
budget?: ImageBudget; // usually tui.imageBudget
|
|
472
|
+
requestRender?: () => void; // repaint once a SIXEL encode lands; defaults to the budget's
|
|
469
473
|
}
|
|
470
474
|
|
|
471
475
|
const image = new Image(
|
|
472
476
|
base64Data, // base64-encoded image data
|
|
473
477
|
"image/png", // MIME type
|
|
474
478
|
theme, // ImageTheme
|
|
475
|
-
options, // optional ImageOptions
|
|
479
|
+
{ ...options, budget: tui.imageBudget }, // optional ImageOptions
|
|
476
480
|
);
|
|
477
481
|
tui.addChild(image);
|
|
478
482
|
```
|
|
479
483
|
|
|
484
|
+
SIXEL images encode off the JavaScript thread: the first render reserves the image's rows and the image appears on the repaint `budget` or `requestRender` triggers once the encode lands. Without either, it waits for an unrelated repaint.
|
|
485
|
+
|
|
480
486
|
Supported formats: PNG, JPEG, GIF, WebP. Dimensions are parsed from the image headers automatically.
|
|
481
487
|
|
|
482
488
|
## Autocomplete
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ownership of stdout by a started {@link ProcessTerminal}, kept in a leaf
|
|
3
|
+
* module so writers that `terminal.ts` itself imports (terminal capabilities,
|
|
4
|
+
* notifications) can route through the active terminal without an import cycle.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProcessTerminal } from "./terminal.js";
|
|
7
|
+
/** The started terminal that owns stdout in this thread, if any. */
|
|
8
|
+
export declare function getActiveTerminal(): ProcessTerminal | null;
|
|
9
|
+
/** Record the terminal that owns stdout (`ProcessTerminal.start`), or release it with `null` (`stop`). */
|
|
10
|
+
export declare function setActiveTerminal(terminal: ProcessTerminal | null): void;
|
|
11
|
+
/** Observe stdout errors through the shared listener. Returns the unregister callback. */
|
|
12
|
+
export declare function registerStdoutErrorHandler(handler: (err: Error) => void): () => void;
|
|
13
|
+
/**
|
|
14
|
+
* Hand `data` to the active terminal's ordered output path. Returns false when
|
|
15
|
+
* no terminal in this thread has started. On the main thread that means the
|
|
16
|
+
* caller owns stdout; a worker thread never sees the main thread's terminal, so
|
|
17
|
+
* there `false` is not permission to write. Prefer {@link writeTerminalSequence}.
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeThroughActiveTerminal(data: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Write an out-of-band escape sequence (window title, OSC 52 clipboard,
|
|
22
|
+
* notification). While a TUI owns stdout, its frames go through an off-thread
|
|
23
|
+
* pump in chunks that ignore escape boundaries; a direct `process.stdout.write`
|
|
24
|
+
* can land between two chunks and split a frame's escape sequence, and the host
|
|
25
|
+
* terminal then prints its tail as text. So the sequence takes the active
|
|
26
|
+
* terminal's ordered output path, and goes straight to stdout, best-effort, only
|
|
27
|
+
* when no terminal owns it. A worker thread cannot reach the main thread's
|
|
28
|
+
* terminal and would write around its pump, so it writes nothing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function writeTerminalSequence(data: string): void;
|
|
@@ -40,6 +40,7 @@ interface AppKeybindings {
|
|
|
40
40
|
"app.tree.unfoldOrDown": true;
|
|
41
41
|
"app.plan.toggle": true;
|
|
42
42
|
"app.history.search": true;
|
|
43
|
+
"app.stt.pushToTalk": true;
|
|
43
44
|
"app.stt.toggle": true;
|
|
44
45
|
"app.live.toggle": true;
|
|
45
46
|
}
|
|
@@ -118,7 +119,7 @@ export declare const KEYBINDINGS: {
|
|
|
118
119
|
readonly description: "Delete word backward";
|
|
119
120
|
};
|
|
120
121
|
readonly "tui.editor.deleteWordForward": {
|
|
121
|
-
readonly defaultKeys: ["alt+delete", "alt+d", "super+alt+delete", "super+alt+d"];
|
|
122
|
+
readonly defaultKeys: ["alt+delete", "alt+d", "ctrl+delete", "super+alt+delete", "super+alt+d"];
|
|
122
123
|
readonly description: "Delete word forward";
|
|
123
124
|
};
|
|
124
125
|
readonly "tui.editor.deleteToLineStart": {
|
|
@@ -329,9 +330,13 @@ export declare const KEYBINDINGS: {
|
|
|
329
330
|
readonly defaultKeys: "ctrl+r";
|
|
330
331
|
readonly description: "Search history";
|
|
331
332
|
};
|
|
333
|
+
readonly "app.stt.pushToTalk": {
|
|
334
|
+
readonly defaultKeys: "space";
|
|
335
|
+
readonly description: "Hold to record speech-to-text";
|
|
336
|
+
};
|
|
332
337
|
readonly "app.stt.toggle": {
|
|
333
338
|
readonly defaultKeys: [];
|
|
334
|
-
readonly description: "Toggle speech-to-text
|
|
339
|
+
readonly description: "Toggle speech-to-text recording";
|
|
335
340
|
};
|
|
336
341
|
readonly "app.live.toggle": {
|
|
337
342
|
readonly defaultKeys: "ctrl+l";
|
|
@@ -25,7 +25,7 @@ export interface CleanseAgentOutcome {
|
|
|
25
25
|
error?: string;
|
|
26
26
|
resolvedModel?: string;
|
|
27
27
|
}
|
|
28
|
-
/** Rendering surface for one `
|
|
28
|
+
/** Rendering surface for one `zetacode cleanse` run. */
|
|
29
29
|
export interface CleanseStatusBoard {
|
|
30
30
|
readonly interactive: boolean;
|
|
31
31
|
/** Print a permanent line above the live area (plain write when non-TTY). */
|
|
@@ -15,6 +15,8 @@ type DebugLogViewerModelOptions = {
|
|
|
15
15
|
processPid?: number;
|
|
16
16
|
hasOlderLogs?: () => boolean;
|
|
17
17
|
loadOlderLogs?: (limitDays?: number) => Promise<string>;
|
|
18
|
+
/** Most entries kept; older history beyond it is not loaded. Defaults to {@link MAX_LOG_ENTRIES}. */
|
|
19
|
+
maxLogEntries?: number;
|
|
18
20
|
};
|
|
19
21
|
type ViewerRow = {
|
|
20
22
|
kind: "warning";
|
|
@@ -33,6 +35,8 @@ export declare class DebugLogViewerModel {
|
|
|
33
35
|
#private;
|
|
34
36
|
constructor(logText: string, options?: DebugLogViewerModelOptions);
|
|
35
37
|
get logCount(): number;
|
|
38
|
+
/** True once the entry cap is reached, so older history no longer loads. */
|
|
39
|
+
get historyLimitReached(): boolean;
|
|
36
40
|
get visibleLogCount(): number;
|
|
37
41
|
get rows(): readonly ViewerRow[];
|
|
38
42
|
get cursorRowIndex(): number | undefined;
|
|
@@ -41,6 +41,8 @@ export declare function rawSseRecordLines(record: RawSseDebugRecord): string[];
|
|
|
41
41
|
/** Bounded, observable capture of raw provider responses and SSE frames. */
|
|
42
42
|
export declare class RawSseDebugBuffer {
|
|
43
43
|
#private;
|
|
44
|
+
/** Bumped on every change to the captured window (append, eviction, clear); equal revisions mean equal snapshots. */
|
|
45
|
+
get revision(): number;
|
|
44
46
|
subscribe(listener: () => void): () => void;
|
|
45
47
|
recordResponse(response: ProviderResponseMetadata, model?: Model): void;
|
|
46
48
|
recordEvent(event: RawSseEvent, model?: Model): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `zetacode git` — fullscreen repository TUI.
|
|
3
3
|
*
|
|
4
4
|
* Layout: header (file path, encoding, stage-file button, close), toolbar
|
|
5
5
|
* (scope chip, file/diff toggle, hunk navigation, hunk/inline/split view
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
* arrows/PgUp/PgDn, vim motions (`j`/`k`/`h`/`l`/`g`/`G`), and mouse
|
|
14
14
|
* clicks/wheel. All toolbar buttons are clickable and mirrored by keys:
|
|
15
15
|
* `v` cycles the view (`1`–`4` pick one), `alt+↓`/`alt+↑` jump hunks and roll
|
|
16
|
-
* into the adjacent file at the edges, `
|
|
17
|
-
*
|
|
16
|
+
* into the adjacent file at the edges, `space` stages/unstages the focused
|
|
17
|
+
* diff row (the focused hunk in hunk view), `s`/`u` stage/unstage
|
|
18
|
+
* (hunk-aware), `x` discards a hunk, `delete` discards the
|
|
18
19
|
* whole file (press twice to confirm), `w` wraps, `b` cycles
|
|
19
20
|
* whitespace handling (exact → ignore whitespace → ignore
|
|
20
21
|
* formatting/import-only changes), `c` jumps to the commit form, `r`
|
|
@@ -62,5 +63,5 @@ export interface GitTuiHost {
|
|
|
62
63
|
* slash command). Resolves when the user closes it; the caller restores focus.
|
|
63
64
|
*/
|
|
64
65
|
export declare function showGitOverlay(ui: TUI, host: GitTuiHost): Promise<void>;
|
|
65
|
-
/** Run the fullscreen git TUI standalone (`
|
|
66
|
+
/** Run the fullscreen git TUI standalone (`zetacode git`) until the user quits. */
|
|
66
67
|
export declare function runGitTui(host: GitTuiHost): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NativeNode } from "../../native/node.js";
|
|
1
|
+
import type { NativeNode, NativeUiEvent } from "../../native/node.js";
|
|
2
2
|
import type { Component } from "../../tui.js";
|
|
3
3
|
/** The shortcuts overlay; any of `?`, escape or `q` closes it. */
|
|
4
4
|
export declare class GitHelpSheet implements Component {
|
|
@@ -10,6 +10,8 @@ export declare class GitHelpSheet implements Component {
|
|
|
10
10
|
};
|
|
11
11
|
constructor(close: () => void);
|
|
12
12
|
handleInput(data: string): void;
|
|
13
|
+
/** Close runs what Esc runs. */
|
|
14
|
+
handleNativeEvent(event: NativeUiEvent): void;
|
|
13
15
|
describe(): NativeNode;
|
|
14
16
|
render(width: number): readonly string[];
|
|
15
17
|
invalidate(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Live board and scoreboard for `
|
|
2
|
+
* Live board and scoreboard for `zetacode if-bench`.
|
|
3
3
|
*
|
|
4
4
|
* Interactive terminals get one repainted row per model — a turn ladder that
|
|
5
5
|
* fills as turns pass, the in-flight turn as a spinner cell, and the live
|
|
@@ -47,7 +47,7 @@ export interface IfBenchObserver<Turn extends IfBenchTurnRecord = IfBenchTurnRec
|
|
|
47
47
|
turnFinished?(label: string, record: Turn): void;
|
|
48
48
|
modelFinished?(report: Report): void;
|
|
49
49
|
}
|
|
50
|
-
/** Rendering surface for one `
|
|
50
|
+
/** Rendering surface for one `zetacode if-bench` run. */
|
|
51
51
|
export interface IfBenchBoard extends IfBenchObserver {
|
|
52
52
|
readonly interactive: boolean;
|
|
53
53
|
/** Print a permanent line above the live rows (plain write when non-TTY). */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Standalone TUI model picker used by `
|
|
2
|
+
* Standalone TUI model picker used by `zetacode setup speech`.
|
|
3
3
|
*
|
|
4
4
|
* One-shot {@link selectStandaloneItem} prompt: resolve on select/cancel and
|
|
5
5
|
* let the adapter tear the UI down. The standalone TUI auto-renders on input,
|
|
@@ -77,8 +77,11 @@ export interface AutocompleteProvider {
|
|
|
77
77
|
};
|
|
78
78
|
/** Get inline hint text to show as dim ghost text after the cursor */
|
|
79
79
|
getInlineHint?(lines: string[], cursorLine: number, cursorCol: number): string | null;
|
|
80
|
-
/**
|
|
81
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Synchronously list slash command-name completions for a leading slash token (no async I/O).
|
|
82
|
+
* Mirrors the command-name branch of {@link getSuggestions}, including the bare `/` listing and
|
|
83
|
+
* the collapsed `/skill:` namespace row. Returns null outside a command-name token or with no match.
|
|
84
|
+
*/
|
|
82
85
|
trySyncSlashCompletion?(textBeforeCursor: string): {
|
|
83
86
|
items: AutocompleteItem[];
|
|
84
87
|
prefix: string;
|