import { contextBridge, ipcRenderer } from 'electron' import type { AgentUiEvent, SessionState } from '@shared/types' export interface DesktopApi { send: (text: string) => Promise steer: (text: string) => Promise stop: () => Promise getState: () => Promise versions: () => Promise<{ app: string; electron: string; node: string; chrome: string }> onEvent: (callback: (event: AgentUiEvent) => void) => () => void } const api: DesktopApi = { send: (text) => ipcRenderer.invoke('agent:send', text), steer: (text) => ipcRenderer.invoke('agent:steer', text), stop: () => ipcRenderer.invoke('agent:stop'), getState: () => ipcRenderer.invoke('agent:state'), versions: () => ipcRenderer.invoke('app:versions'), onEvent: (callback) => { const listener = (_e: Electron.IpcRendererEvent, event: AgentUiEvent): void => callback(event) ipcRenderer.on('agent:event', listener) return () => { ipcRenderer.removeListener('agent:event', listener) } } } contextBridge.exposeInMainWorld('api', api)