From e8355b45bf58c99e3bf3cd983203016dfa94c94b Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Fri, 15 May 2026 11:36:00 +1000 Subject: [PATCH] Revert "fix(app): use legacy SDK for global events" This reverts commit e22ede26ee730ea4da70880f7854ccfc0f603a35. --- packages/app/src/context/global-sdk.tsx | 36 +++++++------------------ packages/app/src/context/sdk.tsx | 5 ++-- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/packages/app/src/context/global-sdk.tsx b/packages/app/src/context/global-sdk.tsx index d4cba1865b..001b90b42e 100644 --- a/packages/app/src/context/global-sdk.tsx +++ b/packages/app/src/context/global-sdk.tsx @@ -1,14 +1,9 @@ -import { - createOpencodeClient as createEventClient, - type Event as LegacyEvent, - type GlobalEvent as LegacyGlobalEvent, -} from "@opencode-ai/sdk/client" -import type { Event as CurrentEvent, GlobalEvent as CurrentGlobalEvent } from "@opencode-ai/sdk/v2/client" +import type { Event } from "@opencode-ai/sdk/v2/client" import { createSimpleContext } from "@opencode-ai/ui/context" import { createGlobalEmitter } from "@solid-primitives/event-bus" import { makeEventListener } from "@solid-primitives/event-listener" import { batch, onCleanup, onMount } from "solid-js" -import { authTokenFromCredentials, createSdkForServer } from "@/utils/server" +import { createSdkForServer } from "@/utils/server" import { useLanguage } from "./language" import { usePlatform } from "./platform" import { useServer } from "./server" @@ -16,9 +11,6 @@ import { useServer } from "./server" const isAbortError = (error: unknown) => error !== null && typeof error === "object" && "name" in error && error.name === "AbortError" -export type GlobalSDKEvent = CurrentEvent | LegacyEvent -type StreamEvent = CurrentGlobalEvent | LegacyGlobalEvent - export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleContext({ name: "GlobalSDK", init: () => { @@ -41,25 +33,16 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo const currentServer = server.current if (!currentServer) throw new Error(language.t("error.globalSDK.noServerAvailable")) - // Keep /global/event on the legacy SDK until the EventV2 stream contract is stable. - const eventSdk = createEventClient({ + const eventSdk = createSdkForServer({ signal: abort.signal, fetch: eventFetch, - baseUrl: currentServer.http.url, - headers: currentServer.http.password - ? { - Authorization: `Basic ${authTokenFromCredentials({ - username: currentServer.http.username, - password: currentServer.http.password, - })}`, - } - : undefined, + server: currentServer.http, }) const emitter = createGlobalEmitter<{ - [key: string]: GlobalSDKEvent + [key: string]: Event }>() - type Queued = { directory: string; payload: GlobalSDKEvent } + type Queued = { directory: string; payload: Event } const FLUSH_FRAME_MS = 16 const STREAM_YIELD_MS = 8 const RECONNECT_DELAY_MS = 250 @@ -73,7 +56,7 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo const deltaKey = (directory: string, messageID: string, partID: string) => `${directory}:${messageID}:${partID}` - const key = (directory: string, payload: GlobalSDKEvent) => { + const key = (directory: string, payload: Event) => { if (payload.type === "session.status") return `session.status:${directory}:${payload.properties.sessionID}` if (payload.type === "lsp.updated") return `lsp.updated:${directory}` if (payload.type === "message.part.updated") { @@ -167,8 +150,7 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo }) let yielded = Date.now() resetHeartbeat() - const stream: AsyncIterable = events.stream - for await (const event of stream) { + for await (const event of events.stream) { resetHeartbeat() streamErrorLogged = false const directory = event.directory ?? "global" @@ -176,7 +158,7 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo continue } - const payload = event.payload + const payload = event.payload as Event const k = key(directory, payload) if (k) { diff --git a/packages/app/src/context/sdk.tsx b/packages/app/src/context/sdk.tsx index a6de3d6530..bc97ea13ac 100644 --- a/packages/app/src/context/sdk.tsx +++ b/packages/app/src/context/sdk.tsx @@ -1,10 +1,11 @@ +import type { Event } from "@opencode-ai/sdk/v2/client" import { createSimpleContext } from "@opencode-ai/ui/context" import { createGlobalEmitter } from "@solid-primitives/event-bus" import { type Accessor, createEffect, createMemo, onCleanup } from "solid-js" -import { type GlobalSDKEvent, useGlobalSDK } from "./global-sdk" +import { useGlobalSDK } from "./global-sdk" type SDKEventMap = { - [key in GlobalSDKEvent["type"]]: Extract + [key in Event["type"]]: Extract } export const { use: useSDK, provider: SDKProvider } = createSimpleContext({