summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/global-sdk.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-12 09:49:14 -0600
committerGitHub <[email protected]>2026-02-12 09:49:14 -0600
commitff4414bb152acfddb5c0eb073c38bedc1df4ae14 (patch)
tree78381c67d21ef6f089647f6b19e7aa2976840dbc /packages/app/src/context/global-sdk.tsx
parent56ad2db02055955f926fda0e4a89055b22ead6f9 (diff)
downloadopencode-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.tsx22
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()