diff --git a/packages/opencode/src/pty/index.ts b/packages/opencode/src/pty/index.ts index dee3fbc5429..42364f6e13f 100644 --- a/packages/opencode/src/pty/index.ts +++ b/packages/opencode/src/pty/index.ts @@ -195,18 +195,11 @@ export namespace Pty { session.bufferCursor += excess }) ptyProcess.onExit(({ exitCode }) => { + if (session.info.status === 'exited') return; log.info("session exited", { id, exitCode }) session.info.status = "exited" - for (const [key, ws] of session.subscribers.entries()) { - try { - if (ws.data === key) ws.close() - } catch { - // ignore - } - } - session.subscribers.clear() Bus.publish(Event.Exited, { id, exitCode }) - state().delete(id) + remove(id); }) Bus.publish(Event.Created, { info }) return info @@ -228,6 +221,7 @@ export namespace Pty { export async function remove(id: string) { const session = state().get(id) if (!session) return + state().delete(id) log.info("removing session", { id }) try { session.process.kill() @@ -240,7 +234,6 @@ export namespace Pty { } } session.subscribers.clear() - state().delete(id) Bus.publish(Event.Deleted, { id }) }