42 lines
2.2 KiB
JavaScript
42 lines
2.2 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
contextBridge.exposeInMainWorld('localAI', {
|
|
isElectron: true,
|
|
|
|
// ── sd.cpp engine ──────────────────────────────────────────────────────
|
|
getBinaryStatus: () => ipcRenderer.invoke('local-ai:binary-status'),
|
|
downloadBinary: () => ipcRenderer.invoke('local-ai:download-binary'),
|
|
|
|
listModels: () => ipcRenderer.invoke('local-ai:list-models'),
|
|
downloadModel: (modelId) => ipcRenderer.invoke('local-ai:download-model', modelId),
|
|
downloadAuxiliary: (auxKey) => ipcRenderer.invoke('local-ai:download-auxiliary', auxKey),
|
|
deleteModel: (modelId) => ipcRenderer.invoke('local-ai:delete-model', modelId),
|
|
cancelDownload: (modelId) => ipcRenderer.invoke('local-ai:cancel-download', modelId),
|
|
|
|
generate: (params) => ipcRenderer.invoke('local-ai:generate', params),
|
|
cancelGeneration: () => ipcRenderer.invoke('local-ai:cancel-generation'),
|
|
|
|
// ── Wan2GP engine (remote Gradio server) ───────────────────────────────
|
|
wan2gp: {
|
|
getConfig: () => ipcRenderer.invoke('wan2gp:get-config'),
|
|
setUrl: (url) => ipcRenderer.invoke('wan2gp:set-url', url),
|
|
probe: (url) => ipcRenderer.invoke('wan2gp:probe', url),
|
|
listModels: () => ipcRenderer.invoke('wan2gp:list-models'),
|
|
generate: (params) => ipcRenderer.invoke('wan2gp:generate', params),
|
|
cancelGeneration: () => ipcRenderer.invoke('wan2gp:cancel-generation'),
|
|
uploadFile: (payload) => ipcRenderer.invoke('wan2gp:upload-file', payload),
|
|
},
|
|
|
|
// Progress events — both engines emit on local-ai:progress
|
|
onProgress: (callback) => {
|
|
const listener = (_, data) => callback(data);
|
|
ipcRenderer.on('local-ai:progress', listener);
|
|
return () => ipcRenderer.removeListener('local-ai:progress', listener);
|
|
},
|
|
onDownloadProgress: (callback) => {
|
|
const listener = (_, data) => callback(data);
|
|
ipcRenderer.on('local-ai:download-progress', listener);
|
|
return () => ipcRenderer.removeListener('local-ai:download-progress', listener);
|
|
},
|
|
});
|