libre-webui 0.2.4

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 (233) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +204 -0
  3. package/backend/dist/db.d.ts +19 -0
  4. package/backend/dist/db.d.ts.map +1 -0
  5. package/backend/dist/db.js +355 -0
  6. package/backend/dist/db.js.map +1 -0
  7. package/backend/dist/env.d.ts +2 -0
  8. package/backend/dist/env.d.ts.map +1 -0
  9. package/backend/dist/env.js +22 -0
  10. package/backend/dist/env.js.map +1 -0
  11. package/backend/dist/index.d.ts +4 -0
  12. package/backend/dist/index.d.ts.map +1 -0
  13. package/backend/dist/index.js +751 -0
  14. package/backend/dist/index.js.map +1 -0
  15. package/backend/dist/middleware/auth.d.ts +18 -0
  16. package/backend/dist/middleware/auth.d.ts.map +1 -0
  17. package/backend/dist/middleware/auth.js +98 -0
  18. package/backend/dist/middleware/auth.js.map +1 -0
  19. package/backend/dist/middleware/index.d.ts +5 -0
  20. package/backend/dist/middleware/index.d.ts.map +1 -0
  21. package/backend/dist/middleware/index.js +62 -0
  22. package/backend/dist/middleware/index.js.map +1 -0
  23. package/backend/dist/models/personaModel.d.ts +37 -0
  24. package/backend/dist/models/personaModel.d.ts.map +1 -0
  25. package/backend/dist/models/personaModel.js +269 -0
  26. package/backend/dist/models/personaModel.js.map +1 -0
  27. package/backend/dist/models/userModel.d.ts +86 -0
  28. package/backend/dist/models/userModel.d.ts.map +1 -0
  29. package/backend/dist/models/userModel.js +212 -0
  30. package/backend/dist/models/userModel.js.map +1 -0
  31. package/backend/dist/routes/auth.d.ts +3 -0
  32. package/backend/dist/routes/auth.d.ts.map +1 -0
  33. package/backend/dist/routes/auth.js +389 -0
  34. package/backend/dist/routes/auth.js.map +1 -0
  35. package/backend/dist/routes/chat.d.ts +3 -0
  36. package/backend/dist/routes/chat.d.ts.map +1 -0
  37. package/backend/dist/routes/chat.js +767 -0
  38. package/backend/dist/routes/chat.js.map +1 -0
  39. package/backend/dist/routes/documents.d.ts +3 -0
  40. package/backend/dist/routes/documents.d.ts.map +1 -0
  41. package/backend/dist/routes/documents.js +244 -0
  42. package/backend/dist/routes/documents.js.map +1 -0
  43. package/backend/dist/routes/ollama.d.ts +3 -0
  44. package/backend/dist/routes/ollama.d.ts.map +1 -0
  45. package/backend/dist/routes/ollama.js +549 -0
  46. package/backend/dist/routes/ollama.js.map +1 -0
  47. package/backend/dist/routes/personas.d.ts +3 -0
  48. package/backend/dist/routes/personas.d.ts.map +1 -0
  49. package/backend/dist/routes/personas.js +505 -0
  50. package/backend/dist/routes/personas.js.map +1 -0
  51. package/backend/dist/routes/plugins.d.ts +3 -0
  52. package/backend/dist/routes/plugins.d.ts.map +1 -0
  53. package/backend/dist/routes/plugins.js +417 -0
  54. package/backend/dist/routes/plugins.js.map +1 -0
  55. package/backend/dist/routes/preferences.d.ts +3 -0
  56. package/backend/dist/routes/preferences.d.ts.map +1 -0
  57. package/backend/dist/routes/preferences.js +303 -0
  58. package/backend/dist/routes/preferences.js.map +1 -0
  59. package/backend/dist/routes/tts.d.ts +3 -0
  60. package/backend/dist/routes/tts.d.ts.map +1 -0
  61. package/backend/dist/routes/tts.js +304 -0
  62. package/backend/dist/routes/tts.js.map +1 -0
  63. package/backend/dist/routes/users.d.ts +3 -0
  64. package/backend/dist/routes/users.d.ts.map +1 -0
  65. package/backend/dist/routes/users.js +246 -0
  66. package/backend/dist/routes/users.js.map +1 -0
  67. package/backend/dist/services/authService.d.ts +51 -0
  68. package/backend/dist/services/authService.d.ts.map +1 -0
  69. package/backend/dist/services/authService.js +153 -0
  70. package/backend/dist/services/authService.js.map +1 -0
  71. package/backend/dist/services/chatService.d.ts +52 -0
  72. package/backend/dist/services/chatService.d.ts.map +1 -0
  73. package/backend/dist/services/chatService.js +645 -0
  74. package/backend/dist/services/chatService.js.map +1 -0
  75. package/backend/dist/services/documentService.d.ts +34 -0
  76. package/backend/dist/services/documentService.d.ts.map +1 -0
  77. package/backend/dist/services/documentService.js +428 -0
  78. package/backend/dist/services/documentService.js.map +1 -0
  79. package/backend/dist/services/encryptionService.d.ts +62 -0
  80. package/backend/dist/services/encryptionService.d.ts.map +1 -0
  81. package/backend/dist/services/encryptionService.js +284 -0
  82. package/backend/dist/services/encryptionService.js.map +1 -0
  83. package/backend/dist/services/memoryService.d.ts +140 -0
  84. package/backend/dist/services/memoryService.d.ts.map +1 -0
  85. package/backend/dist/services/memoryService.js +867 -0
  86. package/backend/dist/services/memoryService.js.map +1 -0
  87. package/backend/dist/services/mutationEngineService.d.ts +49 -0
  88. package/backend/dist/services/mutationEngineService.d.ts.map +1 -0
  89. package/backend/dist/services/mutationEngineService.js +432 -0
  90. package/backend/dist/services/mutationEngineService.js.map +1 -0
  91. package/backend/dist/services/ollamaService.d.ts +55 -0
  92. package/backend/dist/services/ollamaService.d.ts.map +1 -0
  93. package/backend/dist/services/ollamaService.js +450 -0
  94. package/backend/dist/services/ollamaService.js.map +1 -0
  95. package/backend/dist/services/personaService.d.ts +67 -0
  96. package/backend/dist/services/personaService.d.ts.map +1 -0
  97. package/backend/dist/services/personaService.js +373 -0
  98. package/backend/dist/services/personaService.js.map +1 -0
  99. package/backend/dist/services/pluginService.d.ts +42 -0
  100. package/backend/dist/services/pluginService.d.ts.map +1 -0
  101. package/backend/dist/services/pluginService.js +961 -0
  102. package/backend/dist/services/pluginService.js.map +1 -0
  103. package/backend/dist/services/preferencesService.d.ts +35 -0
  104. package/backend/dist/services/preferencesService.d.ts.map +1 -0
  105. package/backend/dist/services/preferencesService.js +255 -0
  106. package/backend/dist/services/preferencesService.js.map +1 -0
  107. package/backend/dist/services/simpleGitHubOAuth.d.ts +48 -0
  108. package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -0
  109. package/backend/dist/services/simpleGitHubOAuth.js +203 -0
  110. package/backend/dist/services/simpleGitHubOAuth.js.map +1 -0
  111. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts +43 -0
  112. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -0
  113. package/backend/dist/services/simpleHuggingFaceOAuth.js +159 -0
  114. package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -0
  115. package/backend/dist/services/userService.d.ts +1 -0
  116. package/backend/dist/services/userService.d.ts.map +1 -0
  117. package/backend/dist/services/userService.js +18 -0
  118. package/backend/dist/services/userService.js.map +1 -0
  119. package/backend/dist/storage.d.ts +55 -0
  120. package/backend/dist/storage.d.ts.map +1 -0
  121. package/backend/dist/storage.js +741 -0
  122. package/backend/dist/storage.js.map +1 -0
  123. package/backend/dist/test-encryption.d.ts +2 -0
  124. package/backend/dist/test-encryption.d.ts.map +1 -0
  125. package/backend/dist/test-encryption.js +64 -0
  126. package/backend/dist/test-encryption.js.map +1 -0
  127. package/backend/dist/types/index.d.ts +523 -0
  128. package/backend/dist/types/index.d.ts.map +1 -0
  129. package/backend/dist/types/index.js +31 -0
  130. package/backend/dist/types/index.js.map +1 -0
  131. package/backend/dist/utils/generationUtils.d.ts +10 -0
  132. package/backend/dist/utils/generationUtils.d.ts.map +1 -0
  133. package/backend/dist/utils/generationUtils.js +49 -0
  134. package/backend/dist/utils/generationUtils.js.map +1 -0
  135. package/backend/dist/utils/hash.d.ts +29 -0
  136. package/backend/dist/utils/hash.d.ts.map +1 -0
  137. package/backend/dist/utils/hash.js +73 -0
  138. package/backend/dist/utils/hash.js.map +1 -0
  139. package/backend/dist/utils/jwt.d.ts +37 -0
  140. package/backend/dist/utils/jwt.d.ts.map +1 -0
  141. package/backend/dist/utils/jwt.js +86 -0
  142. package/backend/dist/utils/jwt.js.map +1 -0
  143. package/bin/cli.js +150 -0
  144. package/electron/main.js +322 -0
  145. package/frontend/dist/_redirects +1 -0
  146. package/frontend/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  147. package/frontend/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  148. package/frontend/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  149. package/frontend/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  150. package/frontend/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  151. package/frontend/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  152. package/frontend/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  153. package/frontend/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  154. package/frontend/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  155. package/frontend/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  156. package/frontend/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  157. package/frontend/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  158. package/frontend/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  159. package/frontend/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  160. package/frontend/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  161. package/frontend/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  162. package/frontend/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  163. package/frontend/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  164. package/frontend/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  165. package/frontend/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  166. package/frontend/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  167. package/frontend/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  168. package/frontend/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  169. package/frontend/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  170. package/frontend/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  171. package/frontend/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  172. package/frontend/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  173. package/frontend/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  174. package/frontend/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  175. package/frontend/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  176. package/frontend/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  177. package/frontend/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  178. package/frontend/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  179. package/frontend/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  180. package/frontend/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  181. package/frontend/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  182. package/frontend/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  183. package/frontend/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  184. package/frontend/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  185. package/frontend/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  186. package/frontend/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  187. package/frontend/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  188. package/frontend/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  189. package/frontend/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  190. package/frontend/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  191. package/frontend/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  192. package/frontend/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  193. package/frontend/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  194. package/frontend/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  195. package/frontend/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  196. package/frontend/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  197. package/frontend/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  198. package/frontend/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  199. package/frontend/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  200. package/frontend/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  201. package/frontend/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  202. package/frontend/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  203. package/frontend/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  204. package/frontend/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  205. package/frontend/dist/assets/index-CRQkB7Wz.js +3 -0
  206. package/frontend/dist/css/index-B1OjddR-.css +1 -0
  207. package/frontend/dist/favicon-dark.png +0 -0
  208. package/frontend/dist/favicon-light.png +0 -0
  209. package/frontend/dist/index.html +23 -0
  210. package/frontend/dist/js/ArtifactContainer-c_oi7XMs.js +23 -0
  211. package/frontend/dist/js/ArtifactDemoPage-CdfwJVXu.js +98 -0
  212. package/frontend/dist/js/ChatPage-CyotkmS0.js +281 -0
  213. package/frontend/dist/js/ModelsPage-DNaziPHc.js +2 -0
  214. package/frontend/dist/js/PersonasPage-DcnbJf8Q.js +13 -0
  215. package/frontend/dist/js/UserManagementPage-DtTf92dS.js +1 -0
  216. package/frontend/dist/js/markdown-vendor-D-79K2xZ.js +22 -0
  217. package/frontend/dist/js/react-vendor-N--QU9DW.js +8 -0
  218. package/frontend/dist/js/router-vendor-B-t91v39.js +3 -0
  219. package/frontend/dist/js/ui-vendor-VxSCY_bv.js +177 -0
  220. package/frontend/dist/js/utils-vendor-DNzxLBGx.js +6 -0
  221. package/frontend/dist/logo-dark.png +0 -0
  222. package/frontend/dist/logo-light.png +0 -0
  223. package/frontend/dist/logo.svg +14 -0
  224. package/package.json +128 -0
  225. package/plugins/anthropic.json +25 -0
  226. package/plugins/elevenlabs.json +58 -0
  227. package/plugins/gemini.json +57 -0
  228. package/plugins/github.json +23 -0
  229. package/plugins/groq.json +25 -0
  230. package/plugins/mistral.json +73 -0
  231. package/plugins/openai-tts.json +38 -0
  232. package/plugins/openai.json +132 -0
  233. package/plugins/openrouter.json +353 -0
