mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-16 12:03:23 +00:00
Adds StdinBuffer class (adapted from OpenTUI, MIT license) to split batched stdin into individual sequences before they reach components. This fixes key presses being dropped when batched with release events, which commonly occurs over SSH due to network buffering. - Each handleInput() call now receives a single event - matchesKey() and isKeyRelease() work correctly without batching awareness - Properly buffers incomplete escape sequences across chunks - Handles bracketed paste mode Addresses #538
75 lines
2.4 KiB
TypeScript
75 lines
2.4 KiB
TypeScript
// Core TUI interfaces and classes
|
|
|
|
// Autocomplete support
|
|
export {
|
|
type AutocompleteItem,
|
|
type AutocompleteProvider,
|
|
CombinedAutocompleteProvider,
|
|
type SlashCommand,
|
|
} from "./autocomplete.js";
|
|
// Components
|
|
export { Box } from "./components/box.js";
|
|
export { CancellableLoader } from "./components/cancellable-loader.js";
|
|
export { Editor, type EditorTheme } from "./components/editor.js";
|
|
export { Image, type ImageOptions, type ImageTheme } from "./components/image.js";
|
|
export { Input } from "./components/input.js";
|
|
export { Loader } from "./components/loader.js";
|
|
export { type DefaultTextStyle, Markdown, type MarkdownTheme } from "./components/markdown.js";
|
|
export { type SelectItem, SelectList, type SelectListTheme } from "./components/select-list.js";
|
|
export { type SettingItem, SettingsList, type SettingsListTheme } from "./components/settings-list.js";
|
|
export { Spacer } from "./components/spacer.js";
|
|
export { Text } from "./components/text.js";
|
|
export { TruncatedText } from "./components/truncated-text.js";
|
|
// Editor component interface (for custom editors)
|
|
export type { EditorComponent } from "./editor-component.js";
|
|
// Keybindings
|
|
export {
|
|
DEFAULT_EDITOR_KEYBINDINGS,
|
|
type EditorAction,
|
|
type EditorKeybindingsConfig,
|
|
EditorKeybindingsManager,
|
|
getEditorKeybindings,
|
|
setEditorKeybindings,
|
|
} from "./keybindings.js";
|
|
// Keyboard input handling
|
|
export {
|
|
isKeyRelease,
|
|
isKeyRepeat,
|
|
isKittyProtocolActive,
|
|
Key,
|
|
type KeyEventType,
|
|
type KeyId,
|
|
matchesKey,
|
|
parseKey,
|
|
setKittyProtocolActive,
|
|
} from "./keys.js";
|
|
// Input buffering for batch splitting
|
|
export { StdinBuffer, type StdinBufferEventMap, type StdinBufferOptions } from "./stdin-buffer.js";
|
|
// Terminal interface and implementations
|
|
export { ProcessTerminal, type Terminal } from "./terminal.js";
|
|
// Terminal image support
|
|
export {
|
|
type CellDimensions,
|
|
calculateImageRows,
|
|
detectCapabilities,
|
|
encodeITerm2,
|
|
encodeKitty,
|
|
getCapabilities,
|
|
getCellDimensions,
|
|
getGifDimensions,
|
|
getImageDimensions,
|
|
getJpegDimensions,
|
|
getPngDimensions,
|
|
getWebpDimensions,
|
|
type ImageDimensions,
|
|
type ImageProtocol,
|
|
type ImageRenderOptions,
|
|
imageFallback,
|
|
renderImage,
|
|
resetCapabilitiesCache,
|
|
setCellDimensions,
|
|
type TerminalCapabilities,
|
|
} from "./terminal-image.js";
|
|
export { type Component, Container, TUI } from "./tui.js";
|
|
// Utilities
|
|
export { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "./utils.js";
|