From eb9d0cfb916c60d0a8a4479fc548be8ed3b3aa24 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 | 17 ++ .../app/models/ModelsManager/utils.ts | 194 +++++++++++++- .../ui/src/lib/constants/backend.constants.ts | 66 ++++- .../lib/constants/settings-keys.constants.ts | 2 + .../ui/src/lib/constants/storage.constants.ts | 6 + .../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 +++++ 25 files changed, 1342 insertions(+), 45 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 cc9ccdcc4f..a92842dce9 100644 --- a/tools/ui/src/lib/components/app/models/ModelId.svelte +++ b/tools/ui/src/lib/components/app/models/ModelId.svelte @@ -1,5 +1,6 @@