diff --git a/packages/app/src/context/server-session.ts b/packages/app/src/context/server-session.ts index e82030258a..b2fd49251f 100644 --- a/packages/app/src/context/server-session.ts +++ b/packages/app/src/context/server-session.ts @@ -45,6 +45,12 @@ function projectMessageSource(message: Message): SessionMessageInfo[] { ] } +function yieldToMain() { + const scheduler = (globalThis as { scheduler?: { yield: () => Promise } }).scheduler + if (scheduler) return scheduler.yield() + return new Promise((resolve) => setTimeout(resolve, 0)) +} + function needsOlderTurnRoot(source: readonly SessionMessageInfo[]) { const boundary = source.find( (message) => @@ -530,6 +536,7 @@ export function createServerSession( if (!response.data.length) break } const response = pages.at(-1)! + await yieldToMain() const source = pages.flatMap((page) => page.data).toReversed() const normalized = normalizeSessionMessages(sessionID, source) return {