@@ -0,0 +1,450 @@
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 axios from 'axios';
18
+ import { getErrorMessage, } from '../types/index.js';
19
+ class OllamaService {
20
+ constructor() {
21
+ this.baseUrl = process.env.OLLAMA_BASE_URL || 'http://localhost:11434';
22
+ // Use environment variable for timeout, default to 5 minutes for large models on multiple GPUs
23
+ const timeout = parseInt(process.env.OLLAMA_TIMEOUT || '300000');
24
+ // Use extended timeout for model operations (pulling, loading), default to 15 minutes
25
+ const longOperationTimeout = parseInt(process.env.OLLAMA_LONG_OPERATION_TIMEOUT || '900000');
26
+ this.client = axios.create({
27
+ baseURL: this.baseUrl,
28
+ timeout: timeout,
29
+ headers: {
30
+ 'Content-Type': 'application/json',
31
+ },
32
+ });
33
+ this.longOperationClient = axios.create({
34
+ baseURL: this.baseUrl,
35
+ timeout: longOperationTimeout,
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ });
40
+ }
41
+ async isHealthy() {
42
+ try {
43
+ const response = await this.client.get('/');
44
+ return response.status === 200;
45
+ }
46
+ catch (error) {
47
+ if (error &&
48
+ typeof error === 'object' &&
49
+ 'code' in error &&
50
+ error.code === 'ECONNREFUSED') {
51
+ console.warn('Ollama service is not running. Please start it with: ollama serve');
52
+ }
53
+ else {
54
+ console.error('Ollama health check failed:', getErrorMessage(error, 'Unknown error'));
55
+ }
56
+ return false;
57
+ }
58
+ }
59
+ async getModels() {
60
+ try {
61
+ console.log('Fetching models from Ollama...');
62
+ const response = await this.client.get('/api/tags');
63
+ console.log('Ollama response:', JSON.stringify(response.data, null, 2));
64
+ const models = response.data.models || [];
65
+ console.log(`Found ${models.length} models`);
66
+ return models;
67
+ }
68
+ catch (error) {
69
+ if (error &&
70
+ typeof error === 'object' &&
71
+ 'code' in error &&
72
+ error.code === 'ECONNREFUSED') {
73
+ console.error('Cannot connect to Ollama. Please ensure Ollama is running with: ollama serve');
74
+ throw new Error('Ollama service is not running. Please start it with: ollama serve');
75
+ }
76
+ else {
77
+ console.error('Failed to fetch models:', getErrorMessage(error, 'Unknown error'));
78
+ throw new Error('Failed to fetch available models from Ollama');
79
+ }
80
+ }
81
+ }
82
+ async generateResponse(request) {
83
+ try {
84
+ // Use long operation client for generation as it may need to load model on first use
85
+ const response = await this.longOperationClient.post('/api/generate', {
86
+ ...request,
87
+ stream: false, // For non-streaming responses
88
+ });
89
+ return response.data;
90
+ }
91
+ catch (error) {
92
+ console.error('Failed to generate response:', error);
93
+ throw new Error(getErrorMessage(error, 'Failed to generate response'));
94
+ }
95
+ }
96
+ async generateStreamResponse(request, onChunk, onError, onComplete) {
97
+ try {
98
+ // Use long operation client for streaming generation as it may need to load model on first use
99
+ const response = await this.longOperationClient.post('/api/generate', {
100
+ ...request,
101
+ stream: true,
102
+ }, {
103
+ responseType: 'stream',
104
+ });
105
+ let buffer = '';
106
+ response.data.on('data', (chunk) => {
107
+ buffer += chunk.toString();
108
+ const lines = buffer.split('\n');
109
+ buffer = lines.pop() || '';
110
+ for (const line of lines) {
111
+ if (line.trim()) {
112
+ try {
113
+ const data = JSON.parse(line);
114
+ onChunk(data);
115
+ if (data.done) {
116
+ onComplete();
117
+ return;
118
+ }
119
+ }
120
+ catch (parseError) {
121
+ console.error('Failed to parse chunk:', parseError);
122
+ }
123
+ }
124
+ }
125
+ });
126
+ response.data.on('error', (error) => {
127
+ onError(error);
128
+ });
129
+ response.data.on('end', () => {
130
+ onComplete();
131
+ });
132
+ }
133
+ catch (error) {
134
+ console.error('Failed to generate stream response:', error);
135
+ onError(new Error(getErrorMessage(error, 'Failed to generate stream response')));
136
+ }
137
+ }
138
+ async pullModel(modelName) {
139
+ try {
140
+ console.log(`Pulling model: ${modelName}`);
141
+ await this.longOperationClient.post('/api/pull', {
142
+ name: modelName,
143
+ });
144
+ console.log(`Successfully pulled model: ${modelName}`);
145
+ }
146
+ catch (error) {
147
+ console.error('Failed to pull model:', String(modelName), getErrorMessage(error, 'Unknown error'));
148
+ throw new Error(getErrorMessage(error, 'Failed to pull model'));
149
+ }
150
+ }
151
+ async pullModelStream(modelName, onProgress, onError, onComplete) {
152
+ try {
153
+ console.log(`Pulling model with streaming: ${modelName}`);
154
+ const response = await this.longOperationClient.post('/api/pull', {
155
+ name: modelName,
156
+ stream: true,
157
+ }, {
158
+ responseType: 'stream',
159
+ });
160
+ let buffer = '';
161
+ response.data.on('data', (chunk) => {
162
+ buffer += chunk.toString();
163
+ const lines = buffer.split('\n');
164
+ buffer = lines.pop() || '';
165
+ for (const line of lines) {
166
+ if (line.trim()) {
167
+ try {
168
+ const data = JSON.parse(line);
169
+ // Calculate percentage if total and completed are available
170
+ let percent;
171
+ if (data.total && data.completed) {
172
+ percent = Math.round((data.completed / data.total) * 100);
173
+ }
174
+ onProgress({
175
+ status: data.status || 'unknown',
176
+ digest: data.digest,
177
+ total: data.total,
178
+ completed: data.completed,
179
+ percent,
180
+ });
181
+ // Check if pull is complete
182
+ if (data.status === 'success' ||
183
+ (!data.status && data.completed === data.total)) {
184
+ onComplete();
185
+ return;
186
+ }
187
+ }
188
+ catch (parseError) {
189
+ console.error('Failed to parse pull progress chunk:', parseError);
190
+ }
191
+ }
192
+ }
193
+ });
194
+ response.data.on('error', (error) => {
195
+ onError(error);
196
+ });
197
+ response.data.on('end', () => {
198
+ onComplete();
199
+ });
200
+ }
201
+ catch (error) {
202
+ console.error('Failed to pull model with streaming:', error);
203
+ onError(new Error(getErrorMessage(error, 'Failed to pull model with streaming')));
204
+ }
205
+ }
206
+ async deleteModel(modelName) {
207
+ try {
208
+ await this.client.delete('/api/delete', {
209
+ data: { name: modelName },
210
+ });
211
+ }
212
+ catch (error) {
213
+ console.error('Failed to delete model:', error);
214
+ throw new Error(getErrorMessage(error, 'Failed to delete model'));
215
+ }
216
+ }
217
+ async showModel(modelName, verbose = false) {
218
+ try {
219
+ const response = await this.client.post('/api/show', {
220
+ model: modelName,
221
+ verbose,
222
+ });
223
+ return response.data;
224
+ }
225
+ catch (error) {
226
+ console.error('Failed to show model:', error);
227
+ throw new Error(getErrorMessage(error, 'Failed to show model'));
228
+ }
229
+ }
230
+ async createModel(payload) {
231
+ try {
232
+ await this.client.post('/api/create', payload);
233
+ }
234
+ catch (error) {
235
+ console.error('Failed to create model:', error);
236
+ throw new Error(getErrorMessage(error, 'Failed to create model'));
237
+ }
238
+ }
239
+ async copyModel(source, destination) {
240
+ try {
241
+ await this.client.post('/api/copy', { source, destination });
242
+ }
243
+ catch (error) {
244
+ console.error('Failed to copy model:', error);
245
+ throw new Error(getErrorMessage(error, 'Failed to copy model'));
246
+ }
247
+ }
248
+ async pushModel(modelName) {
249
+ try {
250
+ await this.client.post('/api/push', { model: modelName });
251
+ }
252
+ catch (error) {
253
+ console.error('Failed to push model:', error);
254
+ throw new Error(getErrorMessage(error, 'Failed to push model'));
255
+ }
256
+ }
257
+ async generateEmbeddings(payload) {
258
+ try {
259
+ const response = await this.client.post('/api/embed', payload);
260
+ return response.data;
261
+ }
262
+ catch (error) {
263
+ console.error('Failed to generate embeddings:', error);
264
+ throw new Error(getErrorMessage(error, 'Failed to generate embeddings'));
265
+ }
266
+ }
267
+ async listRunningModels() {
268
+ try {
269
+ const response = await this.client.get('/api/ps');
270
+ return response.data;
271
+ }
272
+ catch (error) {
273
+ console.error('Failed to list running models:', error);
274
+ throw new Error(getErrorMessage(error, 'Failed to list running models'));
275
+ }
276
+ }
277
+ async getVersion() {
278
+ try {
279
+ const response = await this.client.get('/api/version');
280
+ return response.data;
281
+ }
282
+ catch (error) {
283
+ console.error('Failed to get version:', error);
284
+ throw new Error(getErrorMessage(error, 'Failed to get Ollama version'));
285
+ }
286
+ }
287
+ // Chat completion methods
288
+ async generateChatResponse(request) {
289
+ try {
290
+ // Use long operation client for chat generation as it may need to load model on first use
291
+ const response = await this.longOperationClient.post('/api/chat', {
292
+ ...request,
293
+ stream: false,
294
+ });
295
+ return response.data;
296
+ }
297
+ catch (error) {
298
+ console.error('Failed to generate chat response:', error);
299
+ throw new Error(getErrorMessage(error, 'Failed to generate chat response'));
300
+ }
301
+ }
302
+ async generateChatStreamResponse(request, onChunk, onError, onComplete) {
303
+ try {
304
+ // Use long operation client for chat streaming as it may need to load model on first use
305
+ const response = await this.longOperationClient.post('/api/chat', {
306
+ ...request,
307
+ stream: true,
308
+ }, {
309
+ responseType: 'stream',
310
+ });
311
+ let buffer = '';
312
+ response.data.on('data', (chunk) => {
313
+ buffer += chunk.toString();
314
+ const lines = buffer.split('\n');
315
+ buffer = lines.pop() || '';
316
+ for (const line of lines) {
317
+ if (line.trim()) {
318
+ try {
319
+ const data = JSON.parse(line);
320
+ onChunk(data);
321
+ if (data.done) {
322
+ onComplete();
323
+ return;
324
+ }
325
+ }
326
+ catch (parseError) {
327
+ console.error('Failed to parse chunk:', parseError);
328
+ }
329
+ }
330
+ }
331
+ });
332
+ response.data.on('error', (error) => {
333
+ onError(error);
334
+ });
335
+ response.data.on('end', () => {
336
+ onComplete();
337
+ });
338
+ }
339
+ catch (error) {
340
+ console.error('Failed to generate chat stream response:', error);
341
+ onError(new Error(getErrorMessage(error, 'Failed to generate chat stream response')));
342
+ }
343
+ }
344
+ // Blob management methods
345
+ async checkBlobExists(digest) {
346
+ try {
347
+ const response = await this.client.head(`/api/blobs/${digest}`);
348
+ return response.status === 200;
349
+ }
350
+ catch (error) {
351
+ if (error && typeof error === 'object' && 'response' in error) {
352
+ const httpError = error;
353
+ if (httpError.response?.status === 404) {
354
+ return false;
355
+ }
356
+ }
357
+ console.error('Failed to check blob:', error);
358
+ throw new Error(getErrorMessage(error, 'Failed to check blob existence'));
359
+ }
360
+ }
361
+ async pushBlob(digest, data) {
362
+ // Only allow lowercase hex strings of length 64 (SHA256)
363
+ if (!/^[a-f0-9]{64}$/.test(digest)) {
364
+ throw new Error('Invalid digest format');
365
+ }
366
+ try {
367
+ await this.client.post(`/api/blobs/${digest}`, data, {
368
+ headers: {
369
+ 'Content-Type': 'application/octet-stream',
370
+ },
371
+ });
372
+ }
373
+ catch (error) {
374
+ console.error('Failed to push blob:', error);
375
+ throw new Error(getErrorMessage(error, 'Failed to push blob'));
376
+ }
377
+ }
378
+ // Legacy embeddings endpoint (deprecated but still supported)
379
+ async generateLegacyEmbeddings(payload) {
380
+ try {
381
+ const response = await this.client.post('/api/embeddings', payload);
382
+ return response.data;
383
+ }
384
+ catch (error) {
385
+ console.error('Failed to generate legacy embeddings:', error);
386
+ throw new Error(getErrorMessage(error, 'Failed to generate legacy embeddings'));
387
+ }
388
+ }
389
+ // Pull all models
390
+ async pullAllModels() {
391
+ const results = [];
392
+ try {
393
+ const models = await this.getModels();
394
+ for (const model of models) {
395
+ try {
396
+ await this.pullModel(model.name);
397
+ results.push({ name: model.name, success: true });
398
+ }
399
+ catch (_err) {
400
+ results.push({ name: model.name, success: false });
401
+ }
402
+ }
403
+ return { success: true, results };
404
+ }
405
+ catch (_error) {
406
+ return { success: false, results };
407
+ }
408
+ }
409
+ // Pull all models with progress streaming
410
+ async pullAllModelsStream(onProgress, onComplete, onError) {
411
+ try {
412
+ const models = await this.getModels();
413
+ const total = models.length;
414
+ for (let i = 0; i < models.length; i++) {
415
+ const model = models[i];
416
+ try {
417
+ onProgress({
418
+ current: i + 1,
419
+ total,
420
+ modelName: model.name,
421
+ status: 'starting',
422
+ });
423
+ await this.pullModel(model.name);
424
+ onProgress({
425
+ current: i + 1,
426
+ total,
427
+ modelName: model.name,
428
+ status: 'success',
429
+ });
430
+ }
431
+ catch (err) {
432
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
433
+ onProgress({
434
+ current: i + 1,
435
+ total,
436
+ modelName: model.name,
437
+ status: 'error',
438
+ error: errorMessage,
439
+ });
440
+ }
441
+ }
442
+ onComplete();
443
+ }
444
+ catch (error) {
445
+ onError(getErrorMessage(error, 'Failed to pull all models'));
446
+ }
447
+ }
448
+ }
449
+ export default new OllamaService();
450
+ //# sourceMappingURL=ollamaService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollamaService.js","sourceRoot":"","sources":["../../src/services/ollamaService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { Persona, CreatePersonaRequest, UpdatePersonaRequest, PersonaExport } from '../types/index.js';
2
+ export declare class PersonaService {
3
+ /**
4
+ * Get all personas for a user with optional advanced features
5
+ */
6
+ getPersonas(userId?: string): Promise<Persona[]>;
7
+ /**
8
+ * Get advanced features for a persona if they exist
9
+ */
10
+ private getAdvancedFeatures;
11
+ /**
12
+ * Get all personas for a user (original method)
13
+ */
14
+ getBasicPersonas(userId?: string): Promise<Persona[]>;
15
+ /**
16
+ * Get a specific persona by ID with optional advanced features
17
+ */
18
+ getPersonaById(id: string, userId?: string): Promise<Persona | null>;
19
+ /**
20
+ * Get a specific persona by ID (basic version)
21
+ */
22
+ getBasicPersonaById(id: string, userId?: string): Promise<Persona | null>;
23
+ /**
24
+ * Create a new persona with validation
25
+ */
26
+ createPersona(data: CreatePersonaRequest, userId?: string): Promise<Persona>;
27
+ /**
28
+ * Initialize advanced features for a persona
29
+ */
30
+ private initializeAdvancedFeatures;
31
+ /**
32
+ * Update an existing persona with validation
33
+ */
34
+ updatePersona(id: string, data: UpdatePersonaRequest, userId?: string): Promise<Persona | null>;
35
+ /**
36
+ * Delete a persona
37
+ */
38
+ deletePersona(id: string, userId?: string): Promise<boolean>;
39
+ /**
40
+ * Export a persona as JSON
41
+ */
42
+ exportPersona(id: string, userId?: string): Promise<PersonaExport>;
43
+ /**
44
+ * Import a persona from JSON
45
+ */
46
+ importPersona(personaData: PersonaExport, userId?: string): Promise<Persona>;
47
+ /**
48
+ * Get personas count for a user
49
+ */
50
+ getPersonasCount(userId?: string): Promise<number>;
51
+ /**
52
+ * Get default persona parameters
53
+ */
54
+ getDefaultParameters(): {
55
+ temperature: number;
56
+ top_p: number;
57
+ top_k: number;
58
+ context_window: number;
59
+ max_tokens: number;
60
+ system_prompt: string;
61
+ repeat_penalty: number;
62
+ presence_penalty: number;
63
+ frequency_penalty: number;
64
+ };
65
+ }
66
+ export declare const personaService: PersonaService;
67
+ //# sourceMappingURL=personaService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personaService.d.ts","sourceRoot":"","sources":["../../src/services/personaService.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,cAAc;IACzB;;OAEG;IACG,WAAW,CAAC,MAAM,GAAE,MAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAsBjE;;OAEG;YACW,mBAAmB;IAiHjC;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,MAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAItE;;OAEG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAe1B;;OAEG;IACG,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI1B;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,oBAAoB,EAC1B,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,CAAC;IAqFnB;;OAEG;YACW,0BAA0B;IA+BxC;;OAEG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,oBAAoB,EAC1B,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgF1B;;OAEG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,CAAC;IASnB;;OAEG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,aAAa,CAAC;IAsBzB;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,aAAa,EAC1B,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,OAAO,CAAC;IAgCnB;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE;;OAEG;IACH,oBAAoB;;;;;;;;;;;CAarB;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}