mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
a781761eda
## Why Windows unified-exec TTY input did not behave like the non-Windows PTY path. ConPTY sessions could receive the wrong line ending or mishandle backspace, especially when sending input to a foreground program through PowerShell or cmd. The local, legacy restricted, and elevated paths also handled this normalization separately. ## What changed - share one stateful Windows TTY input normalizer across local, legacy restricted, and elevated runner paths - translate LF and split CRLF into one Windows terminal Enter, encode backspace as DEL, and preserve UTF-8 and control bytes such as Ctrl-C - add Windows integration coverage for Unicode input, backspace, Enter, and PowerShell foreground-child Ctrl-C behavior ## Validation - `just test -p codex-utils-pty` (13 tests passed; the Unicode integration test retried once) - the Unicode integration test passed five consecutive runs with retries disabled - integration coverage sends `cafeé 漢字` through cmd and PowerShell and verifies that Ctrl-C interrupts a running PowerShell foreground child
46 lines
1.8 KiB
Rust
46 lines
1.8 KiB
Rust
pub mod pipe;
|
|
mod process;
|
|
pub mod process_group;
|
|
pub mod pty;
|
|
#[cfg(test)]
|
|
mod tests;
|
|
#[cfg(windows)]
|
|
mod win;
|
|
#[cfg(windows)]
|
|
mod windows_input;
|
|
|
|
pub const DEFAULT_OUTPUT_BYTES_CAP: usize = 1024 * 1024;
|
|
|
|
/// Spawn a non-interactive process using regular pipes for stdin/stdout/stderr.
|
|
pub use pipe::spawn_process as spawn_pipe_process;
|
|
/// Spawn a non-interactive process using regular pipes, but close stdin immediately.
|
|
pub use pipe::spawn_process_no_stdin as spawn_pipe_process_no_stdin;
|
|
/// Driver-backed process adapter used by integrations with their own process transport.
|
|
pub use process::ProcessDriver;
|
|
/// Handle for interacting with a spawned process (PTY or pipe).
|
|
pub use process::ProcessHandle;
|
|
/// Process signal supported by spawned-process handles.
|
|
pub use process::ProcessSignal;
|
|
/// Bundle of process handles plus split output and exit receivers returned by spawn helpers.
|
|
pub use process::SpawnedProcess;
|
|
/// Terminal size in character cells used for PTY spawn and resize operations.
|
|
pub use process::TerminalSize;
|
|
/// Combine stdout/stderr receivers into a single broadcast receiver.
|
|
pub use process::combine_output_receivers;
|
|
/// Adapt an externally-driven process into the standard spawned-process handle.
|
|
pub use process::spawn_from_driver;
|
|
/// Backwards-compatible alias for ProcessHandle.
|
|
pub type ExecCommandSession = ProcessHandle;
|
|
/// Backwards-compatible alias for SpawnedProcess.
|
|
pub type SpawnedPty = SpawnedProcess;
|
|
/// Report whether ConPTY is available on this platform (Windows only).
|
|
pub use pty::conpty_supported;
|
|
/// Spawn a process attached to a PTY for interactive use.
|
|
pub use pty::spawn_process as spawn_pty_process;
|
|
#[cfg(windows)]
|
|
pub use win::PsuedoCon;
|
|
#[cfg(windows)]
|
|
pub use win::conpty::RawConPty;
|
|
#[cfg(windows)]
|
|
pub use windows_input::WindowsTtyInputNormalizer;
|