const { contextBridge, ipcRenderer } = require("electron"); contextBridge.exposeInMainWorld("electronAPI", { // App configuration (loaded from config.json) getConfig: () => ipcRenderer.invoke("get-config"), // Navigation navigate: (page) => ipcRenderer.invoke("navigate", page), // Sidecar status getSidecarStatus: () => ipcRenderer.invoke("get-sidecar-status"), // === Streaming Mode APIs === startRecordingStream: () => ipcRenderer.invoke("start-recording-stream"), streamAudioChunk: (base64Audio) => ipcRenderer.invoke("stream-audio-chunk", base64Audio), stopRecordingStream: () => ipcRenderer.invoke("stop-recording-stream"), // Streaming events onTranscriptionSegment: (callback) => { ipcRenderer.on("transcription-segment", (event, segment) => callback(segment)); }, onStreamStarted: (callback) => { ipcRenderer.on("stream-started", (event, data) => callback(data)); }, onStreamStopped: (callback) => { ipcRenderer.on("stream-stopped", (event, data) => callback(data)); }, // === Legacy File-based APIs (fallback) === saveAudioFile: (arrayBuffer) => ipcRenderer.invoke("save-audio-file", arrayBuffer), transcribeAudio: (filePath) => ipcRenderer.invoke("transcribe-audio", filePath), onTranscriptionResult: (callback) => { ipcRenderer.on("transcription-result", (event, text) => callback(text)); }, });