From b23b00490afdb1eb7c19b23fcf4bcc6634d0a663 Mon Sep 17 00:00:00 2001 From: iamdoubz <> Date: Thu, 2 Jul 2026 17:16:44 -0500 Subject: [PATCH] feat(ui): NPU package download API + npu://download events (T3.4) --- src/lib/api.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/api.ts b/src/lib/api.ts index 8be118c..174f258 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -37,6 +37,8 @@ export interface HardwareStatus { active: BackendId; modelSize: string; estRtf: number; + /** NPU package state (T3.4): chip detected, runtime staged, model fetched. */ + npu?: { present: boolean; runtimeReady: boolean; modelInstalled: boolean }; } export interface LlmStatus { @@ -298,6 +300,7 @@ export const api = { hardwareStatus: () => invoke("hardware_status"), setPreferredBackend: (backend: BackendId | "auto") => invoke("set_preferred_backend", { args: { backend } }), + downloadNpuPackage: () => invoke("download_npu_package"), listModels: () => invoke("list_models"), downloadModel: (id: string, kind: "whisper" = "whisper") => invoke("download_model", { args: { kind, id } }), @@ -440,6 +443,16 @@ export const events = { onHardwareChanged: ( cb: (p: { active: BackendId; reason: string }) => void, ): Promise => listen("hardware://changed", (e) => cb(e.payload as never)), + onNpuDownload: ( + cb: (p: { + stage: "model" | "runtime" | "done"; + file?: number; + received?: number; + total?: number | null; + copied?: number; + ready?: boolean; + }) => void, + ): Promise => listen("npu://download", (e) => cb(e.payload as never)), onSyncJob: ( cb: (p: { jobId: string;