mirror of
https://github.com/Anil-matcha/Open-Generative-AI.git
synced 2026-05-07 01:17:18 +00:00
Closes the gap reported in #126 where local users hit "Not authorized: missing or invalid credentials" on upload and couldn't generate video locally even with WanGP installed. Image, video, and reference uploads were all hard-wired to the Muapi-hosted upload endpoint, and Video Studio had no branch into the local Wan2GP provider for generate. - electron/wan2gpProvider: new wan2gp:upload-file IPC that POSTs to the Gradio /upload endpoint, caches the returned path, and rehydrates it into a Gradio FileData descriptor on generate. Adds wan2gp:wan22-i2v. - preload + localInferenceClient: expose uploadFileToWan2gp(file). - localModels: wan22-i2v entry, isWan2gpModelId, localT2VModels/localI2VModels. - UploadPicker: accept optional uploadFn + requireApiKey so callers can bypass the Muapi auth modal when the active provider is local. - VideoStudio: merge Wan2GP video models into t2v/i2v lists, route the reference-image upload through the local provider when a Wan2GP model is selected, skip the Muapi key gate for local generations, call localAI.generate, and surface step progress in the button label. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
2.2 KiB
JavaScript
41 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);
|
|
},
|
|
});
|