const { contextBridge, ipcRenderer } = require("electron"); contextBridge.exposeInMainWorld("desktopApi", { getRuntimeConfig: () => ipcRenderer.invoke("runtime:config"), selectDirectory: () => ipcRenderer.invoke("dialog:select-directory"), saveCsvDialog: (defaultPath) => ipcRenderer.invoke("dialog:save-csv", defaultPath), writeTextFile: (filePath, content) => ipcRenderer.invoke("file:write-text", filePath, content), findFirstDocument: (rootPath, keywords) => ipcRenderer.invoke("fs:first-document", rootPath, keywords), indexFolder: (rootPath, structureMode, docTypes, keywords) => ipcRenderer.invoke("fs:index-folder", rootPath, structureMode, docTypes, keywords), readFile: (filePath) => ipcRenderer.invoke("fs:read-file", filePath), checkForUpdates: () => ipcRenderer.invoke("updater:check"), getReleaseMeta: () => ipcRenderer.invoke("updater:release-meta"), listVersions: () => ipcRenderer.invoke("updater:list-versions"), installUpdate: (manifest) => ipcRenderer.invoke("updater:install", manifest), onUpdateProgress: (callback) => { const handler = (_event, payload) => callback(payload); ipcRenderer.on("updater:progress", handler); return () => ipcRenderer.removeListener("updater:progress", handler); }, });