// GENERATED CODE! DO NOT MODIFY BY HAND!

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { AbsolutePathBuf } from "../AbsolutePathBuf";
import type { ProcessTerminalSize } from "./ProcessTerminalSize";

/**
 * Spawn a standalone process (argv vector) without a Codex sandbox on the host
 * where the app server is running.
 *
 * `process/spawn` returns after the process has started and the connection-scoped
 * `processHandle` has been registered. Process output and exit are reported via
 * `process/outputDelta` and `process/exited` notifications.
 */
export type ProcessSpawnParams = {
/**
 * Command argv vector. Empty arrays are rejected.
 */
command: Array<string>,
/**
 * Client-supplied, connection-scoped process handle.
 *
 * Duplicate active handles are rejected on the same connection. The same
 * handle can be reused after the prior process exits.
 */
processHandle: string,
/**
 * Absolute working directory for the process.
 */
cwd: AbsolutePathBuf,
/**
 * Enable PTY mode.
 *
 * This implies `streamStdin` and `streamStdoutStderr`.
 */
tty?: boolean,
/**
 * Allow follow-up `process/writeStdin` requests to write stdin bytes.
 */
streamStdin?: boolean,
/**
 * Stream stdout/stderr via `process/outputDelta` notifications.
 *
 * Streamed bytes are not duplicated into the `process/exited` notification.
 */
streamStdoutStderr?: boolean,
/**
 * Optional per-stream stdout/stderr capture cap in bytes.
 *
 * When omitted, the server default applies. Set to `null` to disable the
 * cap.
 */
outputBytesCap?: number | null,
/**
 * Optional timeout in milliseconds.
 *
 * When omitted, the server default applies. Set to `null` to disable the
 * timeout.
 */
timeoutMs?: number | null,
/**
 * Optional environment overrides merged into the app-server process
 * environment.
 *
 * Matching names override inherited values. Set a key to `null` to unset
 * an inherited variable.
 */
env?: { [key in string]?: string | null } | null,
/**
 * Optional initial PTY size in character cells. Only valid when `tty` is
 * true.
 */
size?: ProcessTerminalSize | null, };
