From 993ec6ec91b95f55ea96c22483a5a9ffd7f6f113 Mon Sep 17 00:00:00 2001 From: Shreehari Kulkarni Date: Fri, 20 Mar 2026 16:42:40 +0530 Subject: [PATCH] Removed stale input listeners --- src/container.ts | 10 +++++++--- src/terminal.ts | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/container.ts b/src/container.ts index 9592e59..9e6b9e1 100644 --- a/src/container.ts +++ b/src/container.ts @@ -30,6 +30,7 @@ export class ContainerManager { private audit: AuditLog | null = null; private policy: PolicyEngine | null = null; private activeProcessCount = 0; + private onDataDisposable: { dispose(): void } | null = null; private outputLineBuf = ''; private outputFlushTimer: ReturnType | null = null; private gitService: GitService | null = null; @@ -369,7 +370,8 @@ export class ContainerManager { // Wire keystrokes directly to gitclaw stdin (no jsh in between) this.shellWriter = this.shellProcess.input.getWriter(); - terminal.onData((data) => { + this.onDataDisposable?.dispose(); + this.onDataDisposable = terminal.onData((data) => { this.shellWriter?.write(data); this.audit?.logStdin(data); }); @@ -418,7 +420,8 @@ export class ContainerManager { ); this.shellWriter = this.shellProcess.input.getWriter(); - terminal.onData((data) => { + this.onDataDisposable?.dispose(); + this.onDataDisposable = terminal.onData((data) => { this.shellWriter?.write(data); this.audit?.logStdin(data); }); @@ -593,7 +596,8 @@ export class ContainerManager { ); this.shellWriter = this.shellProcess.input.getWriter(); - terminal.onData((data) => { + this.onDataDisposable?.dispose(); + this.onDataDisposable = terminal.onData((data) => { this.shellWriter?.write(data); this.audit?.logStdin(data); }); diff --git a/src/terminal.ts b/src/terminal.ts index acdb859..46b0598 100644 --- a/src/terminal.ts +++ b/src/terminal.ts @@ -62,8 +62,8 @@ export class TerminalManager { } /** Register a handler for user keystrokes (sent to shell stdin). */ - onData(handler: (data: string) => void): void { - this.xterm.onData(handler); + onData(handler: (data: string) => void): { dispose(): void } { + return this.xterm.onData(handler); } /** Current terminal dimensions for pty resize. */