const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('gitZoneIde', { listHosts: () => ipcRenderer.invoke('gitzone:list-hosts'), saveHost: (input) => ipcRenderer.invoke('gitzone:save-host', input), connect: (input) => ipcRenderer.invoke('gitzone:connect', input), addProject: (input) => ipcRenderer.invoke('gitzone:add-project', input), openProject: (input) => ipcRenderer.invoke('gitzone:open-project', input), openCode: { health: (input) => ipcRenderer.invoke('gitzone:opencode-health', input), sessions: (input) => ipcRenderer.invoke('gitzone:opencode-sessions', input), createSession: (input) => ipcRenderer.invoke('gitzone:opencode-create-session', input), messages: (input) => ipcRenderer.invoke('gitzone:opencode-messages', input), prompt: (input) => ipcRenderer.invoke('gitzone:opencode-prompt', input), abort: (input) => ipcRenderer.invoke('gitzone:opencode-abort', input), respondToPermission: (input) => ipcRenderer.invoke('gitzone:opencode-respond-permission', input), providers: (input) => ipcRenderer.invoke('gitzone:opencode-providers', input), agents: (input) => ipcRenderer.invoke('gitzone:opencode-agents', input), onEvent: (callback) => { const listener = (_event, payload) => callback(payload); ipcRenderer.on('gitzone:opencode-event', listener); return () => ipcRenderer.removeListener('gitzone:opencode-event', listener); }, }, onConnectProgress: (callback) => { const listener = (_event, message) => callback(message); ipcRenderer.on('gitzone:connect-progress', listener); return () => ipcRenderer.removeListener('gitzone:connect-progress', listener); }, });