mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-09-13 04:03:30 +00:00
27 lines
1.4 KiB
TypeScript
27 lines
1.4 KiB
TypeScript
/** Context-isolated renderer bridge for desktop package and update operations. */
|
|
|
|
import { contextBridge, ipcRenderer } from 'electron'
|
|
import { DESKTOP_IPC, type DshDesktopApi, type DesktopUpdateState } from './ipc.ts'
|
|
|
|
const api: DshDesktopApi = {
|
|
protocolVersion: 1,
|
|
locale: () => ipcRenderer.invoke(DESKTOP_IPC.localeGet) as Promise<ReturnType<DshDesktopApi['locale']> extends Promise<infer T> ? T : never>,
|
|
plugins: {
|
|
list: () => ipcRenderer.invoke(DESKTOP_IPC.pluginsList) as Promise<ReturnType<DshDesktopApi['plugins']['list']> extends Promise<infer T> ? T : never>,
|
|
add: spec => ipcRenderer.invoke(DESKTOP_IPC.pluginsAdd, spec) as Promise<void>,
|
|
remove: name => ipcRenderer.invoke(DESKTOP_IPC.pluginsRemove, name) as Promise<void>,
|
|
update: (name, version) => ipcRenderer.invoke(DESKTOP_IPC.pluginsUpdate, name, version) as Promise<void>,
|
|
},
|
|
updates: {
|
|
check: () => ipcRenderer.invoke(DESKTOP_IPC.updatesCheck) as Promise<DesktopUpdateState>,
|
|
install: () => ipcRenderer.invoke(DESKTOP_IPC.updatesInstall) as Promise<void>,
|
|
subscribe(listener) {
|
|
const handle = (_event: Electron.IpcRendererEvent, state: DesktopUpdateState): void => { listener(state) }
|
|
ipcRenderer.on(DESKTOP_IPC.updatesState, handle)
|
|
return () => { ipcRenderer.off(DESKTOP_IPC.updatesState, handle) }
|
|
},
|
|
},
|
|
}
|
|
|
|
contextBridge.exposeInMainWorld('dshDesktop', api)
|