From 81b7cdfed7cc129962dc686edc8b5568312e2186 Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Sun, 21 Apr 2024 11:41:18 +0100 Subject: [PATCH 1/2] fix: add typescript types for models --- src/lib/stores/index.ts | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index fc58db6bd..038c34195 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -1,5 +1,5 @@ import { APP_NAME } from '$lib/constants'; -import { writable } from 'svelte/store'; +import { type Writable, writable } from 'svelte/store'; // Backend export const WEBUI_NAME = writable(APP_NAME); @@ -14,7 +14,7 @@ export const chatId = writable(''); export const chats = writable([]); export const tags = writable([]); -export const models = writable([]); +export const models: Writable = writable([]); export const modelfiles = writable([]); export const prompts = writable([]); @@ -36,3 +36,34 @@ export const documents = writable([ export const settings = writable({}); export const showSettings = writable(false); export const showChangelog = writable(false); + +type Model = OpenAIModel | OllamaModel; + +type OpenAIModel = { + id: string; + name: string; + external: boolean; + source?: string; +} + +type OllamaModel = { + id: string; + name: string; + + // Ollama specific fields + details: OllamaModelDetails; + size: number; + description: string; + model: string; + modified_at: string; + digest: string; +} + +type OllamaModelDetails = { + parent_model: string; + format: string; + family: string; + families: string[] | null; + parameter_size: string; + quantization_level: string; +}; From ed13da8aba4cb767a7afc7b6036461f48a382e9a Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Mon, 22 Apr 2024 18:15:07 +0100 Subject: [PATCH 2/2] feat: add types to some frontend stores --- src/lib/stores/index.ts | 96 +++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 12 deletions(-) diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index 038c34195..1d1826e3f 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -3,8 +3,8 @@ import { type Writable, writable } from 'svelte/store'; // Backend export const WEBUI_NAME = writable(APP_NAME); -export const config = writable(undefined); -export const user = writable(undefined); +export const config: Writable = writable(undefined); +export const user: Writable = writable(undefined); // Frontend export const MODEL_DOWNLOAD_POOL = writable({}); @@ -17,7 +17,7 @@ export const tags = writable([]); export const models: Writable = writable([]); export const modelfiles = writable([]); -export const prompts = writable([]); +export const prompts: Writable = writable([]); export const documents = writable([ { collection_name: 'collection_name', @@ -33,7 +33,7 @@ export const documents = writable([ } ]); -export const settings = writable({}); +export const settings: Writable = writable({}); export const showSettings = writable(false); export const showChangelog = writable(false); @@ -44,7 +44,7 @@ type OpenAIModel = { name: string; external: boolean; source?: string; -} +}; type OllamaModel = { id: string; @@ -57,13 +57,85 @@ type OllamaModel = { model: string; modified_at: string; digest: string; -} +}; type OllamaModelDetails = { - parent_model: string; - format: string; - family: string; - families: string[] | null; - parameter_size: string; - quantization_level: string; + parent_model: string; + format: string; + family: string; + families: string[] | null; + parameter_size: string; + quantization_level: string; +}; + +type Settings = { + models?: string[]; + conversationMode?: boolean; + speechAutoSend?: boolean; + responseAutoPlayback?: boolean; + audio?: AudioSettings; + showUsername?: boolean; + saveChatHistory?: boolean; + notificationEnabled?: boolean; + title?: TitleSettings; + + system?: string; + requestFormat?: string; + keepAlive?: string; + seed?: number; + temperature?: string; + repeat_penalty?: string; + top_k?: string; + top_p?: string; + num_ctx?: string; + options?: ModelOptions; +}; + +type ModelOptions = { + stop?: boolean; +}; + +type AudioSettings = { + STTEngine?: string; + TTSEngine?: string; + speaker?: string; +}; + +type TitleSettings = { + auto?: boolean; + model?: string; + modelExternal?: string; + prompt?: string; +}; + +type Prompt = { + command: string; + user_id: string; + title: string; + content: string; + timestamp: number; +}; + +type Config = { + status?: boolean; + name?: string; + version?: string; + default_locale?: string; + images?: boolean; + default_models?: string[]; + default_prompt_suggestions?: PromptSuggestion[]; + trusted_header_auth?: boolean; +}; + +type PromptSuggestion = { + content: string; + title: [string, string]; +}; + +type SessionUser = { + id: string; + email: string; + name: string; + role: string; + profile_image_url: string; };