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,505 @@
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 { Router } from 'express';
18
+ import rateLimit from 'express-rate-limit';
19
+ import { personaService } from '../services/personaService.js';
20
+ import { getErrorMessage } from '../types/index.js';
21
+ const router = Router();
22
+ // Rate limiting for persona operations (temporarily disabled for development)
23
+ const personaRateLimit = rateLimit({
24
+ windowMs: 15 * 60 * 1000, // 15 minutes
25
+ max: 10000, // Very high limit for development
26
+ message: {
27
+ success: false,
28
+ error: 'Too many persona requests from this IP, please try again later.',
29
+ },
30
+ standardHeaders: true,
31
+ legacyHeaders: false,
32
+ });
33
+ // More restrictive rate limiting for create/update/delete operations
34
+ const personaWriteRateLimit = rateLimit({
35
+ windowMs: 15 * 60 * 1000, // 15 minutes
36
+ max: 30, // Limit each IP to 30 write operations per windowMs
37
+ message: {
38
+ success: false,
39
+ error: 'Too many persona write operations from this IP, please try again later.',
40
+ },
41
+ standardHeaders: true,
42
+ legacyHeaders: false,
43
+ });
44
+ /**
45
+ * Get all personas for the current user
46
+ */
47
+ router.get('/', personaRateLimit, async (req, res) => {
48
+ try {
49
+ const userId = req.user?.userId || 'default';
50
+ const personas = await personaService.getPersonas(userId);
51
+ res.json({
52
+ success: true,
53
+ data: personas,
54
+ message: `Found ${personas.length} personas`,
55
+ });
56
+ }
57
+ catch (error) {
58
+ res.status(500).json({
59
+ success: false,
60
+ error: getErrorMessage(error, 'Failed to fetch personas'),
61
+ });
62
+ }
63
+ });
64
+ /**
65
+ * Get a specific persona by ID
66
+ */
67
+ router.get('/:id', personaRateLimit, async (req, res) => {
68
+ try {
69
+ const { id } = req.params;
70
+ const userId = req.user?.userId || 'default';
71
+ const persona = await personaService.getPersonaById(id, userId);
72
+ if (!persona) {
73
+ res.status(404).json({
74
+ success: false,
75
+ error: 'Persona not found',
76
+ });
77
+ return;
78
+ }
79
+ res.json({
80
+ success: true,
81
+ data: persona,
82
+ });
83
+ }
84
+ catch (error) {
85
+ res.status(500).json({
86
+ success: false,
87
+ error: getErrorMessage(error, 'Failed to fetch persona'),
88
+ });
89
+ }
90
+ });
91
+ /**
92
+ * Create a new persona
93
+ */
94
+ router.post('/', personaWriteRateLimit, async (req, res) => {
95
+ try {
96
+ const userId = req.user?.userId || 'default';
97
+ const persona = await personaService.createPersona(req.body, userId);
98
+ res.status(201).json({
99
+ success: true,
100
+ data: persona,
101
+ message: 'Persona created successfully',
102
+ });
103
+ }
104
+ catch (error) {
105
+ res.status(400).json({
106
+ success: false,
107
+ error: getErrorMessage(error, 'Failed to create persona'),
108
+ });
109
+ }
110
+ });
111
+ /**
112
+ * Update an existing persona
113
+ */
114
+ router.put('/:id', personaWriteRateLimit, async (req, res) => {
115
+ try {
116
+ const { id } = req.params;
117
+ const userId = req.user?.userId || 'default';
118
+ const persona = await personaService.updatePersona(id, req.body, userId);
119
+ if (!persona) {
120
+ res.status(404).json({
121
+ success: false,
122
+ error: 'Persona not found',
123
+ });
124
+ return;
125
+ }
126
+ res.json({
127
+ success: true,
128
+ data: persona,
129
+ message: 'Persona updated successfully',
130
+ });
131
+ }
132
+ catch (error) {
133
+ res.status(400).json({
134
+ success: false,
135
+ error: getErrorMessage(error, 'Failed to update persona'),
136
+ });
137
+ }
138
+ });
139
+ /**
140
+ * Delete a persona
141
+ */
142
+ router.delete('/:id', personaWriteRateLimit, async (req, res) => {
143
+ try {
144
+ const { id } = req.params;
145
+ const userId = req.user?.userId || 'default';
146
+ const success = await personaService.deletePersona(id, userId);
147
+ if (!success) {
148
+ res.status(404).json({
149
+ success: false,
150
+ error: 'Persona not found',
151
+ });
152
+ return;
153
+ }
154
+ res.json({
155
+ success: true,
156
+ message: 'Persona deleted successfully',
157
+ });
158
+ }
159
+ catch (error) {
160
+ res.status(500).json({
161
+ success: false,
162
+ error: getErrorMessage(error, 'Failed to delete persona'),
163
+ });
164
+ }
165
+ });
166
+ /**
167
+ * Export a persona as JSON
168
+ */
169
+ router.get('/:id/export', personaRateLimit, async (req, res) => {
170
+ try {
171
+ const { id } = req.params;
172
+ const userId = req.user?.userId || 'default';
173
+ const personaExport = await personaService.exportPersona(id, userId);
174
+ // Set headers for file download
175
+ res.setHeader('Content-Type', 'application/json');
176
+ res.setHeader('Content-Disposition', `attachment; filename="${personaExport.name}.json"`);
177
+ res.json(personaExport);
178
+ }
179
+ catch (error) {
180
+ res.status(500).json({
181
+ success: false,
182
+ error: getErrorMessage(error, 'Failed to export persona'),
183
+ });
184
+ }
185
+ });
186
+ /**
187
+ * Import a persona from JSON
188
+ */
189
+ router.post('/import', personaWriteRateLimit, async (req, res) => {
190
+ try {
191
+ const userId = req.user?.userId || 'default';
192
+ const persona = await personaService.importPersona(req.body, userId);
193
+ res.status(201).json({
194
+ success: true,
195
+ data: persona,
196
+ message: 'Persona imported successfully',
197
+ });
198
+ }
199
+ catch (error) {
200
+ res.status(400).json({
201
+ success: false,
202
+ error: getErrorMessage(error, 'Failed to import persona'),
203
+ });
204
+ }
205
+ });
206
+ /**
207
+ * Get personas count for the current user
208
+ */
209
+ router.get('/stats/count', personaRateLimit, async (req, res) => {
210
+ try {
211
+ const userId = req.user?.userId || 'default';
212
+ const count = await personaService.getPersonasCount(userId);
213
+ res.json({
214
+ success: true,
215
+ data: { count },
216
+ });
217
+ }
218
+ catch (error) {
219
+ res.status(500).json({
220
+ success: false,
221
+ error: getErrorMessage(error, 'Failed to get personas count'),
222
+ });
223
+ }
224
+ });
225
+ /**
226
+ * Get default persona parameters
227
+ */
228
+ router.get('/defaults/parameters', personaRateLimit, async (req, res) => {
229
+ try {
230
+ const defaults = personaService.getDefaultParameters();
231
+ res.json({
232
+ success: true,
233
+ data: defaults,
234
+ });
235
+ }
236
+ catch (error) {
237
+ res.status(500).json({
238
+ success: false,
239
+ error: getErrorMessage(error, 'Failed to get default parameters'),
240
+ });
241
+ }
242
+ });
243
+ /**
244
+ * Download/Export a specific persona as JSON file
245
+ */
246
+ router.get('/:id/download', personaRateLimit, async (req, res) => {
247
+ try {
248
+ const { id } = req.params;
249
+ const userId = req.user?.userId || 'default';
250
+ const persona = await personaService.getPersonaById(id, userId);
251
+ if (!persona) {
252
+ res.status(404).json({
253
+ success: false,
254
+ error: 'Persona not found',
255
+ });
256
+ return;
257
+ }
258
+ // Create export data that matches PersonaExport interface
259
+ const exportData = {
260
+ name: persona.name,
261
+ description: persona.description,
262
+ model: persona.model,
263
+ params: persona.parameters, // Use 'params' to match PersonaExport interface
264
+ avatar: persona.avatar,
265
+ background: persona.background,
266
+ };
267
+ // Set headers for file download
268
+ const fileName = `${persona.name.replace(/[^a-zA-Z0-9]/g, '_')}_persona.json`;
269
+ res.setHeader('Content-Type', 'application/json');
270
+ res.setHeader('Content-Disposition', `attachment; filename="${fileName}"`);
271
+ // Send raw JSON, not wrapped in API response
272
+ res.send(JSON.stringify(exportData, null, 2));
273
+ }
274
+ catch (error) {
275
+ res.status(500).json({
276
+ success: false,
277
+ error: getErrorMessage(error, 'Failed to download persona'),
278
+ });
279
+ }
280
+ });
281
+ // === Advanced Features Endpoints ===
282
+ /**
283
+ * Get memory status for a persona
284
+ */
285
+ router.get('/:id/memory/status', personaRateLimit, async (req, res) => {
286
+ try {
287
+ const { id } = req.params;
288
+ const userId = req.user?.userId || 'default';
289
+ // Import memory service dynamically to avoid dependency issues
290
+ const { memoryService } = await import('../services/memoryService.js');
291
+ const status = await memoryService.getMemoryStatus(userId, id);
292
+ res.json({
293
+ success: true,
294
+ data: status,
295
+ });
296
+ }
297
+ catch (error) {
298
+ res.status(500).json({
299
+ success: false,
300
+ error: getErrorMessage(error, 'Failed to get memory status'),
301
+ });
302
+ }
303
+ });
304
+ /**
305
+ * Wipe memories for a persona
306
+ */
307
+ router.delete('/:id/memory', personaWriteRateLimit, async (req, res) => {
308
+ try {
309
+ const { id } = req.params;
310
+ const userId = req.user?.userId || 'default';
311
+ const { memoryService } = await import('../services/memoryService.js');
312
+ const deletedCount = await memoryService.wipeMemories(userId, id);
313
+ res.json({
314
+ success: true,
315
+ data: { deleted_count: deletedCount },
316
+ message: `Deleted ${deletedCount} memories`,
317
+ });
318
+ }
319
+ catch (error) {
320
+ res.status(500).json({
321
+ success: false,
322
+ error: getErrorMessage(error, 'Failed to wipe memories'),
323
+ });
324
+ }
325
+ });
326
+ /**
327
+ * Backup persona
328
+ */
329
+ router.get('/:id/backup', personaRateLimit, async (req, res) => {
330
+ try {
331
+ const { id } = req.params;
332
+ const userId = req.user?.userId || 'default';
333
+ const persona = await personaService.getPersonaById(id, userId);
334
+ if (!persona) {
335
+ res.status(404).json({ success: false, error: 'Persona not found' });
336
+ return;
337
+ }
338
+ const backupData = {
339
+ persona,
340
+ backup_date: new Date().toISOString(),
341
+ user_id: userId,
342
+ };
343
+ const fileName = `${persona.name.replace(/[^a-zA-Z0-9]/g, '_')}_backup.json`;
344
+ res.setHeader('Content-Type', 'application/json');
345
+ res.setHeader('Content-Disposition', `attachment; filename="${fileName}"`);
346
+ res.send(JSON.stringify(backupData, null, 2));
347
+ }
348
+ catch (error) {
349
+ res.status(500).json({
350
+ success: false,
351
+ error: getErrorMessage(error, 'Failed to backup persona'),
352
+ });
353
+ }
354
+ });
355
+ /**
356
+ * Get detailed memory statistics for a persona
357
+ */
358
+ router.get('/:id/memory/stats', personaRateLimit, async (req, res) => {
359
+ try {
360
+ const { id } = req.params;
361
+ const userId = req.user?.userId || 'default';
362
+ const { memoryService } = await import('../services/memoryService.js');
363
+ const stats = await memoryService.getMemoryStats(userId, id);
364
+ res.json({
365
+ success: true,
366
+ data: stats,
367
+ });
368
+ }
369
+ catch (error) {
370
+ res.status(500).json({
371
+ success: false,
372
+ error: getErrorMessage(error, 'Failed to get memory statistics'),
373
+ });
374
+ }
375
+ });
376
+ /**
377
+ * Consolidate similar memories for a persona
378
+ */
379
+ router.post('/:id/memory/consolidate', personaWriteRateLimit, async (req, res) => {
380
+ try {
381
+ const { id } = req.params;
382
+ const userId = req.user?.userId || 'default';
383
+ const { similarity_threshold = 0.8 } = req.body;
384
+ // Get the persona to find its embedding model
385
+ const persona = await personaService.getPersonaById(id, userId);
386
+ if (!persona) {
387
+ res.status(404).json({
388
+ success: false,
389
+ error: 'Persona not found',
390
+ });
391
+ return;
392
+ }
393
+ const embeddingModel = persona.embedding_model || 'nomic-embed-text';
394
+ const { memoryService } = await import('../services/memoryService.js');
395
+ const result = await memoryService.consolidateMemories(userId, id, embeddingModel, similarity_threshold);
396
+ res.json({
397
+ success: true,
398
+ data: result,
399
+ message: `Consolidated ${result.consolidated} memory groups, deleted ${result.deleted} redundant memories`,
400
+ });
401
+ }
402
+ catch (error) {
403
+ res.status(500).json({
404
+ success: false,
405
+ error: getErrorMessage(error, 'Failed to consolidate memories'),
406
+ });
407
+ }
408
+ });
409
+ /**
410
+ * Apply decay to all memories for a persona
411
+ */
412
+ router.post('/:id/memory/decay', personaWriteRateLimit, async (req, res) => {
413
+ try {
414
+ const { id } = req.params;
415
+ const userId = req.user?.userId || 'default';
416
+ const { memoryService } = await import('../services/memoryService.js');
417
+ const updated = await memoryService.applyGlobalDecay(userId, id);
418
+ res.json({
419
+ success: true,
420
+ data: { updated_count: updated },
421
+ message: `Applied decay to ${updated} memories`,
422
+ });
423
+ }
424
+ catch (error) {
425
+ res.status(500).json({
426
+ success: false,
427
+ error: getErrorMessage(error, 'Failed to apply memory decay'),
428
+ });
429
+ }
430
+ });
431
+ /**
432
+ * Get core memories (important facts, preferences, instructions)
433
+ */
434
+ router.get('/:id/memory/core', personaRateLimit, async (req, res) => {
435
+ try {
436
+ const { id } = req.params;
437
+ const userId = req.user?.userId || 'default';
438
+ const limit = parseInt(req.query.limit) || 10;
439
+ const { memoryService } = await import('../services/memoryService.js');
440
+ const memories = await memoryService.getCoreMemories(userId, id, limit);
441
+ res.json({
442
+ success: true,
443
+ data: memories,
444
+ message: `Found ${memories.length} core memories`,
445
+ });
446
+ }
447
+ catch (error) {
448
+ res.status(500).json({
449
+ success: false,
450
+ error: getErrorMessage(error, 'Failed to get core memories'),
451
+ });
452
+ }
453
+ });
454
+ /**
455
+ * Export persona DNA
456
+ */
457
+ router.get('/:id/export/dna', personaRateLimit, async (req, res) => {
458
+ try {
459
+ const { id } = req.params;
460
+ const userId = req.user?.userId || 'default';
461
+ const persona = await personaService.getPersonaById(id, userId);
462
+ if (!persona) {
463
+ res.status(404).json({ success: false, error: 'Persona not found' });
464
+ return;
465
+ }
466
+ // Try to get memories and state if they exist
467
+ let memories = [];
468
+ let adaptationLog = [];
469
+ try {
470
+ const { memoryService } = await import('../services/memoryService.js');
471
+ const { mutationEngineService } = await import('../services/mutationEngineService.js');
472
+ memories = await memoryService.getMemories(userId, id, 1000, 0);
473
+ const state = await mutationEngineService.getPersonaState(id, userId);
474
+ adaptationLog = state?.mutation_log || [];
475
+ }
476
+ catch (_error) {
477
+ // Services might not be available, continue with empty data
478
+ }
479
+ const dnaData = {
480
+ persona,
481
+ memories,
482
+ adaptation_log: adaptationLog,
483
+ export_metadata: {
484
+ exported_at: Date.now(),
485
+ user_id: userId,
486
+ version: '1.0.0',
487
+ checksum: Buffer.from(JSON.stringify(persona))
488
+ .toString('base64')
489
+ .slice(0, 16),
490
+ },
491
+ };
492
+ const fileName = `${persona.name.replace(/[^a-zA-Z0-9]/g, '_')}_DNA.json`;
493
+ res.setHeader('Content-Type', 'application/json');
494
+ res.setHeader('Content-Disposition', `attachment; filename="${fileName}"`);
495
+ res.send(JSON.stringify(dnaData, null, 2));
496
+ }
497
+ catch (error) {
498
+ res.status(500).json({
499
+ success: false,
500
+ error: getErrorMessage(error, 'Failed to export DNA'),
501
+ });
502
+ }
503
+ });
504
+ export default router;
505
+ //# sourceMappingURL=personas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/routes/personas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AAmCA,QAAA,MAAM,MAAM,4CAAmB,CAAC;AA+dhC,eAAe,MAAM,CAAC"}