Spaces:
Running
Running
import { APP_NAME } from '$lib/constants'; | |
import { type Writable, writable } from 'svelte/store'; | |
import type { GlobalModelConfig, ModelConfig } from '$lib/apis'; | |
import type { Banner } from '$lib/types'; | |
import type { Socket } from 'socket.io-client'; | |
// Backend | |
export const WEBUI_NAME = writable(APP_NAME); | |
export const config: Writable<Config | undefined> = writable(undefined); | |
export const user: Writable<SessionUser | undefined> = writable(undefined); | |
// Frontend | |
export const MODEL_DOWNLOAD_POOL = writable({}); | |
export const mobile = writable(false); | |
export const socket: Writable<null | Socket> = writable(null); | |
export const activeUserCount: Writable<null | number> = writable(null); | |
export const USAGE_POOL: Writable<null | string[]> = writable(null); | |
export const theme = writable('system'); | |
export const chatId = writable(''); | |
export const chatTitle = writable(''); | |
export const chats = writable([]); | |
export const pinnedChats = writable([]); | |
export const tags = writable([]); | |
export const models: Writable<Model[]> = writable([]); | |
export const prompts: Writable<null | Prompt[]> = writable(null); | |
export const knowledge: Writable<null | Document[]> = writable(null); | |
export const tools = writable(null); | |
export const functions = writable(null); | |
export const banners: Writable<Banner[]> = writable([]); | |
export const settings: Writable<Settings> = writable({}); | |
export const showSidebar = writable(false); | |
export const showSettings = writable(false); | |
export const showArchivedChats = writable(false); | |
export const showChangelog = writable(false); | |
export const showControls = writable(false); | |
export const showOverview = writable(false); | |
export const showArtifacts = writable(false); | |
export const showCallOverlay = writable(false); | |
export const temporaryChatEnabled = writable(false); | |
export const scrollPaginationEnabled = writable(false); | |
export const currentChatPage = writable(1); | |
export type Model = OpenAIModel | OllamaModel; | |
type BaseModel = { | |
id: string; | |
name: string; | |
info?: ModelConfig; | |
owned_by: 'ollama' | 'openai' | 'arena'; | |
}; | |
export interface OpenAIModel extends BaseModel { | |
owned_by: 'openai'; | |
external: boolean; | |
source?: string; | |
} | |
export interface OllamaModel extends BaseModel { | |
owned_by: 'ollama'; | |
details: OllamaModelDetails; | |
size: number; | |
description: string; | |
model: string; | |
modified_at: string; | |
digest: string; | |
ollama?: { | |
name?: string; | |
model?: string; | |
modified_at: string; | |
size?: number; | |
digest?: string; | |
details?: { | |
parent_model?: string; | |
format?: string; | |
family?: string; | |
families?: string[]; | |
parameter_size?: string; | |
quantization_level?: string; | |
}; | |
urls?: number[]; | |
}; | |
} | |
type OllamaModelDetails = { | |
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; | |
notificationEnabled?: boolean; | |
title?: TitleSettings; | |
splitLargeDeltas?: boolean; | |
chatDirection: 'LTR' | 'RTL'; | |
system?: string; | |
requestFormat?: string; | |
keepAlive?: string; | |
seed?: number; | |
temperature?: string; | |
repeat_penalty?: string; | |
top_k?: string; | |
top_p?: string; | |
num_ctx?: string; | |
num_batch?: string; | |
num_keep?: string; | |
options?: ModelOptions; | |
}; | |
type ModelOptions = { | |
stop?: boolean; | |
}; | |
type AudioSettings = { | |
STTEngine?: string; | |
TTSEngine?: string; | |
speaker?: string; | |
model?: string; | |
nonLocalVoices?: boolean; | |
}; | |
type TitleSettings = { | |
auto?: boolean; | |
model?: string; | |
modelExternal?: string; | |
prompt?: string; | |
}; | |
type Prompt = { | |
command: string; | |
user_id: string; | |
title: string; | |
content: string; | |
timestamp: number; | |
}; | |
type Document = { | |
collection_name: string; | |
filename: string; | |
name: string; | |
title: string; | |
}; | |
type Config = { | |
status: boolean; | |
name: string; | |
version: string; | |
default_locale: string; | |
default_models: string; | |
default_prompt_suggestions: PromptSuggestion[]; | |
features: { | |
auth: boolean; | |
auth_trusted_header: boolean; | |
enable_api_key: boolean; | |
enable_signup: boolean; | |
enable_login_form: boolean; | |
enable_web_search?: boolean; | |
enable_image_generation: boolean; | |
enable_admin_export: boolean; | |
enable_admin_chat_access: boolean; | |
enable_community_sharing: boolean; | |
}; | |
oauth: { | |
providers: { | |
[key: string]: string; | |
}; | |
}; | |
}; | |
type PromptSuggestion = { | |
content: string; | |
title: [string, string]; | |
}; | |
type SessionUser = { | |
id: string; | |
email: string; | |
name: string; | |
role: string; | |
profile_image_url: string; | |
}; | |