Skip to content

Terminal

The Terminal class creates an interactive shell — it manages the readline loop, command dispatch, lifecycle hooks, and history persistence.

History — command history persistence
Commands — defining commands
Arguments — typed accessors and prompting
Hooks — lifecycle event reference

Options

Option Default Description
prompt "> " Prompt string
stdin process.stdin Input stream
stdout process.stdout Output stream
historySize 100 Readline history size
historyPath Path for persisting command history (JSON array)
dropInflightKeystrokes false When true, suppresses echo and discards input that arrives while a command is executing (TTY only). When false (default), input is queued and processed after the command finishes.
silentSigint false When true, suppresses the ^C echo normally written to stdout on Ctrl+C. The current input line is still cleared and the prompt is re-displayed.

Lifecycle

start() initializes the readline interface, fires onStart hooks, and begins accepting input. On TTY, a byte-level Transform filter is installed between stdin and readline to remap Ctrl+Backspace to Ctrl+W for word deletion. stop() terminates the loop, unpipes and destroys the input filter, runs beforeExit / onStop hooks, and cleans up. setPrompt() changes the prompt string at runtime.

Pressing Ctrl+C at the command prompt clears the current input line and re-prompts. When silentSigint is true, the ^C indicator is suppressed. During an interactive argument prompt (e.g., args.require()), Ctrl+C cancels the command silently.

Concurrency

Commands never execute concurrently. How mid-execution input is handled depends on dropInflightKeystrokes:

  • Default (false): input is queued by an internal mutex and processed in order after the current command finishes. Prompts never appear mid-output.
  • When true (TTY only): the input manager switches to drop mode during command execution — stdin enters raw mode and pauses, so keystrokes are neither echoed nor queued. When the command finishes, the previous input mode is restored. See Architecture — Input management for details.