@linxiraos/pi-tui 1.1.27 → 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 +47 -463
- package/README.md +7 -5
- package/dist/types/app-keybindings.d.ts +1 -1
- 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 +2 -2
- 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 +5 -0
- package/dist/types/chat/chat-transcript-builder.d.ts +2 -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 +15 -2
- package/dist/types/chrome/shared.d.ts +9 -0
- 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 +15 -4
- package/dist/types/components/form.d.ts +1 -0
- package/dist/types/components/image.d.ts +12 -44
- 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/markdown.d.ts +36 -3
- 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 +1 -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/backend.d.ts +3 -2
- package/dist/types/native/blobs.d.ts +7 -3
- package/dist/types/native/encode.d.ts +3 -4
- package/dist/types/native/overlay.d.ts +5 -0
- 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 +2 -0
- package/dist/types/overlays/agent-transcript-viewer.d.ts +11 -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/history-search.d.ts +10 -0
- package/dist/types/overlays/hook-selector.d.ts +9 -4
- 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 +23 -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/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/usage-dashboard.d.ts +8 -4
- package/dist/types/overlays/usage-display.d.ts +3 -1
- package/dist/types/prompt/composer.d.ts +1 -1
- package/dist/types/prompt/custom-editor.d.ts +11 -8
- package/dist/types/prompt/image-source.d.ts +2 -1
- package/dist/types/prompt/interactive-context-helpers.d.ts +4 -1
- package/dist/types/prompt/model-mention-autocomplete.d.ts +1 -1
- package/dist/types/prompt/welcome.d.ts +6 -1
- 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/status-line/component.d.ts +3 -0
- 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 +27 -35
- package/dist/types/terminal-multiplexer.d.ts +127 -14
- package/dist/types/terminal.d.ts +22 -6
- 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/tmux.d.ts +11 -4
- 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 +0 -4
- package/dist/types/tools/write.d.ts +9 -2
- package/dist/types/tools/yield.d.ts +22 -0
- package/dist/types/tui.d.ts +31 -0
- package/dist/types/utils.d.ts +6 -0
- package/dist/types/vim.d.ts +19 -5
- package/package.json +13 -9
- package/src/app-keybindings.d.ts +1 -1
- package/src/app-keybindings.ts +1 -1
- 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 +26 -5
- package/src/apps/git/git-tui.ts +2 -2
- package/src/apps/git/help.ts +29 -20
- 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/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 +5 -0
- package/src/chat/assistant-message.ts +219 -50
- package/src/chat/chat-transcript-builder.d.ts +2 -0
- package/src/chat/chat-transcript-builder.ts +5 -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 +80 -6
- package/src/chat/user-message.d.ts +15 -2
- package/src/chat/user-message.ts +55 -3
- package/src/chrome/shared.ts +53 -0
- package/src/chrome/transcript-container.d.ts +6 -0
- package/src/chrome/transcript-container.ts +93 -13
- 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 +15 -4
- package/src/components/editor.ts +294 -46
- package/src/components/form.d.ts +1 -0
- package/src/components/form.ts +8 -0
- package/src/components/image.d.ts +12 -44
- package/src/components/image.ts +47 -151
- 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/markdown.d.ts +36 -3
- package/src/components/markdown.ts +433 -318
- 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 +1 -1
- package/src/fuzzy.d.ts +29 -1
- package/src/fuzzy.ts +115 -30
- package/src/key-hint-format.d.ts +1 -1
- package/src/key-hint-format.ts +1 -1
- 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 +4 -4
- 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/backend.d.ts +3 -2
- package/src/native/backend.ts +174 -18
- package/src/native/blobs.d.ts +7 -3
- package/src/native/blobs.ts +47 -12
- package/src/native/encode.d.ts +3 -4
- package/src/native/encode.ts +58 -31
- package/src/native/overlay.d.ts +5 -0
- package/src/native/overlay.ts +13 -0
- package/src/native/reconcile.ts +4 -0
- 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 +44 -29
- package/src/overlays/agent-transcript-viewer.ts +91 -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 +7 -10
- package/src/overlays/btw-history-panel.ts +12 -1
- package/src/overlays/copy-selector.ts +30 -8
- 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/jobs-panel.ts +28 -46
- package/src/overlays/model-browser.ts +341 -110
- package/src/overlays/model-hub.ts +300 -49
- package/src/overlays/move-overlay.ts +28 -14
- package/src/overlays/oauth-selector.ts +54 -70
- package/src/overlays/plan-review-overlay.ts +194 -70
- package/src/overlays/plugin-settings.ts +3 -3
- package/src/overlays/report-panel.ts +2 -2
- package/src/overlays/rewind-selector.ts +86 -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 +4 -3
- 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/tree-selector.ts +41 -20
- package/src/overlays/usage-dashboard.ts +100 -50
- package/src/overlays/usage-display.ts +10 -4
- package/src/prompt/attachment-chips.ts +15 -11
- package/src/prompt/composer-attachments.ts +6 -4
- package/src/prompt/composer.ts +4 -15
- package/src/prompt/custom-editor.ts +54 -26
- package/src/prompt/image-source.ts +2 -1
- package/src/prompt/interactive-context-helpers.ts +30 -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/tips.txt +6 -5
- package/src/prompt/welcome.ts +55 -12
- 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 +11 -0
- 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/status-line/component.ts +292 -78
- 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 +27 -35
- package/src/terminal-capabilities.ts +75 -189
- package/src/terminal-multiplexer.d.ts +127 -14
- package/src/terminal-multiplexer.ts +112 -33
- package/src/terminal.d.ts +22 -6
- package/src/terminal.ts +139 -37
- 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 +6 -1
- 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/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.ts +92 -42
- 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 +149 -50
- package/src/tools/task.d.ts +0 -4
- package/src/tools/task.ts +112 -59
- 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 +31 -0
- package/src/tui.ts +309 -160
- 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.ts +8 -0
package/dist/types/terminal.d.ts
CHANGED
|
@@ -128,13 +128,21 @@ export type TspHelloHandler = (hello: TspHello | null) => void;
|
|
|
128
128
|
export type CursorShape = "default" | "block" | "underline" | "bar";
|
|
129
129
|
export declare const CURSOR_SHAPE_CODES: Record<CursorShape, number>;
|
|
130
130
|
export interface Terminal {
|
|
131
|
+
/**
|
|
132
|
+
* Start the terminal with input, resize, and host-disconnect handlers.
|
|
133
|
+
* Unless input is deferred, this sends capability probes; a terminal that
|
|
134
|
+
* cannot parse one may leave concealed bytes on the cursor row, so the
|
|
135
|
+
* caller repaints after starting.
|
|
136
|
+
*/
|
|
131
137
|
start(onInput: (data: string) => void, onResize: () => void, onDisconnect?: () => void, options?: TerminalStartOptions): void;
|
|
132
138
|
/**
|
|
133
139
|
* Take ownership of stdin after a `deferInput` start: enable raw mode,
|
|
134
140
|
* attach input handlers, and run the capability probes start() skipped.
|
|
135
141
|
* Bytes the user typed in cooked mode meanwhile are replayed through
|
|
136
|
-
* `onInput`. No-op when input was never deferred.
|
|
137
|
-
*
|
|
142
|
+
* `onInput`. No-op when input was never deferred. Like {@link start}, the
|
|
143
|
+
* probes may leave concealed bytes on the cursor row, so the caller
|
|
144
|
+
* repaints afterwards. Optional so custom Terminals built against older
|
|
145
|
+
* pi-tui versions keep working.
|
|
138
146
|
*/
|
|
139
147
|
enableInput?(): void;
|
|
140
148
|
stop(): void;
|
|
@@ -222,6 +230,12 @@ export interface Terminal {
|
|
|
222
230
|
* `status` is the DECRPM value when the terminal answered DECRQM.
|
|
223
231
|
*/
|
|
224
232
|
onPrivateModeReport?(callback: PrivateModeReportHandler): void;
|
|
233
|
+
/**
|
|
234
|
+
* Report whether DA1 advertises SIXEL (attribute 4), replaying the latest
|
|
235
|
+
* advertisement to late subscribers. A missing attribute does not rule out
|
|
236
|
+
* support discovered through another graphics query.
|
|
237
|
+
*/
|
|
238
|
+
onSixelSupport?(callback: (supported: boolean) => void): void;
|
|
225
239
|
/**
|
|
226
240
|
* Register a callback fired once the startup Glyph Protocol handshake
|
|
227
241
|
* resolves (see {@link GlyphProtocolReportHandler}). A subscriber that
|
|
@@ -290,10 +304,11 @@ export declare class ProcessTerminal implements Terminal {
|
|
|
290
304
|
onAppearanceReport(callback: (appearance: TerminalAppearance, requestToken?: TerminalAppearanceRequestToken) => void): () => void;
|
|
291
305
|
/**
|
|
292
306
|
* Re-query the terminal background through the startup DA1-sentinel FIFO,
|
|
293
|
-
* pending/queued gating, parsing, dedup, and appearance callbacks. Inside
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
*
|
|
307
|
+
* pending/queued gating, parsing, dedup, and appearance callbacks. Inside a
|
|
308
|
+
* multiplexer that answers OSC 11 from a cache (tmux), only this explicit
|
|
309
|
+
* path first passes an OSC 11 query to the outer terminal, waits briefly for
|
|
310
|
+
* the multiplexer to consume the response into its cache, then reads that
|
|
311
|
+
* cache with a direct query. The outer query deliberately has
|
|
297
312
|
* no DA1 sentinel: multiplexers can decode a fragmented DA1 response as a key
|
|
298
313
|
* sequence and leak the remaining bytes into the editor. Startup and Mode 2031
|
|
299
314
|
* probes remain direct. Suppressed while inactive, headless, or after teardown.
|
|
@@ -301,6 +316,7 @@ export declare class ProcessTerminal implements Terminal {
|
|
|
301
316
|
refreshAppearance(requestToken?: TerminalAppearanceRequestToken): TerminalAppearanceRequestToken | void;
|
|
302
317
|
onPrivateModeReport(callback: PrivateModeReportHandler): void;
|
|
303
318
|
onGlyphProtocolReport(callback: GlyphProtocolReportHandler): void;
|
|
319
|
+
onSixelSupport(callback: (supported: boolean) => void): void;
|
|
304
320
|
onTspHello(callback: TspHelloHandler): void;
|
|
305
321
|
get tspProbePending(): boolean;
|
|
306
322
|
get tspExpected(): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Active theme's symbol lookup without importing `./theme` (which pulls the
|
|
3
3
|
* native addon through `@linxiraos/pi-natives`). Key-hint formatting runs on
|
|
4
|
-
* CLI paths that must stay addon-free (`
|
|
4
|
+
* CLI paths that must stay addon-free (`zetacode --version`, help), so it reads the
|
|
5
5
|
* active theme through this mirror; `./theme` publishes every assignment here.
|
|
6
6
|
*/
|
|
7
7
|
import { type SymbolKey } from "./symbols.js";
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { SpinnerFramesOverride } from "./symbols.js";
|
|
2
2
|
export type ColorValue = string | number;
|
|
3
|
+
/**
|
|
4
|
+
* Tokens a theme is allowed to omit. They resolve to the terminal default
|
|
5
|
+
* foreground, so `Theme.fg()` stays total for callers that paint a token a theme
|
|
6
|
+
* never declared (e.g. a `modelTags.<role>.color` reference) while
|
|
7
|
+
* `Theme.hasColor()` still reports them as unset.
|
|
8
|
+
*/
|
|
9
|
+
export declare const OPTIONAL_THEME_COLOR_RECORD: {
|
|
10
|
+
assistantMessageText: true;
|
|
11
|
+
};
|
|
3
12
|
export interface ThemeJson {
|
|
4
13
|
$schema?: string;
|
|
5
14
|
name: string;
|
|
6
15
|
vars?: Record<string, ColorValue>;
|
|
7
|
-
colors: Omit<Record<ThemeColor | ThemeBg, ColorValue>, "thinkingMax"> & {
|
|
16
|
+
colors: Omit<Record<ThemeColor | ThemeBg, ColorValue>, "thinkingMax" | keyof typeof OPTIONAL_THEME_COLOR_RECORD> & Partial<Record<keyof typeof OPTIONAL_THEME_COLOR_RECORD, ColorValue>> & {
|
|
8
17
|
thinkingMax?: ColorValue;
|
|
9
18
|
};
|
|
10
19
|
export?: {
|
|
@@ -36,7 +45,7 @@ export interface ThemeJson {
|
|
|
36
45
|
spinnerFrames?: SpinnerFramesOverride;
|
|
37
46
|
};
|
|
38
47
|
}
|
|
39
|
-
export type ThemeColor = "accent" | "border" | "borderAccent" | "borderMuted" | "success" | "error" | "warning" | "muted" | "dim" | "text" | "thinkingText" | "userMessageText" | "customMessageText" | "customMessageLabel" | "toolTitle" | "toolOutput" | "mdHeading" | "mdLink" | "mdLinkUrl" | "mdCode" | "mdCodeBlock" | "mdCodeBlockBorder" | "mdQuote" | "mdQuoteBorder" | "mdHr" | "mdListBullet" | "toolDiffAdded" | "toolDiffRemoved" | "toolDiffContext" | "syntaxComment" | "syntaxKeyword" | "syntaxFunction" | "syntaxVariable" | "syntaxString" | "syntaxNumber" | "syntaxType" | "syntaxOperator" | "syntaxPunctuation" | "thinkingOff" | "thinkingMinimal" | "thinkingLow" | "thinkingMedium" | "thinkingHigh" | "thinkingXhigh" | "thinkingMax" | "bashMode" | "pythonMode" | "statusLineSep" | "statusLineModel" | "statusLinePath" | "statusLineGitClean" | "statusLineGitDirty" | "statusLineContext" | "statusLineSpend" | "statusLineStaged" | "statusLineDirty" | "statusLineUntracked" | "statusLineOutput" | "statusLineCost" | "statusLineSubagents";
|
|
48
|
+
export type ThemeColor = "accent" | "border" | "borderAccent" | "borderMuted" | "success" | "error" | "warning" | "muted" | "dim" | "text" | "assistantMessageText" | "thinkingText" | "userMessageText" | "customMessageText" | "customMessageLabel" | "toolTitle" | "toolOutput" | "mdHeading" | "mdLink" | "mdLinkUrl" | "mdCode" | "mdCodeBlock" | "mdCodeBlockBorder" | "mdQuote" | "mdQuoteBorder" | "mdHr" | "mdListBullet" | "toolDiffAdded" | "toolDiffRemoved" | "toolDiffContext" | "syntaxComment" | "syntaxKeyword" | "syntaxFunction" | "syntaxVariable" | "syntaxString" | "syntaxNumber" | "syntaxType" | "syntaxOperator" | "syntaxPunctuation" | "thinkingOff" | "thinkingMinimal" | "thinkingLow" | "thinkingMedium" | "thinkingHigh" | "thinkingXhigh" | "thinkingMax" | "bashMode" | "pythonMode" | "statusLineSep" | "statusLineModel" | "statusLinePath" | "statusLineGitClean" | "statusLineGitDirty" | "statusLineContext" | "statusLineSpend" | "statusLineStaged" | "statusLineDirty" | "statusLineUntracked" | "statusLineOutput" | "statusLineCost" | "statusLineSubagents";
|
|
40
49
|
/** Check if a string is a valid ThemeColor value */
|
|
41
50
|
export declare function isValidThemeColor(color: string): color is ThemeColor;
|
|
42
51
|
export type ThemeBg = "selectedBg" | "userMessageBg" | "customMessageBg" | "toolPendingBg" | "toolSuccessBg" | "toolErrorBg" | "statusLineBg";
|
|
@@ -2,7 +2,7 @@ export type SymbolPreset = "unicode" | "nerd" | "ascii";
|
|
|
2
2
|
/**
|
|
3
3
|
* All available symbol keys organized by category.
|
|
4
4
|
*/
|
|
5
|
-
export type SymbolKey = "status.success" | "status.error" | "status.warning" | "status.info" | "status.pending" | "status.disabled" | "status.enabled" | "status.running" | "status.shadowed" | "status.aborted" | "status.done" | "nav.cursor" | "nav.selected" | "nav.expand" | "nav.collapse" | "nav.back" | "tree.branch" | "tree.last" | "tree.vertical" | "tree.horizontal" | "tree.hook" | "progress.filled" | "progress.empty" | "context.speculation" | "context.compaction" | "boxRound.topLeft" | "boxRound.topRight" | "boxRound.bottomLeft" | "boxRound.bottomRight" | "boxRound.horizontal" | "boxRound.vertical" | "boxDotted.horizontal" | "boxDotted.vertical" | "boxSharp.topLeft" | "boxSharp.topRight" | "boxSharp.bottomLeft" | "boxSharp.bottomRight" | "boxSharp.horizontal" | "boxSharp.vertical" | "boxSharp.cross" | "boxSharp.teeDown" | "boxSharp.teeUp" | "boxSharp.teeRight" | "boxSharp.teeLeft" | "sep.powerline" | "sep.powerlineThin" | "sep.powerlineLeft" | "sep.powerlineRight" | "sep.powerlineThinLeft" | "sep.powerlineThinRight" | "sep.powerlineCapLeft" | "sep.block" | "sep.space" | "sep.asciiLeft" | "sep.asciiRight" | "sep.dot" | "sep.slash" | "sep.pipe" | "icon.model" | "icon.plan" | "icon.prewalk" | "icon.goal" | "icon.pause" | "icon.loop" | "icon.folder" | "icon.worktree" | "icon.search" | "icon.scratchFolder" | "icon.file" | "icon.git" | "icon.branch" | "icon.pr" | "icon.pin" | "icon.tokens" | "icon.context" | "icon.cost" | "icon.subscription" | "icon.advisor" | "icon.advisorClosed" | "icon.time" | "icon.omp" | "icon.ghost" | "icon.agents" | "icon.job" | "icon.cache" | "icon.cacheMiss" | "icon.input" | "icon.output" | "icon.throughput" | "icon.intelligence" | "icon.host" | "icon.session" | "icon.package" | "icon.warning" | "icon.rewind" | "icon.auto" | "icon.fast" | "icon.extensionSkill" | "icon.extensionTool" | "icon.extensionSlashCommand" | "icon.extensionMcp" | "icon.extensionRule" | "icon.extensionHook" | "icon.extensionPrompt" | "icon.extensionContextFile" | "icon.extensionInstruction" | "icon.vimNormal" | "icon.vimInsert" | "icon.vimVisual" | "icon.vimVisualLine" | "cmd.action" | "cmd.prompt" | "cmd.extension" | "cmd.settings" | "cmd.gear" | "cmd.shield" | "cmd.wave" | "cmd.compass" | "cmd.inbox" | "cmd.swap" | "cmd.expand" | "cmd.computer" | "cmd.eye" | "cmd.todo" | "cmd.stats" | "cmd.news" | "cmd.keyboard" | "cmd.export" | "cmd.clipboard" | "cmd.share" | "cmd.broadcast" | "cmd.globe" | "cmd.copy" | "cmd.plus" | "cmd.restart" | "cmd.eraser" | "cmd.trash" | "cmd.compress" | "cmd.vibrate" | "cmd.handoff" | "cmd.history" | "cmd.question" | "cmd.rocket" | "cmd.stethoscope" | "cmd.redo" | "cmd.bug" | "cmd.memory" | "cmd.pencil" | "cmd.folderMove" | "cmd.folderPlus" | "cmd.folderMinus" | "cmd.hammer" | "cmd.power" | "cmd.cart" | "icon.mic" | "icon.camera" | "thinking.minimal" | "thinking.low" | "thinking.medium" | "thinking.high" | "thinking.xhigh" | "thinking.max" | "thinking.autoPending" | "checkbox.checked" | "checkbox.unchecked" | "radio.selected" | "radio.unselected" | "format.bullet" | "format.dash" | "format.bracketLeft" | "format.bracketRight" | "md.quoteBorder" | "md.hrChar" | "md.bullet" | "md.colorSwatch" | "advisor.rail" | "skill.rail" | "lang.default" | "lang.typescript" | "lang.javascript" | "lang.python" | "lang.rust" | "lang.go" | "lang.java" | "lang.c" | "lang.cpp" | "lang.csharp" | "lang.ruby" | "lang.julia" | "lang.php" | "lang.swift" | "lang.kotlin" | "lang.shell" | "lang.html" | "lang.css" | "lang.json" | "lang.yaml" | "lang.markdown" | "lang.sql" | "lang.docker" | "lang.lua" | "lang.text" | "lang.env" | "lang.toml" | "lang.xml" | "lang.ini" | "lang.conf" | "lang.log" | "lang.csv" | "lang.tsv" | "lang.image" | "lang.pdf" | "lang.archive" | "lang.binary" | "chip.image" | "chip.video" | "chip.paste" | "tab.appearance" | "tab.model" | "tab.interaction" | "tab.context" | "tab.files" | "tab.shell" | "tab.tools" | "tab.memory" | "tab.tasks" | "tab.providers" | "tool.write" | "tool.edit" | "tool.bash" | "tool.ssh" | "tool.lsp" | "tool.gh" | "tool.webSearch" | "tool.exa" | "tool.browser" | "tool.eval" | "tool.debug" | "tool.mcp" | "tool.job" | "tool.launch" | "tool.task" | "tool.todo" | "tool.memory" | "tool.ask" | "tool.resolve" | "tool.review" | "tool.goal" | "tool.irc" | "tool.delete" | "tool.move" | "key.ctrl" | "key.ctrlMac" | "key.shift" | "key.alt" | "key.altMac" | "key.super" | "key.superMac" | "key.joiner" | "key.enter" | "key.esc" | "key.tab" | "key.backspace" | "key.delete" | "key.space" | "key.up" | "key.down" | "key.left" | "key.right";
|
|
5
|
+
export type SymbolKey = "status.success" | "status.error" | "status.warning" | "status.info" | "status.pending" | "status.disabled" | "status.enabled" | "status.running" | "status.shadowed" | "status.aborted" | "status.done" | "nav.cursor" | "nav.selected" | "nav.expand" | "nav.collapse" | "nav.back" | "tree.branch" | "tree.last" | "tree.vertical" | "tree.horizontal" | "tree.hook" | "progress.filled" | "progress.empty" | "context.speculation" | "context.compaction" | "boxRound.topLeft" | "boxRound.topRight" | "boxRound.bottomLeft" | "boxRound.bottomRight" | "boxRound.horizontal" | "boxRound.vertical" | "boxDotted.horizontal" | "boxDotted.vertical" | "boxSharp.topLeft" | "boxSharp.topRight" | "boxSharp.bottomLeft" | "boxSharp.bottomRight" | "boxSharp.horizontal" | "boxSharp.vertical" | "boxSharp.cross" | "boxSharp.teeDown" | "boxSharp.teeUp" | "boxSharp.teeRight" | "boxSharp.teeLeft" | "sep.powerline" | "sep.powerlineThin" | "sep.powerlineLeft" | "sep.powerlineRight" | "sep.powerlineThinLeft" | "sep.powerlineThinRight" | "sep.powerlineCapLeft" | "sep.block" | "sep.space" | "sep.asciiLeft" | "sep.asciiRight" | "sep.dot" | "sep.slash" | "sep.pipe" | "icon.model" | "icon.plan" | "icon.prewalk" | "icon.goal" | "icon.pause" | "icon.loop" | "icon.folder" | "icon.worktree" | "icon.search" | "icon.scratchFolder" | "icon.file" | "icon.git" | "icon.branch" | "icon.pr" | "icon.pin" | "icon.tokens" | "icon.context" | "icon.cost" | "icon.subscription" | "icon.advisor" | "icon.advisorClosed" | "icon.time" | "icon.omp" | "icon.ghost" | "icon.agents" | "icon.job" | "icon.cache" | "icon.cacheMiss" | "icon.input" | "icon.output" | "icon.throughput" | "icon.intelligence" | "icon.host" | "icon.session" | "icon.package" | "icon.warning" | "icon.rewind" | "icon.auto" | "icon.fast" | "icon.extensionSkill" | "icon.extensionTool" | "icon.extensionSlashCommand" | "icon.extensionMcp" | "icon.extensionRule" | "icon.extensionHook" | "icon.extensionPrompt" | "icon.extensionContextFile" | "icon.extensionInstruction" | "icon.vimNormal" | "icon.vimInsert" | "icon.vimVisual" | "icon.vimVisualLine" | "icon.vimReplace" | "cmd.action" | "cmd.prompt" | "cmd.extension" | "cmd.settings" | "cmd.gear" | "cmd.shield" | "cmd.wave" | "cmd.compass" | "cmd.inbox" | "cmd.swap" | "cmd.expand" | "cmd.computer" | "cmd.eye" | "cmd.todo" | "cmd.stats" | "cmd.news" | "cmd.keyboard" | "cmd.export" | "cmd.clipboard" | "cmd.share" | "cmd.broadcast" | "cmd.globe" | "cmd.copy" | "cmd.plus" | "cmd.restart" | "cmd.eraser" | "cmd.trash" | "cmd.compress" | "cmd.vibrate" | "cmd.handoff" | "cmd.history" | "cmd.question" | "cmd.rocket" | "cmd.stethoscope" | "cmd.redo" | "cmd.bug" | "cmd.memory" | "cmd.pencil" | "cmd.folderMove" | "cmd.folderPlus" | "cmd.folderMinus" | "cmd.hammer" | "cmd.power" | "cmd.cart" | "icon.mic" | "icon.camera" | "thinking.minimal" | "thinking.low" | "thinking.medium" | "thinking.high" | "thinking.xhigh" | "thinking.max" | "thinking.autoPending" | "checkbox.checked" | "checkbox.unchecked" | "radio.selected" | "radio.unselected" | "format.bullet" | "format.dash" | "format.bracketLeft" | "format.bracketRight" | "md.quoteBorder" | "md.hrChar" | "md.bullet" | "md.colorSwatch" | "advisor.rail" | "skill.rail" | "lang.default" | "lang.typescript" | "lang.javascript" | "lang.python" | "lang.rust" | "lang.go" | "lang.java" | "lang.c" | "lang.cpp" | "lang.csharp" | "lang.ruby" | "lang.julia" | "lang.php" | "lang.swift" | "lang.kotlin" | "lang.shell" | "lang.html" | "lang.css" | "lang.json" | "lang.yaml" | "lang.markdown" | "lang.sql" | "lang.docker" | "lang.lua" | "lang.text" | "lang.env" | "lang.toml" | "lang.xml" | "lang.ini" | "lang.conf" | "lang.log" | "lang.csv" | "lang.tsv" | "lang.image" | "lang.pdf" | "lang.archive" | "lang.binary" | "chip.image" | "chip.video" | "chip.paste" | "tab.appearance" | "tab.model" | "tab.interaction" | "tab.context" | "tab.files" | "tab.shell" | "tab.tools" | "tab.memory" | "tab.tasks" | "tab.providers" | "tool.write" | "tool.edit" | "tool.bash" | "tool.ssh" | "tool.lsp" | "tool.gh" | "tool.webSearch" | "tool.exa" | "tool.browser" | "tool.eval" | "tool.debug" | "tool.mcp" | "tool.job" | "tool.launch" | "tool.task" | "tool.todo" | "tool.memory" | "tool.ask" | "tool.resolve" | "tool.review" | "tool.goal" | "tool.irc" | "tool.delete" | "tool.move" | "key.ctrl" | "key.ctrlMac" | "key.shift" | "key.alt" | "key.altMac" | "key.super" | "key.superMac" | "key.joiner" | "key.enter" | "key.esc" | "key.tab" | "key.backspace" | "key.delete" | "key.space" | "key.up" | "key.down" | "key.left" | "key.right";
|
|
6
6
|
export type SymbolMap = Record<SymbolKey, string>;
|
|
7
7
|
/**
|
|
8
8
|
* Icon vocabulary for slash-command autocomplete type indicators. Each name
|
|
@@ -54,6 +54,13 @@ export declare class Theme {
|
|
|
54
54
|
* against. Built once per instance and frozen; callers share the object.
|
|
55
55
|
*/
|
|
56
56
|
get sessionAccentInputs(): SessionAccentTheme;
|
|
57
|
+
/**
|
|
58
|
+
* True when the theme paints `color` with a real foreground — i.e. the token
|
|
59
|
+
* exists and is not the empty string (terminal default, `\x1b[39m`). Optional
|
|
60
|
+
* tokens absent from the theme JSON are also false. Callers use this to keep
|
|
61
|
+
* terminal-default behavior byte-for-byte when an optional token is unset.
|
|
62
|
+
*/
|
|
63
|
+
hasColor(color: ThemeColor): boolean;
|
|
57
64
|
fg(color: ThemeColor, text: string): string;
|
|
58
65
|
/** Apply a foreground, replacing terminal-default tokens with the theme's contrast-safe fallback. */
|
|
59
66
|
fgResolved(color: ThemeColor, text: string): string;
|
|
@@ -6,7 +6,7 @@ export { getAvailableThemes, getAvailableThemesWithPaths, getThemeByName, type T
|
|
|
6
6
|
export { isValidThemeColor, type ThemeBg, type ThemeColor } from "./schema.js";
|
|
7
7
|
export { getAvailableSymbolPresets, isValidSymbolPreset, type SpinnerType, type SymbolKey, type SymbolPreset, } from "./symbols.js";
|
|
8
8
|
export { Theme } from "./theme-class.js";
|
|
9
|
-
export { createHighlightStream, getEditorTheme, getMarkdownTheme, getSelectListTheme, getSettingsListTheme, getSymbolTheme, highlightCode, setMarkdownMermaidRendering, warmHighlighter, } from "./tui-adapters.js";
|
|
9
|
+
export { createHighlightStream, getEditorTheme, getMarkdownTheme, getMarkdownThemeWithLinkTargets, getSelectListTheme, getSettingsListTheme, getSymbolTheme, highlightCode, setMarkdownMermaidRendering, warmHighlighter, } from "./tui-adapters.js";
|
|
10
10
|
/** Active theme; imports remain live across initialization, previews, and theme switches. */
|
|
11
11
|
export declare var theme: Theme;
|
|
12
12
|
type ThemeBinding = (value: Theme) => void;
|
|
@@ -16,6 +16,9 @@ export declare function createHighlightStream(lang?: string, highlightTheme?: Th
|
|
|
16
16
|
/** Warm native syntax grammars off-thread once per process. */
|
|
17
17
|
export declare function warmHighlighter(): Promise<void>;
|
|
18
18
|
export declare function getSymbolTheme(): SymbolTheme;
|
|
19
|
+
/** Only themes assembled here have stable callbacks and private link state. */
|
|
20
|
+
export declare function canCacheMarkdownListItems(candidate: MarkdownTheme): boolean;
|
|
21
|
+
export declare function getMarkdownThemeWithLinkTargets(targets: ReadonlyMap<string, string>): MarkdownTheme;
|
|
19
22
|
export declare function setMarkdownMermaidRendering(enabled: boolean): void;
|
|
20
23
|
export declare function getMarkdownTheme(): MarkdownTheme;
|
|
21
24
|
export declare function getSelectListTheme(): SelectListTheme;
|
package/dist/types/tmux.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function isInsideTmux(env?: NodeJS.ProcessEnv): boolean;
|
|
3
|
-
/** Wrap a control sequence in tmux's DCS passthrough envelope. */
|
|
4
|
-
export declare function wrapTmuxPassthrough(payload: string): string;
|
|
1
|
+
export { wrapTmuxPassthrough } from "./multiplexers/tmux.js";
|
|
5
2
|
/** Pass a control sequence through tmux, leaving direct-terminal output unchanged. */
|
|
6
3
|
export declare function wrapTmuxPassthroughIfNeeded(payload: string, env?: NodeJS.ProcessEnv): string;
|
|
4
|
+
/**
|
|
5
|
+
* Whether the terminal hosting this tmux session draws TSP programs natively:
|
|
6
|
+
* it sets the session user option `@tern-tsp` while it watches the session.
|
|
7
|
+
*/
|
|
8
|
+
export declare function tmuxSessionSpeaksTsp(env?: NodeJS.ProcessEnv): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Stop (`on` false) or restore (`on` true) tmux turning this pane's APC
|
|
11
|
+
* strings into its title, which would otherwise swallow every TSP message.
|
|
12
|
+
*/
|
|
13
|
+
export declare function setTmuxPaneApcTitles(on: boolean, env?: NodeJS.ProcessEnv): void;
|
|
7
14
|
/**
|
|
8
15
|
* Resolve the terminal emulator name recorded for this tmux client.
|
|
9
16
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Launch-broker daemon types shared by services, `proc://`, and `
|
|
1
|
+
/** Launch-broker daemon types shared by services, `proc://`, and `zetacode ps`. */
|
|
2
2
|
/** Stable lifecycle states exposed by the launch broker. */
|
|
3
3
|
export type DaemonState = "starting" | "running" | "ready" | "restarting" | "stopping" | "exited" | "failed";
|
|
4
4
|
/** Restart behavior applied after an unexpected daemon exit. */
|
|
@@ -24,6 +24,8 @@ export interface EvalCellResult {
|
|
|
24
24
|
durationMs?: number;
|
|
25
25
|
exitCode?: number;
|
|
26
26
|
statusEvents?: EvalStatusEvent[];
|
|
27
|
+
/** Discrete events dropped from the front of `statusEvents` (see {@link recordStatusEvent}). */
|
|
28
|
+
statusEventsElided?: number;
|
|
27
29
|
hasMarkdown?: boolean;
|
|
28
30
|
}
|
|
29
31
|
/** Tool result detail object surfaced to the UI/transcript. */
|
|
@@ -32,6 +34,8 @@ export interface EvalToolDetails {
|
|
|
32
34
|
jsonOutputs?: unknown[];
|
|
33
35
|
images?: ImageContent[];
|
|
34
36
|
statusEvents?: EvalStatusEvent[];
|
|
37
|
+
/** Discrete events dropped from the front of `statusEvents` (see {@link recordStatusEvent}). */
|
|
38
|
+
statusEventsElided?: number;
|
|
35
39
|
isError?: boolean;
|
|
36
40
|
meta?: OutputMeta;
|
|
37
41
|
/** First backend that produced cells. Kept for transcript compatibility. */
|
|
@@ -74,13 +78,28 @@ export declare function statusEventKey(event: {
|
|
|
74
78
|
op: string;
|
|
75
79
|
[key: string]: unknown;
|
|
76
80
|
}): string | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Discrete status events a log keeps. A cell polling a helper in a loop emits
|
|
83
|
+
* one event per call (hundreds of thousands), and every live update and the
|
|
84
|
+
* persisted tool result would otherwise carry them all.
|
|
85
|
+
*/
|
|
86
|
+
export declare const MAX_STATUS_EVENTS = 200;
|
|
87
|
+
/** A status event list plus the count of discrete events dropped from its front. */
|
|
88
|
+
export type StatusEventLog = Pick<EvalCellResult, "statusEvents" | "statusEventsElided">;
|
|
77
89
|
/**
|
|
78
90
|
* Append or replace a status event. Progress snapshots (see
|
|
79
91
|
* {@link statusEventKey}) coalesce in place, preserving first-seen order; every
|
|
80
|
-
* other op is a discrete action and simply appends.
|
|
81
|
-
* list bounded even when a subagent or batch emits hundreds of progress ticks.
|
|
92
|
+
* other op is a discrete action and simply appends.
|
|
82
93
|
*/
|
|
83
94
|
export declare function upsertStatusEvent(events: EvalStatusEvent[], event: EvalStatusEvent): void;
|
|
95
|
+
/**
|
|
96
|
+
* {@link upsertStatusEvent} into a bounded log. Past {@link MAX_STATUS_EVENTS},
|
|
97
|
+
* the oldest discrete event is dropped and counted. Snapshots stay, since agent
|
|
98
|
+
* cards read them, and so does the newest committed `todo` result, which the
|
|
99
|
+
* session todo panel refreshes from. Renderers already show only the newest
|
|
100
|
+
* events behind an "… N earlier" row.
|
|
101
|
+
*/
|
|
102
|
+
export declare function recordStatusEvent(log: StatusEventLog, event: EvalStatusEvent): void;
|
|
84
103
|
/** Render eval code cells, structured display output, and progress events. */
|
|
85
104
|
export declare const evalToolRenderer: {
|
|
86
105
|
animatedPendingPreview: true;
|
|
@@ -95,7 +114,7 @@ export declare const evalToolRenderer: {
|
|
|
95
114
|
}, options: RenderResultOptions & {
|
|
96
115
|
renderContext?: EvalRenderContext;
|
|
97
116
|
}, uiTheme: Theme, _args?: EvalRenderArgs): Component;
|
|
98
|
-
describeCall(args: EvalRenderArgs,
|
|
117
|
+
describeCall(args: EvalRenderArgs, options: RenderResultOptions): NativeToolView;
|
|
99
118
|
describeResult(result: {
|
|
100
119
|
content: Array<{
|
|
101
120
|
type: string;
|
|
@@ -12,6 +12,10 @@ export interface GlobToolDetails {
|
|
|
12
12
|
fileCount?: number;
|
|
13
13
|
files?: string[];
|
|
14
14
|
truncated?: boolean;
|
|
15
|
+
/** The scan hit the tool deadline, so the listed files are an incomplete
|
|
16
|
+
* set rather than a complete answer. Distinct from `truncated`, which also
|
|
17
|
+
* covers result-limit and output truncation. */
|
|
18
|
+
timedOut?: boolean;
|
|
15
19
|
error?: string;
|
|
16
20
|
/** Working directory at search time. Used by the renderer to resolve relative
|
|
17
21
|
* file paths to absolute paths for OSC 8 hyperlinks. */
|
|
@@ -72,6 +72,53 @@ export declare function truncationNotice(meta: OutputMeta | undefined): NativeNo
|
|
|
72
72
|
* truncation / artifact-capture notice from `meta`; undefined when empty.
|
|
73
73
|
*/
|
|
74
74
|
export declare function footnoteText(parts: readonly string[], meta?: OutputMeta): NativeNode | undefined;
|
|
75
|
+
/** Drawn lines of a run's input (command, cell code) before its "N more lines" button. */
|
|
76
|
+
export declare const RUN_INPUT_PREVIEW_LINES = 6;
|
|
77
|
+
/**
|
|
78
|
+
* What a run's foot names: `running` (live clock), `background` (an async job
|
|
79
|
+
* outlives the call), and the settled outcomes. A failure with an exit code
|
|
80
|
+
* reads `exit N`; without one, `Failed`.
|
|
81
|
+
*/
|
|
82
|
+
export type RunState = "running" | "background" | "done" | "failed" | "cancelled" | "timed-out";
|
|
83
|
+
/** Inputs of {@link runFoot}. */
|
|
84
|
+
export interface RunFootInput {
|
|
85
|
+
readonly state: RunState;
|
|
86
|
+
/** Exit code of a `failed` run; a non-zero code names the state `exit N`. */
|
|
87
|
+
readonly exitCode?: number;
|
|
88
|
+
/** Milliseconds run so far (`running`) or in total; the time is omitted when undefined. */
|
|
89
|
+
readonly elapsedMs?: number;
|
|
90
|
+
/** Quiet facts (job id, service state, artifact), muted and ` · `-joined. */
|
|
91
|
+
readonly facts?: readonly string[];
|
|
92
|
+
/** Truncation / artifact-capture notices, appended to the facts in `warning`. */
|
|
93
|
+
readonly meta?: OutputMeta;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The foot line of a run box (`zeta.run.foot`): the state word in its tone,
|
|
97
|
+
* the run time (a live clock while running, frozen once settled) and the
|
|
98
|
+
* quiet facts. Glyphs are the terminal's styling, never text.
|
|
99
|
+
*/
|
|
100
|
+
export declare function runFoot(input: RunFootInput): NativeNode;
|
|
101
|
+
/** A run's input section: the command or cell source, clamped to {@link RUN_INPUT_PREVIEW_LINES}. */
|
|
102
|
+
export declare function runInput(source: string, p: {
|
|
103
|
+
role: string;
|
|
104
|
+
lang: string;
|
|
105
|
+
wrap: boolean;
|
|
106
|
+
}): NativeNode;
|
|
107
|
+
/** A run's terminal output: follows its tail, clamped to the last `previewLines` lines while folded. */
|
|
108
|
+
export declare function runOutput(output: string, p: {
|
|
109
|
+
role: string;
|
|
110
|
+
previewLines: number;
|
|
111
|
+
key?: string;
|
|
112
|
+
}): NativeNode;
|
|
113
|
+
/**
|
|
114
|
+
* One run as one box (`zeta.run`): input, output, status lines and foot in
|
|
115
|
+
* order. `tone` tints the box: `error` for a failed run, `warning` for a
|
|
116
|
+
* timed-out one.
|
|
117
|
+
*/
|
|
118
|
+
export declare function runBox(children: readonly (NativeChild | undefined | false)[], p: {
|
|
119
|
+
key: string;
|
|
120
|
+
tone?: TspTone;
|
|
121
|
+
}): NativeNode;
|
|
75
122
|
/** A diagnostic's severity glyph: `x-circle` error, `warn` warning, `info`, `lightbulb` hint, in the severity tone. */
|
|
76
123
|
export declare function diagnosticGlyph(severity: ParsedDiagnostic["severity"]): NativeNode;
|
|
77
124
|
/**
|
|
@@ -84,12 +84,22 @@ export interface LimitsMeta {
|
|
|
84
84
|
reached: number;
|
|
85
85
|
suggestion: number;
|
|
86
86
|
};
|
|
87
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* `unit` may be absent in sessions persisted before it was recorded. `lines` is
|
|
89
|
+
* the first-to-last range of cut lines, and `selectorBase` the target a
|
|
90
|
+
* `:raw:<line>-<line>` selector reads one of them whole from (an artifact's
|
|
91
|
+
* `artifact://<id>` stands in when absent).
|
|
92
|
+
*/
|
|
88
93
|
columnTruncated?: {
|
|
89
94
|
maxColumn: number;
|
|
90
95
|
unit?: "bytes" | "chars";
|
|
91
96
|
artifactId?: string;
|
|
92
97
|
artifactElidedBytes?: number;
|
|
98
|
+
lines?: {
|
|
99
|
+
first: number;
|
|
100
|
+
last: number;
|
|
101
|
+
};
|
|
102
|
+
selectorBase?: string;
|
|
93
103
|
};
|
|
94
104
|
}
|
|
95
105
|
/**
|
|
@@ -25,6 +25,14 @@ export interface RenderResultOptions {
|
|
|
25
25
|
* Streamed `xd://` previews stay queued until this is set.
|
|
26
26
|
*/
|
|
27
27
|
executionStarted?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Milliseconds since this call began executing (`tool_execution_start`),
|
|
30
|
+
* or its total once settled; undefined before it starts. Native describe
|
|
31
|
+
* hooks only.
|
|
32
|
+
*/
|
|
33
|
+
elapsedMs?: number;
|
|
34
|
+
/** The call was abandoned without a final result (turn aborted, sealed). Native describe hooks only. */
|
|
35
|
+
cancelled?: boolean;
|
|
28
36
|
}
|
|
29
37
|
/** Render options for a result, plus the tool-specific context the transcript threads through. */
|
|
30
38
|
export type RenderResultContextOptions = RenderResultOptions & {
|
|
@@ -39,6 +47,18 @@ export interface ToolRenderResult<TDetails = unknown> {
|
|
|
39
47
|
details?: TDetails;
|
|
40
48
|
isError?: boolean;
|
|
41
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* A fence a tool call draws under its card, as assistant Markdown draws that
|
|
52
|
+
* fence. Any fence language may be named (`svg`, `mermaid`, `obj`); the
|
|
53
|
+
* transcript draws only those it draws as figures in assistant text.
|
|
54
|
+
*/
|
|
55
|
+
export interface ToolFigure {
|
|
56
|
+
readonly lang: string;
|
|
57
|
+
/** The body so far. */
|
|
58
|
+
readonly source: string;
|
|
59
|
+
/** No more of the body arrives. */
|
|
60
|
+
readonly closed: boolean;
|
|
61
|
+
}
|
|
42
62
|
/**
|
|
43
63
|
* Per-renderer opt-in for a full viewport replay when the first result
|
|
44
64
|
* replaces a painted pending-call render. A predicate receives the painted
|
|
@@ -73,6 +93,8 @@ export interface NativeToolHead {
|
|
|
73
93
|
readonly targetKind?: TspToolProps["targetKind"];
|
|
74
94
|
/** Language for `command` targets. */
|
|
75
95
|
readonly lang?: string;
|
|
96
|
+
/** The raw command line the head's Copy command button copies (set implicitly by a `command` target). */
|
|
97
|
+
readonly command?: string;
|
|
76
98
|
/** `file://` link for path targets. */
|
|
77
99
|
readonly href?: string;
|
|
78
100
|
/** Short facts after the target (`+8 −1`, `5 matches · 2 files`). */
|
|
@@ -99,10 +121,15 @@ export interface NativeToolView {
|
|
|
99
121
|
readonly body?: readonly NativeChild[];
|
|
100
122
|
/** Tone override; the frame otherwise derives it from the call status. */
|
|
101
123
|
readonly tone?: TspTone;
|
|
102
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* Body clamp while collapsed; `{tail}` keeps the end (terminal output). Defaults to the transcript's preview size.
|
|
126
|
+
* `children`: the body stays whole while collapsed and its own `ansi`/`code` previews clamp instead.
|
|
127
|
+
*/
|
|
103
128
|
readonly preview?: TspPreview | {
|
|
104
129
|
readonly tail: number;
|
|
105
|
-
} | "none";
|
|
130
|
+
} | "none" | "children";
|
|
131
|
+
/** Starts expanded whatever the transcript's expand state (the todo checklist); the user can still fold it. */
|
|
132
|
+
readonly open?: boolean;
|
|
106
133
|
/** Render frameless (`frame:"inline"`): a head line plus a disclosed body. */
|
|
107
134
|
readonly inline?: boolean;
|
|
108
135
|
/** Head actions offered on hover (`copy`, `retry`). */
|
|
@@ -125,6 +152,14 @@ export interface ToolRenderer<TArgs = unknown, TDetails = unknown> {
|
|
|
125
152
|
/** Semantic result view for TSP terminals; merged with the call view when {@link mergeCallAndResult}. */
|
|
126
153
|
describeResult?(result: ToolRenderResult<TDetails>, options: RenderResultContextOptions, args?: TArgs): NativeToolView | undefined;
|
|
127
154
|
mergeCallAndResult?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* The fence a call draws under its card (a `.svg` being written, as its
|
|
157
|
+
* image): growing while the args stream, closed once they are final; none
|
|
158
|
+
* after an error. `result` is undefined until the call has one. Rendered
|
|
159
|
+
* TUI only, and only fences the terminal draws as figures; native views put
|
|
160
|
+
* their drawing in their describe hooks.
|
|
161
|
+
*/
|
|
162
|
+
figure?(args: TArgs, result: ToolRenderResult<TDetails> | undefined, options: RenderResultOptions): ToolFigure | undefined;
|
|
128
163
|
/** Describes current activity without coupling a renderer to terminal layout. */
|
|
129
164
|
activitySummary?(args: TArgs, context: ToolActivityContext): ToolActivitySummary;
|
|
130
165
|
/** Render without background box, inline in the response flow */
|
|
@@ -31,6 +31,15 @@ export interface OutputSummary {
|
|
|
31
31
|
columnDroppedBytes?: number;
|
|
32
32
|
/** Number of distinct lines that hit the per-line column cap. */
|
|
33
33
|
columnTruncatedLines?: number;
|
|
34
|
+
/**
|
|
35
|
+
* 1-indexed first and last lines the column cap cut, numbered as in the
|
|
36
|
+
* artifact. Absent when the numbering cannot match the artifact (an inline
|
|
37
|
+
* substitute was capped, or `replace()` rewrote the buffer).
|
|
38
|
+
*/
|
|
39
|
+
columnTruncatedRange?: {
|
|
40
|
+
first: number;
|
|
41
|
+
last: number;
|
|
42
|
+
};
|
|
34
43
|
/** Configured per-line column cap in effect (UTF-8 bytes), when > 0. */
|
|
35
44
|
columnMax?: number;
|
|
36
45
|
/** Artifact ID for internal URL access (artifact://<id>) when truncated */
|
|
@@ -236,7 +245,8 @@ export declare class OutputSink {
|
|
|
236
245
|
constructor(options?: OutputSinkOptions);
|
|
237
246
|
/**
|
|
238
247
|
* Push a chunk of output. The buffer management and onChunk callback run
|
|
239
|
-
* synchronously
|
|
248
|
+
* synchronously; onChunk fires after the chunk is stored, so {@link preview}
|
|
249
|
+
* already includes it. File sink writes are deferred and serialized internally.
|
|
240
250
|
*
|
|
241
251
|
* `inline` substitutes a bounded representation for the in-memory buffer and
|
|
242
252
|
* live preview while the complete chunk is mirrored to the artifact.
|
|
@@ -260,6 +270,15 @@ export declare class OutputSink {
|
|
|
260
270
|
* branch in `dump()` against stale totals.
|
|
261
271
|
*/
|
|
262
272
|
replace(text: string): void;
|
|
273
|
+
/**
|
|
274
|
+
* Current inline view without finalizing: the body {@link dump} would
|
|
275
|
+
* return right now (head + elision marker + rolling tail), minus any notice
|
|
276
|
+
* and minus the newline `dump()` appends after output that ends in a bare
|
|
277
|
+
* carriage return. Each call trims the rolling tail to its budget (a copy
|
|
278
|
+
* of the tail window once it overflowed), so call it from a throttled
|
|
279
|
+
* onChunk (`chunkThrottleMs`), not once per raw chunk.
|
|
280
|
+
*/
|
|
281
|
+
preview(): string;
|
|
263
282
|
dump(notice?: string): Promise<OutputSummary>;
|
|
264
283
|
/**
|
|
265
284
|
* Release the artifact spill descriptor on an exit path that skips
|
|
@@ -107,8 +107,6 @@ export interface TaskItem {
|
|
|
107
107
|
solutionSpace?: string;
|
|
108
108
|
/** Per-spawn thinking effort: lowest/middle/highest level the resolved model supports. Overrides the agent's default selector (e.g. `auto`). */
|
|
109
109
|
effort?: "lo" | "med" | "hi";
|
|
110
|
-
/** Per-spawn model selector or ordered selector array; overrides agent and settings preferences. */
|
|
111
|
-
model?: string | string[];
|
|
112
110
|
/** Caller-provided output schema; its presence overrides the selected agent's schema. */
|
|
113
111
|
outputSchema?: unknown;
|
|
114
112
|
/** Validation behavior for a caller-provided or inherited output schema. */
|
|
@@ -135,8 +133,6 @@ export interface TaskParams {
|
|
|
135
133
|
solutionSpace?: string;
|
|
136
134
|
/** Per-spawn thinking effort (flat form): lowest/middle/highest level the resolved model supports. */
|
|
137
135
|
effort?: "lo" | "med" | "hi";
|
|
138
|
-
/** Per-spawn model selector or ordered selector array; overrides agent and settings preferences. */
|
|
139
|
-
model?: string | string[];
|
|
140
136
|
/** Caller-provided output schema; its presence overrides the selected agent's schema. */
|
|
141
137
|
outputSchema?: unknown;
|
|
142
138
|
/** Validation behavior for a caller-provided or inherited output schema. */
|
|
@@ -6,7 +6,7 @@ import { type ProcWriteDetails } from "./proc-render.js";
|
|
|
6
6
|
import { type CfgWriteDetails } from "./cfg-render.js";
|
|
7
7
|
import type { FileDiagnosticsResult } from "./lsp.js";
|
|
8
8
|
import type { OutputMeta } from "./output-meta.js";
|
|
9
|
-
import type { NativeToolView, RenderResultOptions, ToolActivityContext, ToolActivitySummary } from "./renderer.js";
|
|
9
|
+
import type { NativeToolView, RenderResultOptions, ToolActivityContext, ToolActivitySummary, ToolFigure } from "./renderer.js";
|
|
10
10
|
import { type XdevRenderDispatch, type XdevMountedRenderer } from "./xdev.js";
|
|
11
11
|
/** Details returned by the write tool for transcript rendering. */
|
|
12
12
|
export interface WriteToolDetails {
|
|
@@ -37,6 +37,12 @@ interface WriteResult {
|
|
|
37
37
|
details?: WriteToolDetails;
|
|
38
38
|
isError?: boolean;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* The fence a file write draws as while its content streams and after: its
|
|
42
|
+
* extension names a figure language and it has content, closed once the args
|
|
43
|
+
* are final. None for URL-card writes, or after an error.
|
|
44
|
+
*/
|
|
45
|
+
declare function writeFigure(args: WriteRenderArgs | undefined, result: WriteResult | undefined, options: RenderResultOptions): ToolFigure | undefined;
|
|
40
46
|
declare const writeStreamingPreviewStateKey: unique symbol;
|
|
41
47
|
/**
|
|
42
48
|
* Per-component state for incrementally rendering a streamed write.
|
|
@@ -75,7 +81,7 @@ export declare const writeToolRenderer: {
|
|
|
75
81
|
renderCall(args: WriteRenderArgs, options: RenderResultOptions & WriteStreamingPreviewStateCarrier & {
|
|
76
82
|
renderContext?: WriteRenderContext;
|
|
77
83
|
}, uiTheme: Theme): Component | undefined;
|
|
78
|
-
renderResult(result: WriteResult, options: RenderResultOptions & {
|
|
84
|
+
renderResult(result: WriteResult, options: RenderResultOptions & WriteStreamingPreviewStateCarrier & {
|
|
79
85
|
renderContext?: WriteRenderContext;
|
|
80
86
|
}, uiTheme: Theme, args?: WriteRenderArgs): Component;
|
|
81
87
|
describeCall(args: WriteRenderArgs, options: RenderResultOptions & {
|
|
@@ -84,6 +90,7 @@ export declare const writeToolRenderer: {
|
|
|
84
90
|
describeResult(result: WriteResult, options: RenderResultOptions & {
|
|
85
91
|
renderContext?: WriteRenderContext;
|
|
86
92
|
}, args?: WriteRenderArgs): NativeToolView | undefined;
|
|
93
|
+
figure: typeof writeFigure;
|
|
87
94
|
mergeCallAndResult: true;
|
|
88
95
|
forceFirstResultViewportRepaint: (args: unknown, options: RenderResultOptions) => boolean;
|
|
89
96
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Theme } from "../theme/theme.js";
|
|
2
|
+
import type { Component } from "../tui.js";
|
|
3
|
+
import type { NativeToolView, RenderResultContextOptions, RenderResultOptions, ToolRenderResult } from "./renderer.js";
|
|
4
|
+
import type { YieldItem } from "./task.js";
|
|
5
|
+
/** `yield` arguments as sent; strict-mode providers send omitted optionals as `null`. */
|
|
6
|
+
interface YieldRenderArgs {
|
|
7
|
+
type?: string | string[] | null;
|
|
8
|
+
data?: unknown;
|
|
9
|
+
error?: string | null;
|
|
10
|
+
/** 1-based workpool item number. */
|
|
11
|
+
key?: number;
|
|
12
|
+
}
|
|
13
|
+
/** Shows a `yield` call's submitted data instead of its model-facing acknowledgement. */
|
|
14
|
+
export declare const yieldToolRenderer: {
|
|
15
|
+
renderCall(args: YieldRenderArgs, options: RenderResultOptions, theme: Theme): Component;
|
|
16
|
+
renderResult(result: ToolRenderResult<YieldItem>, options: RenderResultContextOptions, theme: Theme, args?: YieldRenderArgs): Component;
|
|
17
|
+
describeCall(args: YieldRenderArgs, options: RenderResultOptions): NativeToolView;
|
|
18
|
+
describeResult(result: ToolRenderResult<YieldItem>, _options: RenderResultContextOptions, args?: YieldRenderArgs): NativeToolView;
|
|
19
|
+
mergeCallAndResult: true;
|
|
20
|
+
animatedPendingPreview: true;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
package/dist/types/tui.d.ts
CHANGED
|
@@ -78,6 +78,10 @@ export interface TUIStartOptions {
|
|
|
78
78
|
* Paint without owning stdin: the terminal stays in cooked mode (kernel
|
|
79
79
|
* echo + line editing at the hardware cursor) until {@link TUI.enableInput}
|
|
80
80
|
* switches to raw input and replays the kernel-buffered keystrokes.
|
|
81
|
+
*
|
|
82
|
+
* A terminal expected to speak TSP needs raw input from the start, so it
|
|
83
|
+
* gets it; its keystrokes are held instead (TSP events and the cell-size
|
|
84
|
+
* reply still apply) until {@link TUI.releaseHeldInput} replays them.
|
|
81
85
|
*/
|
|
82
86
|
deferInput?: boolean;
|
|
83
87
|
}
|
|
@@ -169,6 +173,16 @@ export interface Component {
|
|
|
169
173
|
* Called when theme changes or when component needs to re-render from scratch.
|
|
170
174
|
*/
|
|
171
175
|
invalidate?(): void;
|
|
176
|
+
/**
|
|
177
|
+
* Optional hook to drop memoized render output (rows, parse and wrap state)
|
|
178
|
+
* that the next `render()` can rebuild from state the component keeps.
|
|
179
|
+
* Unlike {@link invalidate}, it must not rebuild anything eagerly: no
|
|
180
|
+
* renderer or extension callbacks, no image conversions, and no child
|
|
181
|
+
* replacement or disposal. The next render must return the same rows it
|
|
182
|
+
* would have returned without the release. Components without it are
|
|
183
|
+
* simply not released.
|
|
184
|
+
*/
|
|
185
|
+
releaseRenderCaches?(): void;
|
|
172
186
|
/**
|
|
173
187
|
* Optional hook to set whether this component ignores tight layout mode.
|
|
174
188
|
*/
|
|
@@ -308,6 +322,7 @@ export declare class Container implements Component {
|
|
|
308
322
|
/** Dispose every child, then detach it from this container. */
|
|
309
323
|
disposeChildren(): void;
|
|
310
324
|
invalidate(): void;
|
|
325
|
+
releaseRenderCaches(): void;
|
|
311
326
|
/**
|
|
312
327
|
* Propagate teardown to children. Call when the container's children are
|
|
313
328
|
* being permanently discarded (not when they are detached for reuse — use
|
|
@@ -476,6 +491,22 @@ export declare class TUI extends Container {
|
|
|
476
491
|
* path. Idempotent; no-op when input was never deferred.
|
|
477
492
|
*/
|
|
478
493
|
enableInput(): void;
|
|
494
|
+
/**
|
|
495
|
+
* Replay the keystrokes held since a TSP `deferInput` start through the
|
|
496
|
+
* normal input path, then deliver input live. Call once the app's key
|
|
497
|
+
* handlers are installed so a hotkey pressed during startup still fires.
|
|
498
|
+
* Only keys typed while the start-time focus owner had focus are held. The
|
|
499
|
+
* hold survives a stop/start until released. Idempotent; no-op when nothing
|
|
500
|
+
* is held.
|
|
501
|
+
*/
|
|
502
|
+
releaseHeldInput(): void;
|
|
503
|
+
/**
|
|
504
|
+
* Hand held-key ownership from `previous` to `next` when the app replaces
|
|
505
|
+
* the component focused at start (a swapped-in custom editor), so keys
|
|
506
|
+
* typed into the replacement stay queued behind the held ones instead of
|
|
507
|
+
* overtaking them. No-op unless `previous` owns the held keys.
|
|
508
|
+
*/
|
|
509
|
+
replaceHeldFocus(previous: Component, next: Component): void;
|
|
479
510
|
addStartListener(listener: StartListener): () => void;
|
|
480
511
|
addInputListener(listener: InputListener): () => void;
|
|
481
512
|
removeInputListener(listener: InputListener): void;
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface TextSizingOptions {
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function encodeTextSized(text: string, options?: TextSizingOptions): string;
|
|
28
28
|
export declare function sliceWithWidth(line: string, startCol: number, length: number, strict?: boolean | null): SliceResult;
|
|
29
|
+
/**
|
|
30
|
+
* Hard-wrap one literal terminal row without trimming spaces or splitting graphemes.
|
|
31
|
+
* An oversized grapheme is emitted intact even when it exceeds the requested width.
|
|
32
|
+
* Zero-cell rows remain one empty row, matching restored-terminal reflow.
|
|
33
|
+
*/
|
|
34
|
+
export declare function wrapLiteralLine(line: string, width: number): string[];
|
|
29
35
|
export declare function truncateToWidth(text: string, maxWidth: number, ellipsisKind?: Ellipsis | null | "", pad?: boolean | null): string;
|
|
30
36
|
export declare function wrapTextWithAnsi(text: string, width: number): string[];
|
|
31
37
|
export declare function extractSegments(line: string, beforeEnd: number, afterStart: number, afterLen: number, strictAfter: boolean): ExtractSegmentsResult;
|