58 lines · 1.4 KB · TypeScript
RawDownload
/** * PtyAdapter - Terminal PTY adapter service contract. * * Defines the process primitives required by terminal session management * without binding to a specific PTY implementation. * * @module PtyAdapter */import { Effect, Schema, ServiceMap } from "effect"; /** * PtyError - Error type for PTY adapter operations. */export class PtySpawnError extends Schema.TaggedErrorClass<PtySpawnError>()("PtySpawnError", {  adapter: Schema.String,  message: Schema.String,  cause: Schema.optional(Schema.Defect),}) {} export interface PtyExitEvent {  exitCode: number;  signal: number | null;} export interface PtyProcess {  readonly pid: number;  write(data: string): void;  resize(cols: number, rows: number): void;  kill(signal?: string): void;  onData(callback: (data: string) => void): () => void;  onExit(callback: (event: PtyExitEvent) => void): () => void;} export interface PtySpawnInput {  shell: string;  args?: string[];  cwd: string;  cols: number;  rows: number;  env: NodeJS.ProcessEnv;} /** * PtyAdapterShape - Service API for spawning and controlling PTY processes. */export interface PtyAdapterShape {  /**   * Spawn a PTY process for a terminal session.   */  spawn(input: PtySpawnInput): Effect.Effect<PtyProcess, PtySpawnError>;} /** * PtyAdapter - Service tag for PTY process integration. */export class PtyAdapter extends ServiceMap.Service<PtyAdapter, PtyAdapterShape>()(  "t3/terminal/Services/PTY/PtyAdapter",) {}