libre-webui 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -46
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +21 -19
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +26 -908
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/middleware/auth.d.ts.map +1 -1
- package/backend/dist/middleware/auth.js +4 -2
- package/backend/dist/middleware/auth.js.map +1 -1
- package/backend/dist/middleware/index.d.ts.map +1 -1
- package/backend/dist/middleware/index.js +4 -2
- package/backend/dist/middleware/index.js.map +1 -1
- package/backend/dist/models/personaModel.d.ts.map +1 -1
- package/backend/dist/models/personaModel.js +11 -9
- package/backend/dist/models/personaModel.js.map +1 -1
- package/backend/dist/routes/auth.d.ts.map +1 -1
- package/backend/dist/routes/auth.js +36 -14
- package/backend/dist/routes/auth.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +61 -249
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/documents.d.ts.map +1 -1
- package/backend/dist/routes/documents.js +10 -8
- package/backend/dist/routes/documents.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +9 -7
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/ollama.d.ts.map +1 -1
- package/backend/dist/routes/ollama.js +7 -247
- package/backend/dist/routes/ollama.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +7 -105
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/tts.d.ts.map +1 -1
- package/backend/dist/routes/tts.js +7 -5
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/users.d.ts.map +1 -1
- package/backend/dist/routes/users.js +7 -5
- package/backend/dist/routes/users.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +26 -0
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -0
- package/backend/dist/services/assistantCompletionService.js +53 -0
- package/backend/dist/services/assistantCompletionService.js.map +1 -0
- package/backend/dist/services/authService.d.ts +2 -0
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +9 -5
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +32 -0
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -0
- package/backend/dist/services/chatGenerationService.js +118 -0
- package/backend/dist/services/chatGenerationService.js.map +1 -0
- package/backend/dist/services/chatRequestService.d.ts +55 -0
- package/backend/dist/services/chatRequestService.d.ts.map +1 -0
- package/backend/dist/services/chatRequestService.js +103 -0
- package/backend/dist/services/chatRequestService.js.map +1 -0
- package/backend/dist/services/chatService.d.ts +0 -1
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +13 -27
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +21 -19
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/embeddingService.d.ts.map +1 -1
- package/backend/dist/services/embeddingService.js +3 -1
- package/backend/dist/services/embeddingService.js.map +1 -1
- package/backend/dist/services/encryptionService.d.ts.map +1 -1
- package/backend/dist/services/encryptionService.js +26 -24
- package/backend/dist/services/encryptionService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +8 -6
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/memoryService.d.ts +2 -13
- package/backend/dist/services/memoryService.d.ts.map +1 -1
- package/backend/dist/services/memoryService.js +37 -198
- package/backend/dist/services/memoryService.js.map +1 -1
- package/backend/dist/services/memoryUtils.d.ts +29 -0
- package/backend/dist/services/memoryUtils.d.ts.map +1 -0
- package/backend/dist/services/memoryUtils.js +165 -0
- package/backend/dist/services/memoryUtils.js.map +1 -0
- package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
- package/backend/dist/services/mutationEngineService.js +3 -1
- package/backend/dist/services/mutationEngineService.js.map +1 -1
- package/backend/dist/services/ollamaService.d.ts.map +1 -1
- package/backend/dist/services/ollamaService.js +36 -34
- package/backend/dist/services/ollamaService.js.map +1 -1
- package/backend/dist/services/personaService.d.ts.map +1 -1
- package/backend/dist/services/personaService.js +3 -1
- package/backend/dist/services/personaService.js.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts +11 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.js +70 -0
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -0
- package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
- package/backend/dist/services/pluginCredentialsService.js +13 -11
- package/backend/dist/services/pluginCredentialsService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +26 -0
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -0
- package/backend/dist/services/pluginEmbeddingService.js +159 -0
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -0
- package/backend/dist/services/pluginImageGenerationService.d.ts +29 -0
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -0
- package/backend/dist/services/pluginImageGenerationService.js +402 -0
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -0
- package/backend/dist/services/pluginService.d.ts +9 -18
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +120 -1469
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +28 -0
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -0
- package/backend/dist/services/pluginTTSService.js +286 -0
- package/backend/dist/services/pluginTTSService.js.map +1 -0
- package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
- package/backend/dist/services/pluginVariablesService.js +7 -5
- package/backend/dist/services/pluginVariablesService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +9 -7
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleGitHubOAuth.js +10 -8
- package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.js +11 -9
- package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
- package/backend/dist/services/systemSettingsService.d.ts.map +1 -1
- package/backend/dist/services/systemSettingsService.js +4 -2
- package/backend/dist/services/systemSettingsService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts +55 -0
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -0
- package/backend/dist/services/titleGenerationService.js +121 -0
- package/backend/dist/services/titleGenerationService.js.map +1 -0
- package/backend/dist/services/turnstileService.d.ts +13 -0
- package/backend/dist/services/turnstileService.d.ts.map +1 -0
- package/backend/dist/services/turnstileService.js +79 -0
- package/backend/dist/services/turnstileService.js.map +1 -0
- package/backend/dist/storage.d.ts +2 -22
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +22 -170
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/storageMappers.d.ts +82 -0
- package/backend/dist/storageMappers.d.ts.map +1 -0
- package/backend/dist/storageMappers.js +85 -0
- package/backend/dist/storageMappers.js.map +1 -0
- package/backend/dist/test-encryption.js +20 -18
- package/backend/dist/test-encryption.js.map +1 -1
- package/backend/dist/utils/assistantBranching.d.ts +8 -0
- package/backend/dist/utils/assistantBranching.d.ts.map +1 -0
- package/backend/dist/utils/assistantBranching.js +30 -0
- package/backend/dist/utils/assistantBranching.js.map +1 -0
- package/backend/dist/utils/chatContext.d.ts +17 -0
- package/backend/dist/utils/chatContext.d.ts.map +1 -0
- package/backend/dist/utils/chatContext.js +82 -0
- package/backend/dist/utils/chatContext.js.map +1 -0
- package/backend/dist/utils/chatDocumentContext.d.ts +7 -0
- package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -0
- package/backend/dist/utils/chatDocumentContext.js +51 -0
- package/backend/dist/utils/chatDocumentContext.js.map +1 -0
- package/backend/dist/utils/logger.d.ts +12 -0
- package/backend/dist/utils/logger.d.ts.map +1 -0
- package/backend/dist/utils/logger.js +82 -0
- package/backend/dist/utils/logger.js.map +1 -0
- package/backend/dist/utils/ollamaLibrary.d.ts +17 -0
- package/backend/dist/utils/ollamaLibrary.d.ts.map +1 -0
- package/backend/dist/utils/ollamaLibrary.js +253 -0
- package/backend/dist/utils/ollamaLibrary.js.map +1 -0
- package/backend/dist/utils/ollamaStreaming.d.ts +19 -0
- package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -0
- package/backend/dist/utils/ollamaStreaming.js +67 -0
- package/backend/dist/utils/ollamaStreaming.js.map +1 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts +32 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -0
- package/backend/dist/utils/pluginChatAdapter.js +308 -0
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -0
- package/backend/dist/utils/pluginChatContext.d.ts +23 -0
- package/backend/dist/utils/pluginChatContext.d.ts.map +1 -0
- package/backend/dist/utils/pluginChatContext.js +77 -0
- package/backend/dist/utils/pluginChatContext.js.map +1 -0
- package/backend/dist/utils/pluginResponse.d.ts +6 -0
- package/backend/dist/utils/pluginResponse.d.ts.map +1 -0
- package/backend/dist/utils/pluginResponse.js +70 -0
- package/backend/dist/utils/pluginResponse.js.map +1 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts +16 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -0
- package/backend/dist/utils/pluginStreamAdapter.js +141 -0
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -0
- package/backend/dist/utils/pluginStreaming.d.ts +24 -0
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -0
- package/backend/dist/utils/pluginStreaming.js +106 -0
- package/backend/dist/utils/pluginStreaming.js.map +1 -0
- package/backend/dist/utils/pluginUpload.d.ts +8 -0
- package/backend/dist/utils/pluginUpload.d.ts.map +1 -0
- package/backend/dist/utils/pluginUpload.js +51 -0
- package/backend/dist/utils/pluginUpload.js.map +1 -0
- package/backend/dist/utils/pluginValidation.d.ts +10 -0
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -0
- package/backend/dist/utils/pluginValidation.js +94 -0
- package/backend/dist/utils/pluginValidation.js.map +1 -0
- package/backend/dist/utils/pluginVariableValidation.d.ts +10 -0
- package/backend/dist/utils/pluginVariableValidation.d.ts.map +1 -0
- package/backend/dist/utils/pluginVariableValidation.js +80 -0
- package/backend/dist/utils/pluginVariableValidation.js.map +1 -0
- package/backend/dist/utils/websocketMessages.d.ts +26 -0
- package/backend/dist/utils/websocketMessages.d.ts.map +1 -0
- package/backend/dist/utils/websocketMessages.js +74 -0
- package/backend/dist/utils/websocketMessages.js.map +1 -0
- package/backend/dist/websocketServer.d.ts +3 -0
- package/backend/dist/websocketServer.d.ts.map +1 -0
- package/backend/dist/websocketServer.js +332 -0
- package/backend/dist/websocketServer.js.map +1 -0
- package/backend/package.json +2 -2
- package/frontend/dist/assets/index-BxHDVIti.css +1 -0
- package/frontend/dist/assets/index-CDA2f43l.js +5 -0
- package/frontend/dist/assets/markdown-math-CYlHEDRF.css +1 -0
- package/frontend/dist/index.html +11 -10
- package/frontend/dist/js/ArtifactContainer-CA523BOS.js +1 -0
- package/frontend/dist/js/ArtifactDemoPage-C0p2-ccP.js +200 -0
- package/frontend/dist/js/ArtifactSlideOutPanel-BBYuYyr_.js +1 -0
- package/frontend/dist/js/Button-BmZQkAPD.js +1 -0
- package/frontend/dist/js/ChatPage-QSOhIynr.js +16 -0
- package/frontend/dist/js/FirstTimeSetup-pi-S4VU-.js +1 -0
- package/frontend/dist/js/GalleryPage-BPXB-D4f.js +1 -0
- package/frontend/dist/js/ModelManagerModals-D3SZV7CU.js +1 -0
- package/frontend/dist/js/ModelsPage-Fmqc1Zxb.js +2 -0
- package/frontend/dist/js/OptimizedSyntaxHighlighter-DlI4omE2.js +1 -0
- package/frontend/dist/js/PersonasPage-BuLOCG1Y.js +13 -0
- package/frontend/dist/js/RichMessageContent-Darvuw8F.js +3 -0
- package/frontend/dist/js/SettingsModal-CQhAeaia.js +1 -0
- package/frontend/dist/js/UserManagementPage-yX9vOase.js +1 -0
- package/frontend/dist/js/api-d05r9G59.js +15 -0
- package/frontend/dist/js/ar-BIL8U_dv.js +2 -0
- package/frontend/dist/js/artifactHtml-CRdkOCnz.js +27 -0
- package/frontend/dist/js/bn-BWQoWPn6.js +2 -0
- package/frontend/dist/js/cs-DOD1vscE.js +2 -0
- package/frontend/dist/js/da-DYPzSzX4.js +2 -0
- package/frontend/dist/js/de-CHd4b2Xf.js +2 -0
- package/frontend/dist/js/demoMode-BhEpMVh5.js +1 -0
- package/frontend/dist/js/es-BmDO6uNe.js +2 -0
- package/frontend/dist/js/fr-DW24sUV7.js +2 -0
- package/frontend/dist/js/hi-BRDq_y1B.js +2 -0
- package/frontend/dist/js/id-I_F2nstV.js +2 -0
- package/frontend/dist/js/is-Boj7-J12.js +2 -0
- package/frontend/dist/js/it-CNeHl9Fh.js +2 -0
- package/frontend/dist/js/ja-DrVG6G8s.js +2 -0
- package/frontend/dist/js/ko-BtKRwlHW.js +2 -0
- package/frontend/dist/js/logger-1THq8-96.js +1 -0
- package/frontend/dist/js/markdown-core-CEpaJrKd.js +16 -0
- package/frontend/dist/js/markdown-math-DAmpvM9y.js +261 -0
- package/frontend/dist/js/ms-Dp9MigoU.js +2 -0
- package/frontend/dist/js/nl-Bk9pGoCF.js +2 -0
- package/frontend/dist/js/pl-seE8_lLS.js +2 -0
- package/frontend/dist/js/pt-BAeBtldI.js +2 -0
- package/frontend/dist/js/{react-vendor-Dh6nfvM2.js → react-vendor-DtQrJICq.js} +1 -1
- package/frontend/dist/js/ru-CkCpWFNb.js +2 -0
- package/frontend/dist/js/sv-BM7nqxmA.js +2 -0
- package/frontend/dist/js/syntax-highlight-B758xPeo.js +8 -0
- package/frontend/dist/js/th-vDIZbpa4.js +2 -0
- package/frontend/dist/js/tr-G2-XodhW.js +2 -0
- package/frontend/dist/js/ui-vendor-MCs1MDmN.js +177 -0
- package/frontend/dist/js/uk-DfVfZcBQ.js +2 -0
- package/frontend/dist/js/useBaseQuery-CrdrLcmR.js +1 -0
- package/frontend/dist/js/useQuery-DaEnYfWR.js +1 -0
- package/frontend/dist/js/utils-es0n-47H.js +1 -0
- package/frontend/dist/js/utils-vendor-B2ZBL57Y.js +9 -0
- package/frontend/dist/js/vi-Yp9yjb06.js +2 -0
- package/frontend/dist/js/zh-DtRb97we.js +2 -0
- package/package.json +12 -8
- package/plugins/openclaw-agent.json +1 -1
- package/backend/dist/services/openclawSessionService.d.ts +0 -63
- package/backend/dist/services/openclawSessionService.d.ts.map +0 -1
- package/backend/dist/services/openclawSessionService.js +0 -307
- package/backend/dist/services/openclawSessionService.js.map +0 -1
- package/frontend/dist/assets/index-cOuIFv6G.js +0 -314
- package/frontend/dist/assets/index-tuVjvNle.css +0 -1
- package/frontend/dist/js/ArtifactContainer-DXa2t8GS.js +0 -24
- package/frontend/dist/js/ArtifactDemoPage-Dms7P2gI.js +0 -98
- package/frontend/dist/js/ChatPage-C6hOVIAS.js +0 -15
- package/frontend/dist/js/GalleryPage-CGKPECJV.js +0 -1
- package/frontend/dist/js/ModelsPage-CNB-c-JM.js +0 -1
- package/frontend/dist/js/PersonasPage-hDiS0Rvl.js +0 -13
- package/frontend/dist/js/UserManagementPage-1H9kcHeR.js +0 -1
- package/frontend/dist/js/api-MQ7bONaU.js +0 -3
- package/frontend/dist/js/appStore-BpzQfKOd.js +0 -2
- package/frontend/dist/js/authStore-Cn_WS6Kb.js +0 -2
- package/frontend/dist/js/demoMode-PKHbba1m.js +0 -1
- package/frontend/dist/js/markdown-vendor-DLzJCMRQ.js +0 -22
- package/frontend/dist/js/ui-vendor-ClcVY3m-.js +0 -177
- package/frontend/dist/js/utils-vendor-BCQRX-0Q.js +0 -9
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { encryptionService } from './services/encryptionService.js';
|
|
18
|
+
function decryptJson(value) {
|
|
19
|
+
return value
|
|
20
|
+
? JSON.parse(encryptionService.decrypt(value))
|
|
21
|
+
: undefined;
|
|
22
|
+
}
|
|
23
|
+
export function buildSiblingCountMap(siblingCounts) {
|
|
24
|
+
const siblingCountMap = new Map();
|
|
25
|
+
for (const siblingCount of siblingCounts) {
|
|
26
|
+
siblingCountMap.set(siblingCount.parent_id, siblingCount.count + 1);
|
|
27
|
+
}
|
|
28
|
+
return siblingCountMap;
|
|
29
|
+
}
|
|
30
|
+
export function mapMessageRow(row, siblingCountMap) {
|
|
31
|
+
const parentId = row.parent_id || row.id;
|
|
32
|
+
const siblingCount = siblingCountMap.get(parentId) || 1;
|
|
33
|
+
return {
|
|
34
|
+
id: row.id,
|
|
35
|
+
role: row.role,
|
|
36
|
+
content: encryptionService.decrypt(row.content),
|
|
37
|
+
timestamp: row.timestamp,
|
|
38
|
+
model: row.model,
|
|
39
|
+
images: decryptJson(row.images),
|
|
40
|
+
statistics: decryptJson(row.statistics),
|
|
41
|
+
artifacts: decryptJson(row.artifacts),
|
|
42
|
+
parentId: row.parent_id,
|
|
43
|
+
branchIndex: row.branch_index ?? 0,
|
|
44
|
+
isActive: row.is_active !== 0,
|
|
45
|
+
siblingCount: siblingCount > 1 ? siblingCount : undefined,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function mapSessionRow(row, messages, siblingCounts) {
|
|
49
|
+
const siblingCountMap = buildSiblingCountMap(siblingCounts);
|
|
50
|
+
return {
|
|
51
|
+
id: row.id,
|
|
52
|
+
title: encryptionService.decrypt(row.title),
|
|
53
|
+
model: row.model,
|
|
54
|
+
personaId: row.persona_id || undefined,
|
|
55
|
+
createdAt: row.created_at,
|
|
56
|
+
updatedAt: row.updated_at,
|
|
57
|
+
messages: messages.map(message => mapMessageRow(message, siblingCountMap)),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function mapDocumentRow(row) {
|
|
61
|
+
return {
|
|
62
|
+
id: row.id,
|
|
63
|
+
filename: row.filename,
|
|
64
|
+
title: row.title ? encryptionService.decrypt(row.title) : undefined,
|
|
65
|
+
content: row.content ? encryptionService.decrypt(row.content) : undefined,
|
|
66
|
+
fileType: row.file_type,
|
|
67
|
+
size: row.size,
|
|
68
|
+
sessionId: row.session_id,
|
|
69
|
+
uploadedAt: row.uploaded_at,
|
|
70
|
+
createdAt: row.created_at,
|
|
71
|
+
metadata: decryptJson(row.metadata),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function mapDocumentChunkRow(row) {
|
|
75
|
+
return {
|
|
76
|
+
id: row.id,
|
|
77
|
+
documentId: row.document_id,
|
|
78
|
+
content: encryptionService.decrypt(row.content),
|
|
79
|
+
embedding: decryptJson(row.embedding),
|
|
80
|
+
chunkIndex: row.chunk_index,
|
|
81
|
+
startChar: row.start_char,
|
|
82
|
+
endChar: row.end_char,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=storageMappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageMappers.js","sourceRoot":"","sources":["../src/storageMappers.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,50 +15,52 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { encryptionService } from './services/encryptionService.js';
|
|
18
|
+
import { createLogger } from './utils/logger.js';
|
|
19
|
+
const logger = createLogger('encryption-test');
|
|
18
20
|
try {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
logger.info('Testing Database Encryption Service');
|
|
22
|
+
logger.info('=====================================');
|
|
21
23
|
// Test basic encryption/decryption
|
|
22
24
|
const testData = 'Hello, this is sensitive data!';
|
|
23
|
-
|
|
25
|
+
logger.info('Original:', testData);
|
|
24
26
|
const encrypted = encryptionService.encrypt(testData);
|
|
25
|
-
|
|
27
|
+
logger.info('Encrypted:', encrypted);
|
|
26
28
|
const decrypted = encryptionService.decrypt(encrypted);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
logger.info('Decrypted:', decrypted);
|
|
30
|
+
logger.info('Basic encryption test:', testData === decrypted ? 'PASSED' : 'FAILED');
|
|
29
31
|
// Test object encryption
|
|
30
32
|
const testObject = {
|
|
31
33
|
message: 'Secret message',
|
|
32
|
-
artifacts: [{ type: 'code', content: '
|
|
34
|
+
artifacts: [{ type: 'code', content: 'logger.debug("secret");' }],
|
|
33
35
|
images: [
|
|
34
36
|
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==',
|
|
35
37
|
],
|
|
36
38
|
statistics: { tokens: 150, duration: 1200 },
|
|
37
39
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
logger.info('Testing object encryption');
|
|
41
|
+
logger.info('Original object:', JSON.stringify(testObject, null, 2));
|
|
40
42
|
const encryptedObject = encryptionService.encryptObject(testObject);
|
|
41
|
-
|
|
43
|
+
logger.info('Encrypted object:', encryptedObject);
|
|
42
44
|
const decryptedObject = encryptionService.decryptObject(encryptedObject);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
logger.info('Decrypted object:', JSON.stringify(decryptedObject, null, 2));
|
|
46
|
+
logger.info('Object encryption test:', JSON.stringify(testObject) === JSON.stringify(decryptedObject)
|
|
45
47
|
? 'PASSED'
|
|
46
48
|
: 'FAILED');
|
|
47
49
|
// Test empty/null values
|
|
48
|
-
|
|
50
|
+
logger.info('Testing edge cases');
|
|
49
51
|
try {
|
|
50
52
|
const nullTest = encryptionService.encrypt('');
|
|
51
53
|
const nullDecrypted = encryptionService.decrypt(nullTest);
|
|
52
|
-
|
|
54
|
+
logger.info('Empty string test:', nullDecrypted === '' ? 'PASSED' : 'FAILED');
|
|
53
55
|
}
|
|
54
56
|
catch (error) {
|
|
55
|
-
|
|
57
|
+
logger.error('Empty string test failed:', error.message);
|
|
56
58
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
logger.info('Encryption service is ready for production');
|
|
60
|
+
logger.info('All sensitive data will be encrypted before storage in the database.');
|
|
59
61
|
}
|
|
60
62
|
catch (error) {
|
|
61
|
-
|
|
63
|
+
logger.error('Error running encryption tests:', error);
|
|
62
64
|
process.exit(1);
|
|
63
65
|
}
|
|
64
66
|
//# sourceMappingURL=test-encryption.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-encryption.js","sourceRoot":"","sources":["../src/test-encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"test-encryption.js","sourceRoot":"","sources":["../src/test-encryption.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ChatSession } from '../types/index.js';
|
|
2
|
+
export interface AssistantBranchingFields {
|
|
3
|
+
parentId?: string;
|
|
4
|
+
branchIndex?: number;
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildAssistantBranchingFields(session: ChatSession, regenerate?: boolean, originalMessageId?: string): AssistantBranchingFields;
|
|
8
|
+
//# sourceMappingURL=assistantBranching.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistantBranching.d.ts","sourceRoot":"","sources":["../../src/utils/assistantBranching.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,OAAO,EACpB,iBAAiB,CAAC,EAAE,MAAM,GACzB,wBAAwB,CAkB1B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export function buildAssistantBranchingFields(session, regenerate, originalMessageId) {
|
|
18
|
+
if (!regenerate || !originalMessageId) {
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
const originalMsg = session.messages.find(message => message.id === originalMessageId);
|
|
22
|
+
const parentId = originalMsg?.parentId || originalMessageId;
|
|
23
|
+
const siblingCount = session.messages.filter(message => message.id === parentId || message.parentId === parentId).length;
|
|
24
|
+
return {
|
|
25
|
+
parentId,
|
|
26
|
+
branchIndex: siblingCount,
|
|
27
|
+
isActive: true,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=assistantBranching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistantBranching.js","sourceRoot":"","sources":["../../src/utils/assistantBranching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,UAAU,6BAA6B,CAC3C,OAAoB,EACpB,UAAoB,EACpB,iBAA0B;IAE1B,IAAI,CAAC,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CACvC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAC5C,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,iBAAiB,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC1C,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CACpE,CAAC,MAAM,CAAC;IAET,OAAO;QACL,QAAQ;QACR,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChatMessage, OllamaChatMessage } from '../types/index.js';
|
|
2
|
+
export type ChatContextMessage = Pick<ChatMessage, 'role' | 'content' | 'images'>;
|
|
3
|
+
type ContentMessage = {
|
|
4
|
+
role: string;
|
|
5
|
+
content: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function getLatestUserMessageIndex(messages: readonly Pick<ContentMessage, 'role'>[]): number;
|
|
8
|
+
export declare function replaceLatestUserMessageContent<T extends ContentMessage>(messages: readonly T[], content: string): T[];
|
|
9
|
+
export declare function stripDataUrlPrefix(image: string): string;
|
|
10
|
+
export declare function toOllamaMessages(messages: readonly ChatContextMessage[], options?: {
|
|
11
|
+
latestUserContent?: string;
|
|
12
|
+
stripImageDataUrls?: boolean;
|
|
13
|
+
}): OllamaChatMessage[];
|
|
14
|
+
export declare function withSystemPrompt(messages: readonly OllamaChatMessage[], systemPrompt?: string): OllamaChatMessage[];
|
|
15
|
+
export declare function toChatMessages(messages: readonly ChatContextMessage[], idPrefix: string): ChatMessage[];
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=chatContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatContext.d.ts","sourceRoot":"","sources":["../../src/utils/chatContext.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,WAAW,EACX,MAAM,GAAG,SAAS,GAAG,QAAQ,CAC9B,CAAC;AACF,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,GAChD,MAAM,CAQR;AAED,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,cAAc,EACtE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,CAAC,EAAE,CAUL;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzE,iBAAiB,EAAE,CAuBrB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAcrB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,QAAQ,EAAE,MAAM,GACf,WAAW,EAAE,CAUf"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export function getLatestUserMessageIndex(messages) {
|
|
18
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
19
|
+
if (messages[i]?.role === 'user') {
|
|
20
|
+
return i;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return -1;
|
|
24
|
+
}
|
|
25
|
+
export function replaceLatestUserMessageContent(messages, content) {
|
|
26
|
+
const latestUserMessageIndex = getLatestUserMessageIndex(messages);
|
|
27
|
+
if (latestUserMessageIndex === -1) {
|
|
28
|
+
return [...messages];
|
|
29
|
+
}
|
|
30
|
+
return messages.map((message, index) => index === latestUserMessageIndex ? { ...message, content } : message);
|
|
31
|
+
}
|
|
32
|
+
export function stripDataUrlPrefix(image) {
|
|
33
|
+
if (!image.includes(',')) {
|
|
34
|
+
return image;
|
|
35
|
+
}
|
|
36
|
+
const base64Index = image.indexOf(',');
|
|
37
|
+
return base64Index === -1 ? image : image.substring(base64Index + 1);
|
|
38
|
+
}
|
|
39
|
+
export function toOllamaMessages(messages, options = {}) {
|
|
40
|
+
const latestUserMessageIndex = options.latestUserContent
|
|
41
|
+
? getLatestUserMessageIndex(messages)
|
|
42
|
+
: -1;
|
|
43
|
+
return messages.map((message, index) => {
|
|
44
|
+
const ollamaMessage = {
|
|
45
|
+
role: message.role,
|
|
46
|
+
content: index === latestUserMessageIndex && options.latestUserContent
|
|
47
|
+
? options.latestUserContent
|
|
48
|
+
: message.content,
|
|
49
|
+
};
|
|
50
|
+
if (message.images?.length) {
|
|
51
|
+
ollamaMessage.images =
|
|
52
|
+
options.stripImageDataUrls === false
|
|
53
|
+
? [...message.images]
|
|
54
|
+
: message.images.map(stripDataUrlPrefix);
|
|
55
|
+
}
|
|
56
|
+
return ollamaMessage;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export function withSystemPrompt(messages, systemPrompt) {
|
|
60
|
+
const prompt = systemPrompt?.trim();
|
|
61
|
+
if (!prompt) {
|
|
62
|
+
return [...messages];
|
|
63
|
+
}
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
role: 'system',
|
|
67
|
+
content: prompt,
|
|
68
|
+
},
|
|
69
|
+
...messages.filter(message => message.role !== 'system'),
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
export function toChatMessages(messages, idPrefix) {
|
|
73
|
+
const timestamp = Date.now();
|
|
74
|
+
return messages.map((message, index) => ({
|
|
75
|
+
id: `${idPrefix}-${index}`,
|
|
76
|
+
role: message.role,
|
|
77
|
+
content: message.content,
|
|
78
|
+
images: message.images,
|
|
79
|
+
timestamp,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=chatContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatContext.js","sourceRoot":"","sources":["../../src/utils/chatContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ChatDocumentContext {
|
|
2
|
+
documentContext: string;
|
|
3
|
+
enhancedContent: string;
|
|
4
|
+
hasRelevantContext: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function buildChatDocumentContext(message: string, sessionId: string): Promise<ChatDocumentContext>;
|
|
7
|
+
//# sourceMappingURL=chatDocumentContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatDocumentContext.d.ts","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAyC9B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import documentService from '../services/documentService.js';
|
|
18
|
+
import preferencesService from '../services/preferencesService.js';
|
|
19
|
+
export async function buildChatDocumentContext(message, sessionId) {
|
|
20
|
+
let documentContext = '';
|
|
21
|
+
const preferences = preferencesService.getPreferences();
|
|
22
|
+
if (preferences.embeddingSettings?.enabled) {
|
|
23
|
+
const relevantDocuments = await documentService.searchDocuments(message, sessionId);
|
|
24
|
+
if (relevantDocuments.length > 0) {
|
|
25
|
+
const documentsMap = new Map();
|
|
26
|
+
for (const chunk of relevantDocuments) {
|
|
27
|
+
if (!documentsMap.has(chunk.documentId)) {
|
|
28
|
+
documentsMap.set(chunk.documentId, documentService.getDocument(chunk.documentId));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
documentContext =
|
|
32
|
+
'\n\n--- RELEVANT DOCUMENTS ---\n' +
|
|
33
|
+
relevantDocuments
|
|
34
|
+
.map((chunk, index) => {
|
|
35
|
+
const doc = documentsMap.get(chunk.documentId);
|
|
36
|
+
const docTitle = doc ? doc.filename : 'Unknown Document';
|
|
37
|
+
return `Document ${index + 1}: ${docTitle} (chunk ${chunk.chunkIndex + 1})\n${chunk.content}\n`;
|
|
38
|
+
})
|
|
39
|
+
.join('\n---\n') +
|
|
40
|
+
'\n--- END DOCUMENTS ---\n\n';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
documentContext,
|
|
45
|
+
enhancedContent: documentContext
|
|
46
|
+
? `${documentContext}User question: ${message}`
|
|
47
|
+
: message,
|
|
48
|
+
hasRelevantContext: Boolean(documentContext),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=chatDocumentContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatDocumentContext.js","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAe,EACf,SAAiB;IAEjB,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,EAAE,CAAC;IAExD,IAAI,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,eAAe,CAC7D,OAAO,EACP,SAAS,CACV,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,YAAY,CAAC,GAAG,CACd,KAAK,CAAC,UAAU,EAChB,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAC9C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,eAAe;gBACb,kCAAkC;oBAClC,iBAAiB;yBACd,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBACpB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;wBACzD,OAAO,YAAY,KAAK,GAAG,CAAC,KAAK,QAAQ,WAAW,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC;oBAClG,CAAC,CAAC;yBACD,IAAI,CAAC,SAAS,CAAC;oBAClB,6BAA6B,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO;QACL,eAAe;QACf,eAAe,EAAE,eAAe;YAC9B,CAAC,CAAC,GAAG,eAAe,kBAAkB,OAAO,EAAE;YAC/C,CAAC,CAAC,OAAO;QACX,kBAAkB,EAAE,OAAO,CAAC,eAAe,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
2
|
+
export declare const getLogLevel: () => LogLevel;
|
|
3
|
+
export declare const isLogLevelEnabled: (level: Exclude<LogLevel, "silent">) => boolean;
|
|
4
|
+
export interface Logger {
|
|
5
|
+
debug: (...args: unknown[]) => void;
|
|
6
|
+
info: (...args: unknown[]) => void;
|
|
7
|
+
warn: (...args: unknown[]) => void;
|
|
8
|
+
error: (...args: unknown[]) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function createLogger(scope: string): Logger;
|
|
11
|
+
export declare const logger: Logger;
|
|
12
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAiDtE,eAAO,MAAM,WAAW,QAAO,QACgC,CAAC;AAEhE,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAGnE,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBlD;AAED,eAAO,MAAM,MAAM,QAAsB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
const LEVEL_PRIORITY = {
|
|
18
|
+
silent: 0,
|
|
19
|
+
error: 1,
|
|
20
|
+
warn: 2,
|
|
21
|
+
info: 3,
|
|
22
|
+
debug: 4,
|
|
23
|
+
};
|
|
24
|
+
const normalizeLogLevel = (level) => {
|
|
25
|
+
const normalized = level?.trim().toLowerCase();
|
|
26
|
+
if (normalized === 'silent' ||
|
|
27
|
+
normalized === 'error' ||
|
|
28
|
+
normalized === 'warn' ||
|
|
29
|
+
normalized === 'info' ||
|
|
30
|
+
normalized === 'debug') {
|
|
31
|
+
return normalized;
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
const defaultLogLevel = () => {
|
|
36
|
+
if (process.env.DEMO_MODE === 'true' ||
|
|
37
|
+
process.env.VITE_DEMO_MODE === 'true') {
|
|
38
|
+
return 'warn';
|
|
39
|
+
}
|
|
40
|
+
if (process.env.DEBUG === 'true') {
|
|
41
|
+
return 'debug';
|
|
42
|
+
}
|
|
43
|
+
if (process.env.NODE_ENV === 'production') {
|
|
44
|
+
return 'info';
|
|
45
|
+
}
|
|
46
|
+
if (process.env.NODE_ENV === 'test') {
|
|
47
|
+
return 'warn';
|
|
48
|
+
}
|
|
49
|
+
return 'info';
|
|
50
|
+
};
|
|
51
|
+
export const getLogLevel = () => normalizeLogLevel(process.env.LOG_LEVEL) || defaultLogLevel();
|
|
52
|
+
export const isLogLevelEnabled = (level) => {
|
|
53
|
+
const currentLevel = getLogLevel();
|
|
54
|
+
return LEVEL_PRIORITY[currentLevel] >= LEVEL_PRIORITY[level];
|
|
55
|
+
};
|
|
56
|
+
export function createLogger(scope) {
|
|
57
|
+
const prefix = `[${scope}]`;
|
|
58
|
+
return {
|
|
59
|
+
debug: (...args) => {
|
|
60
|
+
if (isLogLevelEnabled('debug')) {
|
|
61
|
+
console.debug(prefix, ...args);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
info: (...args) => {
|
|
65
|
+
if (isLogLevelEnabled('info')) {
|
|
66
|
+
console.info(prefix, ...args);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
warn: (...args) => {
|
|
70
|
+
if (isLogLevelEnabled('warn')) {
|
|
71
|
+
console.warn(prefix, ...args);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
error: (...args) => {
|
|
75
|
+
if (isLogLevelEnabled('error')) {
|
|
76
|
+
console.error(prefix, ...args);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export const logger = createLogger('app');
|
|
82
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,cAAc,GAA6B;IAC/C,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAwB,EAAE;IACjE,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/C,IACE,UAAU,KAAK,QAAQ;QACvB,UAAU,KAAK,OAAO;QACtB,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,OAAO,EACtB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAa,EAAE;IACrC,IACE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAa,EAAE,CACxC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAkC,EAAE,EAAE;IACtE,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC;IACnC,OAAO,cAAc,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC,CAAC;AASF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC;IAE5B,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface RemoteModelInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
category: string;
|
|
5
|
+
sizes: string[];
|
|
6
|
+
pulls?: string;
|
|
7
|
+
tags?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface OllamaLibraryQuery {
|
|
10
|
+
search?: string;
|
|
11
|
+
sort?: string;
|
|
12
|
+
category?: string;
|
|
13
|
+
pages?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function parseOllamaSearchHtml(html: string): RemoteModelInfo[];
|
|
16
|
+
export declare function getOllamaLibraryModels({ search, sort, category, pages, }: OllamaLibraryQuery): Promise<RemoteModelInfo[]>;
|
|
17
|
+
//# sourceMappingURL=ollamaLibrary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollamaLibrary.d.ts","sourceRoot":"","sources":["../../src/utils/ollamaLibrary.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6HD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAuBrE;AAyFD,wBAAsB,sBAAsB,CAAC,EAC3C,MAAW,EACX,IAAgB,EAChB,QAAa,EACb,KAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAuCjD"}
|