// Kipinä WASM Worker — ajaa kielimallin inferenssin erillisessä säikeessä // Pääsäie (UI) ei jäädy pitkien laskutoimituksien aikana. let wasm = null; self.onmessage = async (e) => { const { type, data } = e.data; if (type === 'init') { try { // Ladataan WASM-moduuli Workerissa importScripts('./pkg/node.js'); wasm = wasm_bindgen; await wasm.default(); self.postMessage({ type: 'ready' }); } catch (err) { self.postMessage({ type: 'error', message: 'WASM init: ' + err.message }); } } else if (type === 'start') { if (!wasm) return; const { hubUrl, hasWebGPU, deviceInfo, taskId } = data; try { await wasm.start_agent_node(hubUrl, hasWebGPU, deviceInfo, taskId); self.postMessage({ type: 'started' }); } catch (err) { self.postMessage({ type: 'error', message: 'Node: ' + err.message }); } } else if (type === 'set_gpu_load') { if (wasm) wasm.set_gpu_load(data.load); } else if (type === 'set_auto_tasks') { if (wasm) wasm.set_auto_tasks(data.enabled); } };