diff --git a/packages/opencode/src/server/routes/event.ts b/packages/opencode/src/server/routes/event.ts index b4d76efd3d..2e42071aeb 100644 --- a/packages/opencode/src/server/routes/event.ts +++ b/packages/opencode/src/server/routes/event.ts @@ -33,7 +33,7 @@ export const EventRoutes = () => c.header("X-Content-Type-Options", "nosniff") return streamSSE(c, async (stream) => { const q = new AsyncQueue({ name: "sse:event" }) - let done = false + let closed = false q.push( JSON.stringify({ @@ -53,12 +53,12 @@ export const EventRoutes = () => }, 10_000) const stop = () => { - if (done) return - done = true + if (closed) return + closed = true clearInterval(heartbeat) unsub() q.push(null) - q.done() + q.untrack() log.info("event disconnected") } diff --git a/packages/opencode/src/server/routes/global.ts b/packages/opencode/src/server/routes/global.ts index 8e19fffff3..7b4de68e88 100644 --- a/packages/opencode/src/server/routes/global.ts +++ b/packages/opencode/src/server/routes/global.ts @@ -20,7 +20,7 @@ export const GlobalDisposedEvent = BusEvent.define("global.disposed", z.object({ async function streamEvents(c: Context, name: string, subscribe: (q: AsyncQueue) => () => void) { return streamSSE(c, async (stream) => { const q = new AsyncQueue({ name }) - let done = false + let closed = false q.push( JSON.stringify({ @@ -44,12 +44,12 @@ async function streamEvents(c: Context, name: string, subscribe: (q: AsyncQueue< }, 10_000) const stop = () => { - if (done) return - done = true + if (closed) return + closed = true clearInterval(heartbeat) unsub() q.push(null) - q.done() + q.untrack() log.info("global event disconnected") } diff --git a/packages/opencode/src/util/queue.ts b/packages/opencode/src/util/queue.ts index 73bf6a5969..7931f2dcb8 100644 --- a/packages/opencode/src/util/queue.ts +++ b/packages/opencode/src/util/queue.ts @@ -63,7 +63,7 @@ export class AsyncQueue implements AsyncIterable { }) } - done() { + untrack() { if (this.id === undefined) return all.delete(this.id) }