diff options
| author | Adam <[email protected]> | 2026-02-12 09:49:14 -0600 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-12 09:49:14 -0600 |
| commit | ff4414bb152acfddb5c0eb073c38bedc1df4ae14 (patch) | |
| tree | 78381c67d21ef6f089647f6b19e7aa2976840dbc /packages/app/src/context/global-sdk.tsx | |
| parent | 56ad2db02055955f926fda0e4a89055b22ead6f9 (diff) | |
| download | opencode-ff4414bb152acfddb5c0eb073c38bedc1df4ae14.tar.gz opencode-ff4414bb152acfddb5c0eb073c38bedc1df4ae14.zip | |
chore: refactor packages/app files (#13236)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Frank <[email protected]>
Diffstat (limited to 'packages/app/src/context/global-sdk.tsx')
| -rw-r--r-- | packages/app/src/context/global-sdk.tsx | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/packages/app/src/context/global-sdk.tsx b/packages/app/src/context/global-sdk.tsx index cb610bf6e..8c50a8878 100644 --- a/packages/app/src/context/global-sdk.tsx +++ b/packages/app/src/context/global-sdk.tsx @@ -31,9 +31,11 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo }>() type Queued = { directory: string; payload: Event } + const FLUSH_FRAME_MS = 16 + const STREAM_YIELD_MS = 8 - let queue: Array<Queued | undefined> = [] - let buffer: Array<Queued | undefined> = [] + let queue: Queued[] = [] + let buffer: Queued[] = [] const coalesced = new Map<string, number>() let timer: ReturnType<typeof setTimeout> | undefined let last = 0 @@ -62,7 +64,6 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo last = Date.now() batch(() => { for (const event of events) { - if (!event) continue emitter.emit(event.directory, event.payload) } }) @@ -73,9 +74,11 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo const schedule = () => { if (timer) return const elapsed = Date.now() - last - timer = setTimeout(flush, Math.max(0, 16 - elapsed)) + timer = setTimeout(flush, Math.max(0, FLUSH_FRAME_MS - elapsed)) } + let streamErrorLogged = false + void (async () => { const events = await eventSdk.global.event() let yielded = Date.now() @@ -86,20 +89,25 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo if (k) { const i = coalesced.get(k) if (i !== undefined) { - queue[i] = undefined + queue[i] = { directory, payload } + continue } coalesced.set(k, queue.length) } queue.push({ directory, payload }) schedule() - if (Date.now() - yielded < 8) continue + if (Date.now() - yielded < STREAM_YIELD_MS) continue yielded = Date.now() await new Promise<void>((resolve) => setTimeout(resolve, 0)) } })() .finally(flush) - .catch(() => undefined) + .catch((error) => { + if (streamErrorLogged) return + streamErrorLogged = true + console.error("[global-sdk] event stream failed", error) + }) onCleanup(() => { abort.abort() |
