import type { Event } from "@opencode-ai/sdk/v2" import { useProject } from "./project" import { useSDK } from "./sdk" type EventMetadata = { workspace: string | undefined } export function useEvent() { const project = useProject() const sdk = useSDK() function subscribe(handler: (event: Event, metadata: EventMetadata) => void) { return sdk.event.on("event", (event) => { if (event.payload.type === "sync") { return } if (event.directory === "global" || event.project === project.project()) { handler(event.payload, { 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, } }