feat: model dir auto-scan, remote API models, model plaza with HF/ModelScope downloads
This commit is contained in:
+35
-2
@@ -14,6 +14,7 @@ export interface ModelInfo {
|
||||
id: string;
|
||||
repo_id: string;
|
||||
source: string;
|
||||
kind: string;
|
||||
file_name: string;
|
||||
file_path: string;
|
||||
file_size: number;
|
||||
@@ -21,10 +22,28 @@ export interface ModelInfo {
|
||||
family: string | null;
|
||||
status: string;
|
||||
sha256: string | null;
|
||||
base_url: string | null;
|
||||
api_key: string | null;
|
||||
api_model: string | null;
|
||||
meta: Record<string, unknown>;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface RepoSummary {
|
||||
repo_id: string;
|
||||
author: string;
|
||||
name: string;
|
||||
downloads: number | null;
|
||||
likes: number | null;
|
||||
tags: string[];
|
||||
}
|
||||
|
||||
export interface ModelFile {
|
||||
path: string;
|
||||
size: number;
|
||||
sha256: string | null;
|
||||
}
|
||||
|
||||
export interface EngineStatus {
|
||||
running: boolean;
|
||||
port: number | null;
|
||||
@@ -110,6 +129,13 @@ export const api = {
|
||||
listModels: () => invoke<ModelInfo[]>("list_models"),
|
||||
importModel: (path: string) => invoke<ModelInfo>("import_model", { path }),
|
||||
removeModel: (id: string) => invoke<void>("remove_model", { id }),
|
||||
scanModels: () => invoke<ModelInfo[]>("scan_models"),
|
||||
addRemoteModel: (name: string, baseUrl: string, apiKey: string, apiModel: string) =>
|
||||
invoke<ModelInfo>("add_remote_model", { name, baseUrl, apiKey, apiModel }),
|
||||
searchModels: (query: string, source: string) =>
|
||||
invoke<RepoSummary[]>("search_models", { query, source }),
|
||||
listModelFiles: (repoId: string, source: string) =>
|
||||
invoke<ModelFile[]>("list_model_files", { repoId, source }),
|
||||
settingsGet: () => invoke<Record<string, string>>("settings_get"),
|
||||
settingsSet: (key: string, value: string) =>
|
||||
invoke<void>("settings_set", { key, value }),
|
||||
@@ -125,11 +151,19 @@ export const api = {
|
||||
engineStop: () => invoke<void>("engine_stop"),
|
||||
engineStatus: () => invoke<EngineStatus>("engine_status"),
|
||||
chatSend: (payload: ChatSendPayload) => invoke<string>("chat_send", { payload }),
|
||||
downloadEnqueue: (url: string, fileName: string, sha256?: string) =>
|
||||
downloadEnqueue: (
|
||||
url: string,
|
||||
fileName: string,
|
||||
sha256?: string,
|
||||
repoId?: string,
|
||||
source?: string,
|
||||
) =>
|
||||
invoke<string>("download_enqueue", {
|
||||
url,
|
||||
fileName,
|
||||
sha256: sha256 ?? null,
|
||||
repoId: repoId ?? null,
|
||||
source: source ?? null,
|
||||
}),
|
||||
serverStart: (port: number, apiKey: string) =>
|
||||
invoke<ServerStatus>("server_start", { port, apiKey }),
|
||||
@@ -141,4 +175,3 @@ export const api = {
|
||||
export function onEvent<T>(channel: string, handler: (payload: T) => void) {
|
||||
return listen<T>(channel, (event) => handler(event.payload));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user