diff --git a/apps/server/src/provider/Layers/ClaudeAdapter.ts b/apps/server/src/provider/Layers/ClaudeAdapter.ts index b0f080118e..6b50bd4fbb 100644 --- a/apps/server/src/provider/Layers/ClaudeAdapter.ts +++ b/apps/server/src/provider/Layers/ClaudeAdapter.ts @@ -2817,16 +2817,25 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* ( providerRefs: {}, }); - const streamFiber = runFork(runSdkStream(context)); + let streamFiber: Fiber.Fiber; + streamFiber = runFork( + Effect.exit(runSdkStream(context)).pipe( + Effect.flatMap((exit) => { + if (context.stopped) { + return Effect.void; + } + if (context.streamFiber === streamFiber) { + context.streamFiber = undefined; + } + return handleStreamExit(context, exit); + }), + ), + ); context.streamFiber = streamFiber; - streamFiber.addObserver((exit) => { - if (context.stopped) { - return; - } + streamFiber.addObserver(() => { if (context.streamFiber === streamFiber) { context.streamFiber = undefined; } - runFork(handleStreamExit(context, exit)); }); return {