diff --git a/tools/server/public/index.html.gz b/tools/server/public/index.html.gz index 8e3d997f09..508a4e7c7e 100644 Binary files a/tools/server/public/index.html.gz and b/tools/server/public/index.html.gz differ diff --git a/tools/server/webui/docs/flows/data-flow-simplified-router-mode.md b/tools/server/webui/docs/flows/data-flow-simplified-router-mode.md index f5c4f05edf..bccacf5684 100644 --- a/tools/server/webui/docs/flows/data-flow-simplified-router-mode.md +++ b/tools/server/webui/docs/flows/data-flow-simplified-router-mode.md @@ -15,7 +15,7 @@ sequenceDiagram Stores->>DB: load conversations Stores->>API: GET /props API-->>Stores: {role: "router"} - Stores->>API: GET /models + Stores->>API: GET /v1/models API-->>Stores: models[] with status (loaded/available) loop each loaded model Stores->>API: GET /props?model=X @@ -28,7 +28,7 @@ sequenceDiagram alt model not loaded Stores->>API: POST /models/load loop poll status - Stores->>API: GET /models + Stores->>API: GET /v1/models API-->>Stores: check if loaded end Stores->>API: GET /props?model=X diff --git a/tools/server/webui/docs/flows/models-flow.md b/tools/server/webui/docs/flows/models-flow.md index ce63da1b36..c3031b7292 100644 --- a/tools/server/webui/docs/flows/models-flow.md +++ b/tools/server/webui/docs/flows/models-flow.md @@ -56,7 +56,7 @@ sequenceDiagram UI->>modelsStore: fetchRouterModels() activate modelsStore modelsStore->>ModelsSvc: listRouter() - ModelsSvc->>API: GET /models + ModelsSvc->>API: GET /v1/models API-->>ModelsSvc: ApiRouterModelsListResponse Note right of API: {data: [{id, status, path, in_cache}]} modelsStore->>modelsStore: routerModels = $state(data) @@ -132,7 +132,7 @@ sequenceDiagram loop poll every 500ms (max 60 attempts) modelsStore->>modelsStore: fetchRouterModels() modelsStore->>ModelsSvc: listRouter() - ModelsSvc->>API: GET /models + ModelsSvc->>API: GET /v1/models API-->>ModelsSvc: models[] modelsStore->>modelsStore: getModelStatus(modelId) alt status === LOADED @@ -165,7 +165,7 @@ sequenceDiagram modelsStore->>modelsStore: pollForModelStatus(modelId, UNLOADED) loop poll until unloaded modelsStore->>ModelsSvc: listRouter() - ModelsSvc->>API: GET /models + ModelsSvc->>API: GET /v1/models end modelsStore->>modelsStore: modelLoadingStates.set(modelId, false) diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte index 6024f66c8b..f307f829bc 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte @@ -1,6 +1,5 @@ @@ -70,8 +55,8 @@ Loading model information... - {:else if modelsData && modelsData.data.length > 0} - {@const modelMeta = modelsData.data[0].meta} + {:else if firstModel} + {@const modelMeta = firstModel.meta} {#if serverProps} diff --git a/tools/server/webui/src/lib/services/chat.ts b/tools/server/webui/src/lib/services/chat.ts index 70b18c8a00..a6a6812403 100644 --- a/tools/server/webui/src/lib/services/chat.ts +++ b/tools/server/webui/src/lib/services/chat.ts @@ -677,48 +677,6 @@ export class ChatService { // Utilities // ───────────────────────────────────────────────────────────────────────────── - /** - * Get server properties - static method for API compatibility (to be refactored) - */ - static async getServerProps(): Promise { - try { - const response = await fetch(`./props`, { - headers: getJsonHeaders() - }); - - if (!response.ok) { - throw new Error(`Failed to fetch server props: ${response.status}`); - } - - const data = await response.json(); - return data; - } catch (error) { - console.error('Error fetching server props:', error); - throw error; - } - } - - /** - * Get model information from /models endpoint (to be refactored) - */ - static async getModels(): Promise { - try { - const response = await fetch(`./models`, { - headers: getJsonHeaders() - }); - - if (!response.ok) { - throw new Error(`Failed to fetch models: ${response.status} ${response.statusText}`); - } - - const data = await response.json(); - return data; - } catch (error) { - console.error('Error fetching models:', error); - throw error; - } - } - /** * Injects a system message at the beginning of the conversation if provided. * Checks for existing system messages to avoid duplication. diff --git a/tools/server/webui/src/lib/services/models.ts b/tools/server/webui/src/lib/services/models.ts index f031bd7497..eecb7fa262 100644 --- a/tools/server/webui/src/lib/services/models.ts +++ b/tools/server/webui/src/lib/services/models.ts @@ -7,7 +7,7 @@ import { getJsonHeaders } from '$lib/utils'; * * This service handles communication with model-related endpoints: * - `/v1/models` - OpenAI-compatible model list (MODEL + ROUTER mode) - * - `/models` - Router-specific model management (ROUTER mode only) + * - `/models/load`, `/models/unload` - Router-specific model management (ROUTER mode only) * * **Responsibilities:** * - List available models @@ -43,7 +43,7 @@ export class ModelsService { * Returns models with load status, paths, and other metadata */ static async listRouter(): Promise { - const response = await fetch(`${base}/models`, { + const response = await fetch(`${base}/v1/models`, { headers: getJsonHeaders() }); diff --git a/tools/server/webui/src/lib/stores/conversations.svelte.ts b/tools/server/webui/src/lib/stores/conversations.svelte.ts index 44ef36d6ee..f766561971 100644 --- a/tools/server/webui/src/lib/stores/conversations.svelte.ts +++ b/tools/server/webui/src/lib/stores/conversations.svelte.ts @@ -519,6 +519,19 @@ class ConversationsStore { return await DatabaseService.getConversationMessages(convId); } + /** + * Imports conversations from provided data (without file picker) + * @param data - Array of conversation data with messages + * @returns Import result with counts + */ + async importConversationsData( + data: ExportedConversations + ): Promise<{ imported: number; skipped: number }> { + const result = await DatabaseService.importConversations(data); + await this.loadConversations(); + return result; + } + /** * Adds a message to the active messages array * Used by chatStore when creating new messages diff --git a/tools/server/webui/src/lib/stores/settings.svelte.ts b/tools/server/webui/src/lib/stores/settings.svelte.ts index 5140995eea..2b7d8db102 100644 --- a/tools/server/webui/src/lib/stores/settings.svelte.ts +++ b/tools/server/webui/src/lib/stores/settings.svelte.ts @@ -370,6 +370,10 @@ class SettingsStore { return { ...this.config }; } + canSyncParameter(key: string): boolean { + return ParameterSyncService.canSyncParameter(key); + } + /** * Get parameter information including source for a specific parameter */