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.
Files changed (287) hide show
  1. package/README.md +64 -46
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +21 -19
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +26 -908
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/middleware/auth.d.ts.map +1 -1
  9. package/backend/dist/middleware/auth.js +4 -2
  10. package/backend/dist/middleware/auth.js.map +1 -1
  11. package/backend/dist/middleware/index.d.ts.map +1 -1
  12. package/backend/dist/middleware/index.js +4 -2
  13. package/backend/dist/middleware/index.js.map +1 -1
  14. package/backend/dist/models/personaModel.d.ts.map +1 -1
  15. package/backend/dist/models/personaModel.js +11 -9
  16. package/backend/dist/models/personaModel.js.map +1 -1
  17. package/backend/dist/routes/auth.d.ts.map +1 -1
  18. package/backend/dist/routes/auth.js +36 -14
  19. package/backend/dist/routes/auth.js.map +1 -1
  20. package/backend/dist/routes/chat.d.ts.map +1 -1
  21. package/backend/dist/routes/chat.js +61 -249
  22. package/backend/dist/routes/chat.js.map +1 -1
  23. package/backend/dist/routes/documents.d.ts.map +1 -1
  24. package/backend/dist/routes/documents.js +10 -8
  25. package/backend/dist/routes/documents.js.map +1 -1
  26. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  27. package/backend/dist/routes/imageGen.js +9 -7
  28. package/backend/dist/routes/imageGen.js.map +1 -1
  29. package/backend/dist/routes/ollama.d.ts.map +1 -1
  30. package/backend/dist/routes/ollama.js +7 -247
  31. package/backend/dist/routes/ollama.js.map +1 -1
  32. package/backend/dist/routes/plugins.d.ts.map +1 -1
  33. package/backend/dist/routes/plugins.js +7 -105
  34. package/backend/dist/routes/plugins.js.map +1 -1
  35. package/backend/dist/routes/tts.d.ts.map +1 -1
  36. package/backend/dist/routes/tts.js +7 -5
  37. package/backend/dist/routes/tts.js.map +1 -1
  38. package/backend/dist/routes/users.d.ts.map +1 -1
  39. package/backend/dist/routes/users.js +7 -5
  40. package/backend/dist/routes/users.js.map +1 -1
  41. package/backend/dist/services/assistantCompletionService.d.ts +26 -0
  42. package/backend/dist/services/assistantCompletionService.d.ts.map +1 -0
  43. package/backend/dist/services/assistantCompletionService.js +53 -0
  44. package/backend/dist/services/assistantCompletionService.js.map +1 -0
  45. package/backend/dist/services/authService.d.ts +2 -0
  46. package/backend/dist/services/authService.d.ts.map +1 -1
  47. package/backend/dist/services/authService.js +9 -5
  48. package/backend/dist/services/authService.js.map +1 -1
  49. package/backend/dist/services/chatGenerationService.d.ts +32 -0
  50. package/backend/dist/services/chatGenerationService.d.ts.map +1 -0
  51. package/backend/dist/services/chatGenerationService.js +118 -0
  52. package/backend/dist/services/chatGenerationService.js.map +1 -0
  53. package/backend/dist/services/chatRequestService.d.ts +55 -0
  54. package/backend/dist/services/chatRequestService.d.ts.map +1 -0
  55. package/backend/dist/services/chatRequestService.js +103 -0
  56. package/backend/dist/services/chatRequestService.js.map +1 -0
  57. package/backend/dist/services/chatService.d.ts +0 -1
  58. package/backend/dist/services/chatService.d.ts.map +1 -1
  59. package/backend/dist/services/chatService.js +13 -27
  60. package/backend/dist/services/chatService.js.map +1 -1
  61. package/backend/dist/services/documentService.d.ts.map +1 -1
  62. package/backend/dist/services/documentService.js +21 -19
  63. package/backend/dist/services/documentService.js.map +1 -1
  64. package/backend/dist/services/embeddingService.d.ts.map +1 -1
  65. package/backend/dist/services/embeddingService.js +3 -1
  66. package/backend/dist/services/embeddingService.js.map +1 -1
  67. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  68. package/backend/dist/services/encryptionService.js +26 -24
  69. package/backend/dist/services/encryptionService.js.map +1 -1
  70. package/backend/dist/services/galleryService.d.ts.map +1 -1
  71. package/backend/dist/services/galleryService.js +8 -6
  72. package/backend/dist/services/galleryService.js.map +1 -1
  73. package/backend/dist/services/memoryService.d.ts +2 -13
  74. package/backend/dist/services/memoryService.d.ts.map +1 -1
  75. package/backend/dist/services/memoryService.js +37 -198
  76. package/backend/dist/services/memoryService.js.map +1 -1
  77. package/backend/dist/services/memoryUtils.d.ts +29 -0
  78. package/backend/dist/services/memoryUtils.d.ts.map +1 -0
  79. package/backend/dist/services/memoryUtils.js +165 -0
  80. package/backend/dist/services/memoryUtils.js.map +1 -0
  81. package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
  82. package/backend/dist/services/mutationEngineService.js +3 -1
  83. package/backend/dist/services/mutationEngineService.js.map +1 -1
  84. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  85. package/backend/dist/services/ollamaService.js +36 -34
  86. package/backend/dist/services/ollamaService.js.map +1 -1
  87. package/backend/dist/services/personaService.d.ts.map +1 -1
  88. package/backend/dist/services/personaService.js +3 -1
  89. package/backend/dist/services/personaService.js.map +1 -1
  90. package/backend/dist/services/pluginCapabilityRegistryService.d.ts +11 -0
  91. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -0
  92. package/backend/dist/services/pluginCapabilityRegistryService.js +70 -0
  93. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -0
  94. package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
  95. package/backend/dist/services/pluginCredentialsService.js +13 -11
  96. package/backend/dist/services/pluginCredentialsService.js.map +1 -1
  97. package/backend/dist/services/pluginEmbeddingService.d.ts +26 -0
  98. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -0
  99. package/backend/dist/services/pluginEmbeddingService.js +159 -0
  100. package/backend/dist/services/pluginEmbeddingService.js.map +1 -0
  101. package/backend/dist/services/pluginImageGenerationService.d.ts +29 -0
  102. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -0
  103. package/backend/dist/services/pluginImageGenerationService.js +402 -0
  104. package/backend/dist/services/pluginImageGenerationService.js.map +1 -0
  105. package/backend/dist/services/pluginService.d.ts +9 -18
  106. package/backend/dist/services/pluginService.d.ts.map +1 -1
  107. package/backend/dist/services/pluginService.js +120 -1469
  108. package/backend/dist/services/pluginService.js.map +1 -1
  109. package/backend/dist/services/pluginTTSService.d.ts +28 -0
  110. package/backend/dist/services/pluginTTSService.d.ts.map +1 -0
  111. package/backend/dist/services/pluginTTSService.js +286 -0
  112. package/backend/dist/services/pluginTTSService.js.map +1 -0
  113. package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
  114. package/backend/dist/services/pluginVariablesService.js +7 -5
  115. package/backend/dist/services/pluginVariablesService.js.map +1 -1
  116. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  117. package/backend/dist/services/preferencesService.js +9 -7
  118. package/backend/dist/services/preferencesService.js.map +1 -1
  119. package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -1
  120. package/backend/dist/services/simpleGitHubOAuth.js +10 -8
  121. package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
  122. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
  123. package/backend/dist/services/simpleHuggingFaceOAuth.js +11 -9
  124. package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
  125. package/backend/dist/services/systemSettingsService.d.ts.map +1 -1
  126. package/backend/dist/services/systemSettingsService.js +4 -2
  127. package/backend/dist/services/systemSettingsService.js.map +1 -1
  128. package/backend/dist/services/titleGenerationService.d.ts +55 -0
  129. package/backend/dist/services/titleGenerationService.d.ts.map +1 -0
  130. package/backend/dist/services/titleGenerationService.js +121 -0
  131. package/backend/dist/services/titleGenerationService.js.map +1 -0
  132. package/backend/dist/services/turnstileService.d.ts +13 -0
  133. package/backend/dist/services/turnstileService.d.ts.map +1 -0
  134. package/backend/dist/services/turnstileService.js +79 -0
  135. package/backend/dist/services/turnstileService.js.map +1 -0
  136. package/backend/dist/storage.d.ts +2 -22
  137. package/backend/dist/storage.d.ts.map +1 -1
  138. package/backend/dist/storage.js +22 -170
  139. package/backend/dist/storage.js.map +1 -1
  140. package/backend/dist/storageMappers.d.ts +82 -0
  141. package/backend/dist/storageMappers.d.ts.map +1 -0
  142. package/backend/dist/storageMappers.js +85 -0
  143. package/backend/dist/storageMappers.js.map +1 -0
  144. package/backend/dist/test-encryption.js +20 -18
  145. package/backend/dist/test-encryption.js.map +1 -1
  146. package/backend/dist/utils/assistantBranching.d.ts +8 -0
  147. package/backend/dist/utils/assistantBranching.d.ts.map +1 -0
  148. package/backend/dist/utils/assistantBranching.js +30 -0
  149. package/backend/dist/utils/assistantBranching.js.map +1 -0
  150. package/backend/dist/utils/chatContext.d.ts +17 -0
  151. package/backend/dist/utils/chatContext.d.ts.map +1 -0
  152. package/backend/dist/utils/chatContext.js +82 -0
  153. package/backend/dist/utils/chatContext.js.map +1 -0
  154. package/backend/dist/utils/chatDocumentContext.d.ts +7 -0
  155. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -0
  156. package/backend/dist/utils/chatDocumentContext.js +51 -0
  157. package/backend/dist/utils/chatDocumentContext.js.map +1 -0
  158. package/backend/dist/utils/logger.d.ts +12 -0
  159. package/backend/dist/utils/logger.d.ts.map +1 -0
  160. package/backend/dist/utils/logger.js +82 -0
  161. package/backend/dist/utils/logger.js.map +1 -0
  162. package/backend/dist/utils/ollamaLibrary.d.ts +17 -0
  163. package/backend/dist/utils/ollamaLibrary.d.ts.map +1 -0
  164. package/backend/dist/utils/ollamaLibrary.js +253 -0
  165. package/backend/dist/utils/ollamaLibrary.js.map +1 -0
  166. package/backend/dist/utils/ollamaStreaming.d.ts +19 -0
  167. package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -0
  168. package/backend/dist/utils/ollamaStreaming.js +67 -0
  169. package/backend/dist/utils/ollamaStreaming.js.map +1 -0
  170. package/backend/dist/utils/pluginChatAdapter.d.ts +32 -0
  171. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -0
  172. package/backend/dist/utils/pluginChatAdapter.js +308 -0
  173. package/backend/dist/utils/pluginChatAdapter.js.map +1 -0
  174. package/backend/dist/utils/pluginChatContext.d.ts +23 -0
  175. package/backend/dist/utils/pluginChatContext.d.ts.map +1 -0
  176. package/backend/dist/utils/pluginChatContext.js +77 -0
  177. package/backend/dist/utils/pluginChatContext.js.map +1 -0
  178. package/backend/dist/utils/pluginResponse.d.ts +6 -0
  179. package/backend/dist/utils/pluginResponse.d.ts.map +1 -0
  180. package/backend/dist/utils/pluginResponse.js +70 -0
  181. package/backend/dist/utils/pluginResponse.js.map +1 -0
  182. package/backend/dist/utils/pluginStreamAdapter.d.ts +16 -0
  183. package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -0
  184. package/backend/dist/utils/pluginStreamAdapter.js +141 -0
  185. package/backend/dist/utils/pluginStreamAdapter.js.map +1 -0
  186. package/backend/dist/utils/pluginStreaming.d.ts +24 -0
  187. package/backend/dist/utils/pluginStreaming.d.ts.map +1 -0
  188. package/backend/dist/utils/pluginStreaming.js +106 -0
  189. package/backend/dist/utils/pluginStreaming.js.map +1 -0
  190. package/backend/dist/utils/pluginUpload.d.ts +8 -0
  191. package/backend/dist/utils/pluginUpload.d.ts.map +1 -0
  192. package/backend/dist/utils/pluginUpload.js +51 -0
  193. package/backend/dist/utils/pluginUpload.js.map +1 -0
  194. package/backend/dist/utils/pluginValidation.d.ts +10 -0
  195. package/backend/dist/utils/pluginValidation.d.ts.map +1 -0
  196. package/backend/dist/utils/pluginValidation.js +94 -0
  197. package/backend/dist/utils/pluginValidation.js.map +1 -0
  198. package/backend/dist/utils/pluginVariableValidation.d.ts +10 -0
  199. package/backend/dist/utils/pluginVariableValidation.d.ts.map +1 -0
  200. package/backend/dist/utils/pluginVariableValidation.js +80 -0
  201. package/backend/dist/utils/pluginVariableValidation.js.map +1 -0
  202. package/backend/dist/utils/websocketMessages.d.ts +26 -0
  203. package/backend/dist/utils/websocketMessages.d.ts.map +1 -0
  204. package/backend/dist/utils/websocketMessages.js +74 -0
  205. package/backend/dist/utils/websocketMessages.js.map +1 -0
  206. package/backend/dist/websocketServer.d.ts +3 -0
  207. package/backend/dist/websocketServer.d.ts.map +1 -0
  208. package/backend/dist/websocketServer.js +332 -0
  209. package/backend/dist/websocketServer.js.map +1 -0
  210. package/backend/package.json +2 -2
  211. package/frontend/dist/assets/index-BxHDVIti.css +1 -0
  212. package/frontend/dist/assets/index-CDA2f43l.js +5 -0
  213. package/frontend/dist/assets/markdown-math-CYlHEDRF.css +1 -0
  214. package/frontend/dist/index.html +11 -10
  215. package/frontend/dist/js/ArtifactContainer-CA523BOS.js +1 -0
  216. package/frontend/dist/js/ArtifactDemoPage-C0p2-ccP.js +200 -0
  217. package/frontend/dist/js/ArtifactSlideOutPanel-BBYuYyr_.js +1 -0
  218. package/frontend/dist/js/Button-BmZQkAPD.js +1 -0
  219. package/frontend/dist/js/ChatPage-QSOhIynr.js +16 -0
  220. package/frontend/dist/js/FirstTimeSetup-pi-S4VU-.js +1 -0
  221. package/frontend/dist/js/GalleryPage-BPXB-D4f.js +1 -0
  222. package/frontend/dist/js/ModelManagerModals-D3SZV7CU.js +1 -0
  223. package/frontend/dist/js/ModelsPage-Fmqc1Zxb.js +2 -0
  224. package/frontend/dist/js/OptimizedSyntaxHighlighter-DlI4omE2.js +1 -0
  225. package/frontend/dist/js/PersonasPage-BuLOCG1Y.js +13 -0
  226. package/frontend/dist/js/RichMessageContent-Darvuw8F.js +3 -0
  227. package/frontend/dist/js/SettingsModal-CQhAeaia.js +1 -0
  228. package/frontend/dist/js/UserManagementPage-yX9vOase.js +1 -0
  229. package/frontend/dist/js/api-d05r9G59.js +15 -0
  230. package/frontend/dist/js/ar-BIL8U_dv.js +2 -0
  231. package/frontend/dist/js/artifactHtml-CRdkOCnz.js +27 -0
  232. package/frontend/dist/js/bn-BWQoWPn6.js +2 -0
  233. package/frontend/dist/js/cs-DOD1vscE.js +2 -0
  234. package/frontend/dist/js/da-DYPzSzX4.js +2 -0
  235. package/frontend/dist/js/de-CHd4b2Xf.js +2 -0
  236. package/frontend/dist/js/demoMode-BhEpMVh5.js +1 -0
  237. package/frontend/dist/js/es-BmDO6uNe.js +2 -0
  238. package/frontend/dist/js/fr-DW24sUV7.js +2 -0
  239. package/frontend/dist/js/hi-BRDq_y1B.js +2 -0
  240. package/frontend/dist/js/id-I_F2nstV.js +2 -0
  241. package/frontend/dist/js/is-Boj7-J12.js +2 -0
  242. package/frontend/dist/js/it-CNeHl9Fh.js +2 -0
  243. package/frontend/dist/js/ja-DrVG6G8s.js +2 -0
  244. package/frontend/dist/js/ko-BtKRwlHW.js +2 -0
  245. package/frontend/dist/js/logger-1THq8-96.js +1 -0
  246. package/frontend/dist/js/markdown-core-CEpaJrKd.js +16 -0
  247. package/frontend/dist/js/markdown-math-DAmpvM9y.js +261 -0
  248. package/frontend/dist/js/ms-Dp9MigoU.js +2 -0
  249. package/frontend/dist/js/nl-Bk9pGoCF.js +2 -0
  250. package/frontend/dist/js/pl-seE8_lLS.js +2 -0
  251. package/frontend/dist/js/pt-BAeBtldI.js +2 -0
  252. package/frontend/dist/js/{react-vendor-Dh6nfvM2.js → react-vendor-DtQrJICq.js} +1 -1
  253. package/frontend/dist/js/ru-CkCpWFNb.js +2 -0
  254. package/frontend/dist/js/sv-BM7nqxmA.js +2 -0
  255. package/frontend/dist/js/syntax-highlight-B758xPeo.js +8 -0
  256. package/frontend/dist/js/th-vDIZbpa4.js +2 -0
  257. package/frontend/dist/js/tr-G2-XodhW.js +2 -0
  258. package/frontend/dist/js/ui-vendor-MCs1MDmN.js +177 -0
  259. package/frontend/dist/js/uk-DfVfZcBQ.js +2 -0
  260. package/frontend/dist/js/useBaseQuery-CrdrLcmR.js +1 -0
  261. package/frontend/dist/js/useQuery-DaEnYfWR.js +1 -0
  262. package/frontend/dist/js/utils-es0n-47H.js +1 -0
  263. package/frontend/dist/js/utils-vendor-B2ZBL57Y.js +9 -0
  264. package/frontend/dist/js/vi-Yp9yjb06.js +2 -0
  265. package/frontend/dist/js/zh-DtRb97we.js +2 -0
  266. package/package.json +12 -8
  267. package/plugins/openclaw-agent.json +1 -1
  268. package/backend/dist/services/openclawSessionService.d.ts +0 -63
  269. package/backend/dist/services/openclawSessionService.d.ts.map +0 -1
  270. package/backend/dist/services/openclawSessionService.js +0 -307
  271. package/backend/dist/services/openclawSessionService.js.map +0 -1
  272. package/frontend/dist/assets/index-cOuIFv6G.js +0 -314
  273. package/frontend/dist/assets/index-tuVjvNle.css +0 -1
  274. package/frontend/dist/js/ArtifactContainer-DXa2t8GS.js +0 -24
  275. package/frontend/dist/js/ArtifactDemoPage-Dms7P2gI.js +0 -98
  276. package/frontend/dist/js/ChatPage-C6hOVIAS.js +0 -15
  277. package/frontend/dist/js/GalleryPage-CGKPECJV.js +0 -1
  278. package/frontend/dist/js/ModelsPage-CNB-c-JM.js +0 -1
  279. package/frontend/dist/js/PersonasPage-hDiS0Rvl.js +0 -13
  280. package/frontend/dist/js/UserManagementPage-1H9kcHeR.js +0 -1
  281. package/frontend/dist/js/api-MQ7bONaU.js +0 -3
  282. package/frontend/dist/js/appStore-BpzQfKOd.js +0 -2
  283. package/frontend/dist/js/authStore-Cn_WS6Kb.js +0 -2
  284. package/frontend/dist/js/demoMode-PKHbba1m.js +0 -1
  285. package/frontend/dist/js/markdown-vendor-DLzJCMRQ.js +0 -22
  286. package/frontend/dist/js/ui-vendor-ClcVY3m-.js +0 -177
  287. 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":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAmFpE,SAAS,WAAW,CAAI,KAAc;IACpC,OAAO,KAAK;QACV,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAO;QACrD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAgC;IACnE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAe,EACf,eAAoC;IAEpC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAuC;QACjD,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/C,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QACvC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QACrC,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC;QAClC,QAAQ,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC;QAC7B,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAe,EACf,QAAsB,EACtB,aAAgC;IAEhC,MAAM,eAAe,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAE5D,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAgB;IAC7C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACzE,QAAQ,EAAE,GAAG,CAAC,SAAsC;QACpD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,WAAW,CAA0B,GAAG,CAAC,QAAQ,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAqB;IACvD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/C,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QACrC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,CAAC,QAAQ;KACtB,CAAC;AACJ,CAAC"}
