/** * BasePTYSession - Abstract base class for PTY sessions * * Provides shared functionality for LocalPTYSession and ProxyPTYSession: * - Output buffering * - State management * - Event emission * - Common properties */ import { EventEmitter } from 'events'; import type { IPTYSession } from '../interfaces/pty-session.js'; import type { SessionSource, SessionMetadata, PTYSessionState } from '../types.js'; import { CircularOutputBuffer } from '../utils/output-buffer.js'; /** Default terminal columns */ export declare const DEFAULT_COLS = 80; /** Default terminal rows */ export declare const DEFAULT_ROWS = 24; /** * Abstract base class for PTY sessions * * Handles: * - Output buffering * - State management * - Event emission */ export declare abstract class BasePTYSession extends EventEmitter implements IPTYSession { protected _id: string; protected _source: SessionSource; protected _pid: number; protected _command: string; protected _cwd: string; protected _cols: number; protected _rows: number; protected _isRunning: boolean; protected _exitCode: number | null; protected _isFocused: boolean; protected _startedAt: Date; protected _metadata?: SessionMetadata; protected _outputBuffer: CircularOutputBuffer; protected _disposed: boolean; constructor(options: BasePTYSessionOptions); get id(): string; get source(): SessionSource; get pid(): number; get command(): string; get cwd(): string; get cols(): number; get rows(): number; get isRunning(): boolean; get exitCode(): number | null; get isFocused(): boolean; get startedAt(): Date; get metadata(): SessionMetadata | undefined; getOutputBuffer(maxBytes?: number): Buffer | null; /** * Add data to the output buffer and emit output event * (Called by subclasses when output is received) */ protected pushOutput(data: Buffer): void; /** * Update running state and exit code * Emits 'exit' event when session ends */ protected setExited(exitCode: number, signal?: string): void; /** * Update terminal dimensions * Emits 'resized' event if dimensions changed */ protected setSize(cols: number, rows: number): void; /** * Update focus state * Emits 'focusChanged' event if state changed */ protected setFocus(focused: boolean): void; /** Write data to the terminal */ abstract write(data: string | Buffer): void; /** Resize the terminal */ abstract resize(cols: number, rows: number): void; /** Kill the terminal process */ abstract kill(signal?: string): void; /** Dispose of the session */ dispose(): void; /** Check if disposed */ get isDisposed(): boolean; /** Convert to PTYSessionState */ toInfo(): PTYSessionState; } /** * Options for creating a BasePTYSession */ export interface BasePTYSessionOptions { /** Session ID */ id: string; /** Session source */ source: SessionSource; /** Process ID */ pid?: number; /** Command being executed */ command: string; /** Working directory */ cwd: string; /** Terminal columns */ cols?: number; /** Terminal rows */ rows?: number; /** Whether running */ isRunning?: boolean; /** Exit code if exited */ exitCode?: number | null; /** Whether focused */ isFocused?: boolean; /** When started */ startedAt?: Date; /** Session metadata */ metadata?: SessionMetadata; /** Output buffer size (default: 1MB) */ outputBufferSize?: number; } //# sourceMappingURL=base-pty-session.d.ts.map