From debe18f58f971bbfb2605f72b5b4677e1e2515b4 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 14 Oct 2025 03:02:52 -0400 Subject: [PATCH] fix: use async iterable event stream for live tool updates --- packages/slack/src/index.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/slack/src/index.ts b/packages/slack/src/index.ts index 8dd8f912c..bbe253b75 100644 --- a/packages/slack/src/index.ts +++ b/packages/slack/src/index.ts @@ -100,15 +100,17 @@ app.message(async ({ message, say }) => { // Start listening to events for this session const eventStream = await client.event.subscribe() - eventStream.addEventListener("message", (event: any) => { - const data = JSON.parse(event.data) - if (data.type === "message.part.updated" && data.properties.part.sessionID === createResult.data.id) { - const part = data.properties.part - if (part.type === "tool") { - handleToolUpdate(part, channel, thread) + // Listen for events in the background + ;(async () => { + for await (const event of eventStream.stream) { + if (event.type === "message.part.updated" && event.properties.part.sessionID === createResult.data.id) { + const part = event.properties.part + if (part.type === "tool") { + handleToolUpdate(part, channel, thread) + } } } - }) + })() session = { client, server, sessionId: createResult.data.id, channel, thread, eventStream } sessions.set(sessionKey, session)