import type { Event } from "@opencode-ai/sdk/v2" import { useSDK } from "./sdk" type EventMetadata = { directory: string workspace: string | undefined } export function useEvent() { const sdk = useSDK() function subscribe(handler: (event: Event, metadata: EventMetadata) => void) { return sdk.event.on("event", (event) => { if (event.payload.type === "sync") { return } handler(event.payload, { directory: event.directory, workspace: event.workspace }) }) } function on( type: T, handler: (event: Extract, metadata: EventMetadata) => void, ) { return subscribe((event: Event, metadata: EventMetadata) => { if (event.type !== type) return handler(event as Extract, metadata) }) } return { subscribe, on, } }