@@ -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
- console.log('🔐 Testing Database Encryption Service');
20
- console.log('=====================================');
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
- console.log('Original:', testData);
25
+ logger.info('Original:', testData);
24
26
  const encrypted = encryptionService.encrypt(testData);
25
- console.log('Encrypted:', encrypted);
27
+ logger.info('Encrypted:', encrypted);
26
28
  const decrypted = encryptionService.decrypt(encrypted);
27
- console.log('Decrypted:', decrypted);
28
- console.log('✅ Basic encryption test:', testData === decrypted ? 'PASSED' : 'FAILED');
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: 'console.log("secret");' }],
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
- console.log('\n📦 Testing Object Encryption');
39
- console.log('Original object:', JSON.stringify(testObject, null, 2));
40
+ logger.info('Testing object encryption');
41
+ logger.info('Original object:', JSON.stringify(testObject, null, 2));
40
42
  const encryptedObject = encryptionService.encryptObject(testObject);
41
- console.log('Encrypted object:', encryptedObject);
43
+ logger.info('Encrypted object:', encryptedObject);
42
44
  const decryptedObject = encryptionService.decryptObject(encryptedObject);
43
- console.log('Decrypted object:', JSON.stringify(decryptedObject, null, 2));
44
- console.log('✅ Object encryption test:', JSON.stringify(testObject) === JSON.stringify(decryptedObject)
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
- console.log('\n🔍 Testing Edge Cases');
50
+ logger.info('Testing edge cases');
49
51
  try {
50
52
  const nullTest = encryptionService.encrypt('');
51
53
  const nullDecrypted = encryptionService.decrypt(nullTest);
52
- console.log('✅ Empty string test:', nullDecrypted === '' ? 'PASSED' : 'FAILED');
54
+ logger.info('Empty string test:', nullDecrypted === '' ? 'PASSED' : 'FAILED');
53
55
  }
54
56
  catch (error) {
55
- console.log('❌ Empty string test: FAILED -', error.message);
57
+ logger.error('Empty string test failed:', error.message);
56
58
  }
57
- console.log('\n🎉 Encryption service is ready for production!');
58
- console.log('All sensitive data will be encrypted before storage in the database.');
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
- console.error('❌ Error running encryption tests:', error);
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":"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"}
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"}