From 74d8206afeae02bc4ea8463c0d952291646fc406 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Mon, 28 Sep 2026 15:36:23 +0200 Subject: [PATCH] ui : add the providers data layer A provider is a server entry with a base url, an optional key, a protocol and the paths its API lives at; the local llama.cpp server is the built-in one. Backends persist in settings and the active one is restored on load. Requests resolve against the active backend, model ids become backend-qualified, and every backend's model list is fetched and cached in the background. The manager's helpers learn to read a model's drafts, context and the provider that serves it. Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash --- tools/ui/src/app.d.ts | 2 + .../lib/components/app/models/ModelId.svelte | 18 + .../ModelsManagerModelsTable.svelte | 2 +- .../app/models/ModelsManager/utils.ts | 396 +++++++++++++++++- .../ui/src/lib/constants/backend.constants.ts | 66 ++- .../lib/constants/settings-keys.constants.ts | 2 + .../ui/src/lib/constants/storage.constants.ts | 9 + .../ui/src/lib/constants/stream.constants.ts | 4 + tools/ui/src/lib/services/backends.service.ts | 188 +++++++++ tools/ui/src/lib/services/index.ts | 8 + tools/ui/src/lib/stores/backends.svelte.ts | 113 +++++ .../src/lib/stores/backendsModels.svelte.ts | 103 +++++ tools/ui/src/lib/types/api.d.ts | 13 + tools/ui/src/lib/types/backend.d.ts | 98 +++++ tools/ui/src/lib/types/chat.d.ts | 2 +- tools/ui/src/lib/types/index.ts | 10 + tools/ui/src/lib/types/models.d.ts | 34 +- tools/ui/src/lib/utils/api-base.ts | 99 +++++ tools/ui/src/lib/utils/api-fetch.ts | 15 +- tools/ui/src/lib/utils/api-headers.ts | 30 +- tools/ui/src/lib/utils/api-key-validation.ts | 12 +- tools/ui/src/lib/utils/backend.ts | 243 +++++++++++ tools/ui/src/lib/utils/cors-proxy.ts | 4 +- tools/ui/src/lib/utils/index.ts | 30 +- tools/ui/src/lib/utils/model-option-id.ts | 28 ++ tools/ui/src/lib/utils/timings.ts | 66 +++ 26 files changed, 1543 insertions(+), 52 deletions(-) create mode 100644 tools/ui/src/lib/services/backends.service.ts create mode 100644 tools/ui/src/lib/stores/backends.svelte.ts create mode 100644 tools/ui/src/lib/stores/backendsModels.svelte.ts create mode 100644 tools/ui/src/lib/types/backend.d.ts create mode 100644 tools/ui/src/lib/utils/api-base.ts create mode 100644 tools/ui/src/lib/utils/backend.ts create mode 100644 tools/ui/src/lib/utils/model-option-id.ts create mode 100644 tools/ui/src/lib/utils/timings.ts diff --git a/tools/ui/src/app.d.ts b/tools/ui/src/app.d.ts index 5c039063ad..c3d210c9e6 100644 --- a/tools/ui/src/app.d.ts +++ b/tools/ui/src/app.d.ts @@ -12,6 +12,7 @@ import type { ApiChatCompletionStreamChunk, ApiChatCompletionToolCall, ApiChatCompletionToolCallDelta, + ApiChatCompletionUsage, ApiChatMessageContentPart, ApiChatMessageData, ApiContextSizeError, @@ -74,6 +75,7 @@ declare global { ApiChatCompletionResponse, ApiChatCompletionStreamChunk, ApiChatCompletionToolCall, + ApiChatCompletionUsage, ApiChatCompletionToolCallDelta, ApiChatMessageData, ApiChatMessageContentPart, diff --git a/tools/ui/src/lib/components/app/models/ModelId.svelte b/tools/ui/src/lib/components/app/models/ModelId.svelte index 27f8fbb5c5..e9630fad86 100644 --- a/tools/ui/src/lib/components/app/models/ModelId.svelte +++ b/tools/ui/src/lib/components/app/models/ModelId.svelte @@ -1,6 +1,7 @@