mirror of
https://github.com/openai/codex.git
synced 2026-04-28 00:25:56 +00:00
add js_repl polling and reuse unified_exec managed process substrate
This commit is contained in:
@@ -7,7 +7,7 @@ Lightweight helpers for spawning interactive processes either under a PTY (pseud
|
||||
- `spawn_pty_process(program, args, cwd, env, arg0, size)` → `SpawnedProcess`
|
||||
- `spawn_pipe_process(program, args, cwd, env, arg0)` → `SpawnedProcess`
|
||||
- `spawn_pipe_process_no_stdin(program, args, cwd, env, arg0)` → `SpawnedProcess`
|
||||
- `combine_output_receivers(stdout_rx, stderr_rx)` → `broadcast::Receiver<Vec<u8>>`
|
||||
- `spawn_pipe_process_split(program, args, cwd, env, arg0)` → `SpawnedProcessSplit`
|
||||
- `conpty_supported()` → `bool` (Windows only; always true elsewhere)
|
||||
- `TerminalSize { rows, cols }` selects PTY dimensions in character cells.
|
||||
- `ProcessHandle` exposes:
|
||||
@@ -15,14 +15,14 @@ Lightweight helpers for spawning interactive processes either under a PTY (pseud
|
||||
- `resize(TerminalSize)`
|
||||
- `close_stdin()`
|
||||
- `has_exited()`, `exit_code()`, `terminate()`
|
||||
- `SpawnedProcess` bundles `session`, `stdout_rx`, `stderr_rx`, and `exit_rx` (oneshot exit code).
|
||||
- `SpawnedProcess` bundles `session`, `output_rx`, and `exit_rx` (oneshot exit code).
|
||||
- `SpawnedProcessSplit` bundles `session`, merged `output_rx`, split `stdout_rx` / `stderr_rx`, and `exit_rx`.
|
||||
|
||||
## Usage examples
|
||||
|
||||
```rust
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
use codex_utils_pty::combine_output_receivers;
|
||||
use codex_utils_pty::spawn_pty_process;
|
||||
use codex_utils_pty::TerminalSize;
|
||||
|
||||
@@ -41,7 +41,7 @@ let writer = spawned.session.writer_sender();
|
||||
writer.send(b"exit\n".to_vec()).await?;
|
||||
|
||||
// Collect output until the process exits.
|
||||
let mut output_rx = combine_output_receivers(spawned.stdout_rx, spawned.stderr_rx);
|
||||
let mut output_rx = spawned.output_rx;
|
||||
let mut collected = Vec::new();
|
||||
while let Ok(chunk) = output_rx.try_recv() {
|
||||
collected.extend_from_slice(&chunk);
|
||||
|
||||
Reference in New Issue
Block a user