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.
- package/LICENSE +201 -0
- package/README.md +204 -0
- package/backend/dist/db.d.ts +19 -0
- package/backend/dist/db.d.ts.map +1 -0
- package/backend/dist/db.js +355 -0
- package/backend/dist/db.js.map +1 -0
- package/backend/dist/env.d.ts +2 -0
- package/backend/dist/env.d.ts.map +1 -0
- package/backend/dist/env.js +22 -0
- package/backend/dist/env.js.map +1 -0
- package/backend/dist/index.d.ts +4 -0
- package/backend/dist/index.d.ts.map +1 -0
- package/backend/dist/index.js +751 -0
- package/backend/dist/index.js.map +1 -0
- package/backend/dist/middleware/auth.d.ts +18 -0
- package/backend/dist/middleware/auth.d.ts.map +1 -0
- package/backend/dist/middleware/auth.js +98 -0
- package/backend/dist/middleware/auth.js.map +1 -0
- package/backend/dist/middleware/index.d.ts +5 -0
- package/backend/dist/middleware/index.d.ts.map +1 -0
- package/backend/dist/middleware/index.js +62 -0
- package/backend/dist/middleware/index.js.map +1 -0
- package/backend/dist/models/personaModel.d.ts +37 -0
- package/backend/dist/models/personaModel.d.ts.map +1 -0
- package/backend/dist/models/personaModel.js +269 -0
- package/backend/dist/models/personaModel.js.map +1 -0
- package/backend/dist/models/userModel.d.ts +86 -0
- package/backend/dist/models/userModel.d.ts.map +1 -0
- package/backend/dist/models/userModel.js +212 -0
- package/backend/dist/models/userModel.js.map +1 -0
- package/backend/dist/routes/auth.d.ts +3 -0
- package/backend/dist/routes/auth.d.ts.map +1 -0
- package/backend/dist/routes/auth.js +389 -0
- package/backend/dist/routes/auth.js.map +1 -0
- package/backend/dist/routes/chat.d.ts +3 -0
- package/backend/dist/routes/chat.d.ts.map +1 -0
- package/backend/dist/routes/chat.js +767 -0
- package/backend/dist/routes/chat.js.map +1 -0
- package/backend/dist/routes/documents.d.ts +3 -0
- package/backend/dist/routes/documents.d.ts.map +1 -0
- package/backend/dist/routes/documents.js +244 -0
- package/backend/dist/routes/documents.js.map +1 -0
- package/backend/dist/routes/ollama.d.ts +3 -0
- package/backend/dist/routes/ollama.d.ts.map +1 -0
- package/backend/dist/routes/ollama.js +549 -0
- package/backend/dist/routes/ollama.js.map +1 -0
- package/backend/dist/routes/personas.d.ts +3 -0
- package/backend/dist/routes/personas.d.ts.map +1 -0
- package/backend/dist/routes/personas.js +505 -0
- package/backend/dist/routes/personas.js.map +1 -0
- package/backend/dist/routes/plugins.d.ts +3 -0
- package/backend/dist/routes/plugins.d.ts.map +1 -0
- package/backend/dist/routes/plugins.js +417 -0
- package/backend/dist/routes/plugins.js.map +1 -0
- package/backend/dist/routes/preferences.d.ts +3 -0
- package/backend/dist/routes/preferences.d.ts.map +1 -0
- package/backend/dist/routes/preferences.js +303 -0
- package/backend/dist/routes/preferences.js.map +1 -0
- package/backend/dist/routes/tts.d.ts +3 -0
- package/backend/dist/routes/tts.d.ts.map +1 -0
- package/backend/dist/routes/tts.js +304 -0
- package/backend/dist/routes/tts.js.map +1 -0
- package/backend/dist/routes/users.d.ts +3 -0
- package/backend/dist/routes/users.d.ts.map +1 -0
- package/backend/dist/routes/users.js +246 -0
- package/backend/dist/routes/users.js.map +1 -0
- package/backend/dist/services/authService.d.ts +51 -0
- package/backend/dist/services/authService.d.ts.map +1 -0
- package/backend/dist/services/authService.js +153 -0
- package/backend/dist/services/authService.js.map +1 -0
- package/backend/dist/services/chatService.d.ts +52 -0
- package/backend/dist/services/chatService.d.ts.map +1 -0
- package/backend/dist/services/chatService.js +645 -0
- package/backend/dist/services/chatService.js.map +1 -0
- package/backend/dist/services/documentService.d.ts +34 -0
- package/backend/dist/services/documentService.d.ts.map +1 -0
- package/backend/dist/services/documentService.js +428 -0
- package/backend/dist/services/documentService.js.map +1 -0
- package/backend/dist/services/encryptionService.d.ts +62 -0
- package/backend/dist/services/encryptionService.d.ts.map +1 -0
- package/backend/dist/services/encryptionService.js +284 -0
- package/backend/dist/services/encryptionService.js.map +1 -0
- package/backend/dist/services/memoryService.d.ts +140 -0
- package/backend/dist/services/memoryService.d.ts.map +1 -0
- package/backend/dist/services/memoryService.js +867 -0
- package/backend/dist/services/memoryService.js.map +1 -0
- package/backend/dist/services/mutationEngineService.d.ts +49 -0
- package/backend/dist/services/mutationEngineService.d.ts.map +1 -0
- package/backend/dist/services/mutationEngineService.js +432 -0
- package/backend/dist/services/mutationEngineService.js.map +1 -0
- package/backend/dist/services/ollamaService.d.ts +55 -0
- package/backend/dist/services/ollamaService.d.ts.map +1 -0
- package/backend/dist/services/ollamaService.js +450 -0
- package/backend/dist/services/ollamaService.js.map +1 -0
- package/backend/dist/services/personaService.d.ts +67 -0
- package/backend/dist/services/personaService.d.ts.map +1 -0
- package/backend/dist/services/personaService.js +373 -0
- package/backend/dist/services/personaService.js.map +1 -0
- package/backend/dist/services/pluginService.d.ts +42 -0
- package/backend/dist/services/pluginService.d.ts.map +1 -0
- package/backend/dist/services/pluginService.js +961 -0
- package/backend/dist/services/pluginService.js.map +1 -0
- package/backend/dist/services/preferencesService.d.ts +35 -0
- package/backend/dist/services/preferencesService.d.ts.map +1 -0
- package/backend/dist/services/preferencesService.js +255 -0
- package/backend/dist/services/preferencesService.js.map +1 -0
- package/backend/dist/services/simpleGitHubOAuth.d.ts +48 -0
- package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -0
- package/backend/dist/services/simpleGitHubOAuth.js +203 -0
- package/backend/dist/services/simpleGitHubOAuth.js.map +1 -0
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts +43 -0
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -0
- package/backend/dist/services/simpleHuggingFaceOAuth.js +159 -0
- package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -0
- package/backend/dist/services/userService.d.ts +1 -0
- package/backend/dist/services/userService.d.ts.map +1 -0
- package/backend/dist/services/userService.js +18 -0
- package/backend/dist/services/userService.js.map +1 -0
- package/backend/dist/storage.d.ts +55 -0
- package/backend/dist/storage.d.ts.map +1 -0
- package/backend/dist/storage.js +741 -0
- package/backend/dist/storage.js.map +1 -0
- package/backend/dist/test-encryption.d.ts +2 -0
- package/backend/dist/test-encryption.d.ts.map +1 -0
- package/backend/dist/test-encryption.js +64 -0
- package/backend/dist/test-encryption.js.map +1 -0
- package/backend/dist/types/index.d.ts +523 -0
- package/backend/dist/types/index.d.ts.map +1 -0
- package/backend/dist/types/index.js +31 -0
- package/backend/dist/types/index.js.map +1 -0
- package/backend/dist/utils/generationUtils.d.ts +10 -0
- package/backend/dist/utils/generationUtils.d.ts.map +1 -0
- package/backend/dist/utils/generationUtils.js +49 -0
- package/backend/dist/utils/generationUtils.js.map +1 -0
- package/backend/dist/utils/hash.d.ts +29 -0
- package/backend/dist/utils/hash.d.ts.map +1 -0
- package/backend/dist/utils/hash.js +73 -0
- package/backend/dist/utils/hash.js.map +1 -0
- package/backend/dist/utils/jwt.d.ts +37 -0
- package/backend/dist/utils/jwt.d.ts.map +1 -0
- package/backend/dist/utils/jwt.js +86 -0
- package/backend/dist/utils/jwt.js.map +1 -0
- package/bin/cli.js +150 -0
- package/electron/main.js +322 -0
- package/frontend/dist/_redirects +1 -0
- package/frontend/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/frontend/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/frontend/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/frontend/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/frontend/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/frontend/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/frontend/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/frontend/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/frontend/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/frontend/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/frontend/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/frontend/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/frontend/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/frontend/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/frontend/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/frontend/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/frontend/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/frontend/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/frontend/dist/assets/index-CRQkB7Wz.js +3 -0
- package/frontend/dist/css/index-B1OjddR-.css +1 -0
- package/frontend/dist/favicon-dark.png +0 -0
- package/frontend/dist/favicon-light.png +0 -0
- package/frontend/dist/index.html +23 -0
- package/frontend/dist/js/ArtifactContainer-c_oi7XMs.js +23 -0
- package/frontend/dist/js/ArtifactDemoPage-CdfwJVXu.js +98 -0
- package/frontend/dist/js/ChatPage-CyotkmS0.js +281 -0
- package/frontend/dist/js/ModelsPage-DNaziPHc.js +2 -0
- package/frontend/dist/js/PersonasPage-DcnbJf8Q.js +13 -0
- package/frontend/dist/js/UserManagementPage-DtTf92dS.js +1 -0
- package/frontend/dist/js/markdown-vendor-D-79K2xZ.js +22 -0
- package/frontend/dist/js/react-vendor-N--QU9DW.js +8 -0
- package/frontend/dist/js/router-vendor-B-t91v39.js +3 -0
- package/frontend/dist/js/ui-vendor-VxSCY_bv.js +177 -0
- package/frontend/dist/js/utils-vendor-DNzxLBGx.js +6 -0
- package/frontend/dist/logo-dark.png +0 -0
- package/frontend/dist/logo-light.png +0 -0
- package/frontend/dist/logo.svg +14 -0
- package/package.json +128 -0
- package/plugins/anthropic.json +25 -0
- package/plugins/elevenlabs.json +58 -0
- package/plugins/gemini.json +57 -0
- package/plugins/github.json +23 -0
- package/plugins/groq.json +25 -0
- package/plugins/mistral.json +73 -0
- package/plugins/openai-tts.json +38 -0
- package/plugins/openai.json +132 -0
- package/plugins/openrouter.json +353 -0
|
@@ -0,0 +1,373 @@
|
|
|
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 { personaModel } from '../models/personaModel.js';
|
|
18
|
+
export class PersonaService {
|
|
19
|
+
/**
|
|
20
|
+
* Get all personas for a user with optional advanced features
|
|
21
|
+
*/
|
|
22
|
+
async getPersonas(userId = 'default') {
|
|
23
|
+
const basePersonas = await personaModel.getPersonas(userId);
|
|
24
|
+
// Check each persona for advanced features and merge them
|
|
25
|
+
const enhancedPersonas = await Promise.all(basePersonas.map(async (persona) => {
|
|
26
|
+
// Check if this persona has advanced features stored
|
|
27
|
+
const advancedFeatures = await this.getAdvancedFeatures(persona.id, userId);
|
|
28
|
+
return {
|
|
29
|
+
...persona,
|
|
30
|
+
...advancedFeatures,
|
|
31
|
+
};
|
|
32
|
+
}));
|
|
33
|
+
return enhancedPersonas;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get advanced features for a persona if they exist
|
|
37
|
+
*/
|
|
38
|
+
async getAdvancedFeatures(personaId, userId) {
|
|
39
|
+
try {
|
|
40
|
+
const { getDatabase } = await import('../db.js');
|
|
41
|
+
const db = getDatabase();
|
|
42
|
+
// Retrieve the embedding_model and other advanced features from the database
|
|
43
|
+
const personaAdvancedData = db
|
|
44
|
+
.prepare(`
|
|
45
|
+
SELECT embedding_model, memory_settings, mutation_settings
|
|
46
|
+
FROM personas
|
|
47
|
+
WHERE id = ? AND user_id = ?
|
|
48
|
+
`)
|
|
49
|
+
.get(personaId, userId);
|
|
50
|
+
if (!personaAdvancedData) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
// Parse JSON settings or use defaults
|
|
54
|
+
let memorySettings;
|
|
55
|
+
let mutationSettings;
|
|
56
|
+
try {
|
|
57
|
+
memorySettings = personaAdvancedData.memory_settings
|
|
58
|
+
? JSON.parse(personaAdvancedData.memory_settings)
|
|
59
|
+
: undefined;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
memorySettings = undefined;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
mutationSettings = personaAdvancedData.mutation_settings
|
|
66
|
+
? JSON.parse(personaAdvancedData.mutation_settings)
|
|
67
|
+
: undefined;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
mutationSettings = undefined;
|
|
71
|
+
}
|
|
72
|
+
// Check if persona has memory entries to determine if it has advanced features
|
|
73
|
+
const memoryCheck = db
|
|
74
|
+
.prepare(`
|
|
75
|
+
SELECT COUNT(*) as count FROM persona_memories
|
|
76
|
+
WHERE persona_id = ? AND user_id = ?
|
|
77
|
+
`)
|
|
78
|
+
.get(personaId, userId);
|
|
79
|
+
const stateCheck = db
|
|
80
|
+
.prepare(`
|
|
81
|
+
SELECT * FROM persona_states
|
|
82
|
+
WHERE persona_id = ? AND user_id = ?
|
|
83
|
+
`)
|
|
84
|
+
.get(personaId, userId);
|
|
85
|
+
// If persona has memories, state, or stored advanced settings, return advanced features
|
|
86
|
+
if ((memoryCheck?.count ?? 0) > 0 ||
|
|
87
|
+
stateCheck ||
|
|
88
|
+
personaAdvancedData.embedding_model ||
|
|
89
|
+
memorySettings ||
|
|
90
|
+
mutationSettings) {
|
|
91
|
+
return {
|
|
92
|
+
embedding_model: personaAdvancedData.embedding_model || 'nomic-embed-text',
|
|
93
|
+
memory_settings: memorySettings || {
|
|
94
|
+
enabled: true,
|
|
95
|
+
max_memories: 1000,
|
|
96
|
+
auto_cleanup: true,
|
|
97
|
+
retention_days: 90,
|
|
98
|
+
},
|
|
99
|
+
mutation_settings: mutationSettings || {
|
|
100
|
+
enabled: true,
|
|
101
|
+
sensitivity: 'medium',
|
|
102
|
+
auto_adapt: true,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
catch (_error) {
|
|
109
|
+
// If tables don't exist or error occurs, return empty
|
|
110
|
+
return {};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get all personas for a user (original method)
|
|
115
|
+
*/
|
|
116
|
+
async getBasicPersonas(userId = 'default') {
|
|
117
|
+
return await personaModel.getPersonas(userId);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get a specific persona by ID with optional advanced features
|
|
121
|
+
*/
|
|
122
|
+
async getPersonaById(id, userId = 'default') {
|
|
123
|
+
const basePersona = await personaModel.getPersonaById(id, userId);
|
|
124
|
+
if (!basePersona) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
// Check for advanced features and merge them
|
|
128
|
+
const advancedFeatures = await this.getAdvancedFeatures(id, userId);
|
|
129
|
+
return {
|
|
130
|
+
...basePersona,
|
|
131
|
+
...advancedFeatures,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get a specific persona by ID (basic version)
|
|
136
|
+
*/
|
|
137
|
+
async getBasicPersonaById(id, userId = 'default') {
|
|
138
|
+
return await personaModel.getPersonaById(id, userId);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Create a new persona with validation
|
|
142
|
+
*/
|
|
143
|
+
async createPersona(data, userId = 'default') {
|
|
144
|
+
// Validate required fields
|
|
145
|
+
if (!data.name || !data.name.trim()) {
|
|
146
|
+
throw new Error('Persona name is required');
|
|
147
|
+
}
|
|
148
|
+
if (!data.model || !data.model.trim()) {
|
|
149
|
+
throw new Error('Model is required');
|
|
150
|
+
}
|
|
151
|
+
// Check for duplicate name
|
|
152
|
+
const existingPersona = await personaModel.getPersonaByName(data.name.trim(), userId);
|
|
153
|
+
if (existingPersona) {
|
|
154
|
+
throw new Error('A persona with this name already exists');
|
|
155
|
+
}
|
|
156
|
+
// Validate parameters
|
|
157
|
+
if (!data.parameters) {
|
|
158
|
+
throw new Error('Persona parameters are required');
|
|
159
|
+
}
|
|
160
|
+
// Set default parameters if not provided
|
|
161
|
+
const parameters = {
|
|
162
|
+
temperature: data.parameters.temperature ?? 0.7,
|
|
163
|
+
top_p: data.parameters.top_p ?? 0.9,
|
|
164
|
+
top_k: data.parameters.top_k ?? 40,
|
|
165
|
+
context_window: data.parameters.context_window ?? 4096,
|
|
166
|
+
max_tokens: data.parameters.max_tokens ?? 1024,
|
|
167
|
+
system_prompt: data.parameters.system_prompt ?? '',
|
|
168
|
+
repeat_penalty: data.parameters.repeat_penalty ?? 1.1,
|
|
169
|
+
presence_penalty: data.parameters.presence_penalty ?? 0.0,
|
|
170
|
+
frequency_penalty: data.parameters.frequency_penalty ?? 0.0,
|
|
171
|
+
};
|
|
172
|
+
// Validate parameter ranges
|
|
173
|
+
if (parameters.temperature < 0 || parameters.temperature > 2) {
|
|
174
|
+
throw new Error('Temperature must be between 0 and 2');
|
|
175
|
+
}
|
|
176
|
+
if (parameters.top_p < 0 || parameters.top_p > 1) {
|
|
177
|
+
throw new Error('Top P must be between 0 and 1');
|
|
178
|
+
}
|
|
179
|
+
if (parameters.top_k < 1 || parameters.top_k > 100) {
|
|
180
|
+
throw new Error('Top K must be between 1 and 100');
|
|
181
|
+
}
|
|
182
|
+
if (parameters.context_window < 128 || parameters.context_window > 131072) {
|
|
183
|
+
throw new Error('Context window must be between 128 and 131072');
|
|
184
|
+
}
|
|
185
|
+
if (parameters.max_tokens < 1 || parameters.max_tokens > 8192) {
|
|
186
|
+
throw new Error('Max tokens must be between 1 and 8192');
|
|
187
|
+
}
|
|
188
|
+
const personaData = {
|
|
189
|
+
...data,
|
|
190
|
+
name: data.name.trim(),
|
|
191
|
+
model: data.model.trim(),
|
|
192
|
+
parameters,
|
|
193
|
+
};
|
|
194
|
+
const createdPersona = await personaModel.createPersona(personaData, userId);
|
|
195
|
+
// If advanced features are provided, initialize them
|
|
196
|
+
if (data.memory_settings?.enabled || data.mutation_settings?.enabled) {
|
|
197
|
+
await this.initializeAdvancedFeatures(createdPersona.id, userId, {
|
|
198
|
+
embedding_model: data.embedding_model,
|
|
199
|
+
memory_settings: data.memory_settings,
|
|
200
|
+
mutation_settings: data.mutation_settings,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// Return enhanced persona with advanced features if they were initialized
|
|
204
|
+
return ((await this.getPersonaById(createdPersona.id, userId)) || createdPersona);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Initialize advanced features for a persona
|
|
208
|
+
*/
|
|
209
|
+
async initializeAdvancedFeatures(personaId, userId, features) {
|
|
210
|
+
try {
|
|
211
|
+
// Initialize mutation engine state if mutation settings are enabled
|
|
212
|
+
if (features.mutation_settings?.enabled) {
|
|
213
|
+
const { mutationEngineService } = await import('./mutationEngineService.js');
|
|
214
|
+
await mutationEngineService.initializePersonaState(personaId, userId);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
console.error('Failed to initialize advanced features:', error);
|
|
219
|
+
// Don't throw error - persona creation should still succeed
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Update an existing persona with validation
|
|
224
|
+
*/
|
|
225
|
+
async updatePersona(id, data, userId = 'default') {
|
|
226
|
+
const existingPersona = await personaModel.getPersonaById(id, userId);
|
|
227
|
+
if (!existingPersona) {
|
|
228
|
+
throw new Error('Persona not found');
|
|
229
|
+
}
|
|
230
|
+
// Validate name if provided
|
|
231
|
+
if (data.name !== undefined) {
|
|
232
|
+
if (!data.name.trim()) {
|
|
233
|
+
throw new Error('Persona name cannot be empty');
|
|
234
|
+
}
|
|
235
|
+
// Check for duplicate name (excluding current persona)
|
|
236
|
+
const duplicatePersona = await personaModel.getPersonaByName(data.name.trim(), userId);
|
|
237
|
+
if (duplicatePersona && duplicatePersona.id !== id) {
|
|
238
|
+
throw new Error('A persona with this name already exists');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Validate model if provided
|
|
242
|
+
if (data.model !== undefined && !data.model.trim()) {
|
|
243
|
+
throw new Error('Model cannot be empty');
|
|
244
|
+
}
|
|
245
|
+
// Validate parameters if provided
|
|
246
|
+
if (data.parameters) {
|
|
247
|
+
if (data.parameters.temperature !== undefined) {
|
|
248
|
+
if (data.parameters.temperature < 0 ||
|
|
249
|
+
data.parameters.temperature > 2) {
|
|
250
|
+
throw new Error('Temperature must be between 0 and 2');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (data.parameters.top_p !== undefined) {
|
|
254
|
+
if (data.parameters.top_p < 0 || data.parameters.top_p > 1) {
|
|
255
|
+
throw new Error('Top P must be between 0 and 1');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (data.parameters.top_k !== undefined) {
|
|
259
|
+
if (data.parameters.top_k < 1 || data.parameters.top_k > 100) {
|
|
260
|
+
throw new Error('Top K must be between 1 and 100');
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (data.parameters.context_window !== undefined) {
|
|
264
|
+
if (data.parameters.context_window < 128 ||
|
|
265
|
+
data.parameters.context_window > 131072) {
|
|
266
|
+
throw new Error('Context window must be between 128 and 131072');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (data.parameters.max_tokens !== undefined) {
|
|
270
|
+
if (data.parameters.max_tokens < 1 ||
|
|
271
|
+
data.parameters.max_tokens > 8192) {
|
|
272
|
+
throw new Error('Max tokens must be between 1 and 8192');
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const updateData = { ...data };
|
|
277
|
+
if (updateData.name) {
|
|
278
|
+
updateData.name = updateData.name.trim();
|
|
279
|
+
}
|
|
280
|
+
if (updateData.model) {
|
|
281
|
+
updateData.model = updateData.model.trim();
|
|
282
|
+
}
|
|
283
|
+
return await personaModel.updatePersona(id, updateData, userId);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Delete a persona
|
|
287
|
+
*/
|
|
288
|
+
async deletePersona(id, userId = 'default') {
|
|
289
|
+
const existingPersona = await personaModel.getPersonaById(id, userId);
|
|
290
|
+
if (!existingPersona) {
|
|
291
|
+
throw new Error('Persona not found');
|
|
292
|
+
}
|
|
293
|
+
return await personaModel.deletePersona(id, userId);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Export a persona as JSON
|
|
297
|
+
*/
|
|
298
|
+
async exportPersona(id, userId = 'default') {
|
|
299
|
+
const persona = await personaModel.getPersonaById(id, userId);
|
|
300
|
+
if (!persona) {
|
|
301
|
+
throw new Error('Persona not found');
|
|
302
|
+
}
|
|
303
|
+
return {
|
|
304
|
+
name: persona.name,
|
|
305
|
+
description: persona.description,
|
|
306
|
+
model: persona.model,
|
|
307
|
+
params: persona.parameters,
|
|
308
|
+
avatar: persona.avatar,
|
|
309
|
+
background: persona.background,
|
|
310
|
+
exportedAt: Date.now(),
|
|
311
|
+
version: '1.0.0',
|
|
312
|
+
// Include advanced features in export
|
|
313
|
+
embedding_model: persona.embedding_model,
|
|
314
|
+
memory_settings: persona.memory_settings,
|
|
315
|
+
mutation_settings: persona.mutation_settings,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Import a persona from JSON
|
|
320
|
+
*/
|
|
321
|
+
async importPersona(personaData, userId = 'default') {
|
|
322
|
+
// Validate import data
|
|
323
|
+
if (!personaData.name || !personaData.model || !personaData.params) {
|
|
324
|
+
throw new Error('Invalid persona data: missing required fields');
|
|
325
|
+
}
|
|
326
|
+
// Create persona request from import data
|
|
327
|
+
const createRequest = {
|
|
328
|
+
name: personaData.name,
|
|
329
|
+
description: personaData.description,
|
|
330
|
+
model: personaData.model,
|
|
331
|
+
parameters: personaData.params,
|
|
332
|
+
avatar: personaData.avatar,
|
|
333
|
+
background: personaData.background,
|
|
334
|
+
// Include advanced features from import data
|
|
335
|
+
embedding_model: personaData.embedding_model,
|
|
336
|
+
memory_settings: personaData.memory_settings,
|
|
337
|
+
mutation_settings: personaData.mutation_settings,
|
|
338
|
+
};
|
|
339
|
+
// Check if persona with same name exists and add suffix if needed
|
|
340
|
+
let finalName = createRequest.name;
|
|
341
|
+
let counter = 1;
|
|
342
|
+
while (await personaModel.getPersonaByName(finalName, userId)) {
|
|
343
|
+
finalName = `${createRequest.name} (${counter})`;
|
|
344
|
+
counter++;
|
|
345
|
+
}
|
|
346
|
+
createRequest.name = finalName;
|
|
347
|
+
return await this.createPersona(createRequest, userId);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get personas count for a user
|
|
351
|
+
*/
|
|
352
|
+
async getPersonasCount(userId = 'default') {
|
|
353
|
+
return await personaModel.getPersonasCount(userId);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get default persona parameters
|
|
357
|
+
*/
|
|
358
|
+
getDefaultParameters() {
|
|
359
|
+
return {
|
|
360
|
+
temperature: 0.7,
|
|
361
|
+
top_p: 0.9,
|
|
362
|
+
top_k: 40,
|
|
363
|
+
context_window: 4096,
|
|
364
|
+
max_tokens: 1024,
|
|
365
|
+
system_prompt: '',
|
|
366
|
+
repeat_penalty: 1.1,
|
|
367
|
+
presence_penalty: 0.0,
|
|
368
|
+
frequency_penalty: 0.0,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
export const personaService = new PersonaService();
|
|
373
|
+
//# sourceMappingURL=personaService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaService.js","sourceRoot":"","sources":["../../src/services/personaService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Plugin, PluginStatus, PluginResponse, ChatMessage, GenerationOptions, TTSConfig, PluginType } from '../types/index.js';
|
|
2
|
+
declare class PluginService {
|
|
3
|
+
private pluginsDir;
|
|
4
|
+
private activePluginIds;
|
|
5
|
+
constructor();
|
|
6
|
+
private ensurePluginsDirectory;
|
|
7
|
+
private loadActivePlugins;
|
|
8
|
+
private saveActivePlugins;
|
|
9
|
+
getAllPlugins(): Plugin[];
|
|
10
|
+
getPlugin(id: string): Plugin | null;
|
|
11
|
+
installPlugin(pluginData: Plugin): Plugin;
|
|
12
|
+
deletePlugin(id: string): boolean;
|
|
13
|
+
activatePlugin(id: string): boolean;
|
|
14
|
+
deactivatePlugin(id?: string): boolean;
|
|
15
|
+
getActivePluginForModel(model: string): Plugin | null;
|
|
16
|
+
getActivePlugins(): Plugin[];
|
|
17
|
+
getActivePlugin(): Plugin | null;
|
|
18
|
+
getPluginStatus(): PluginStatus[];
|
|
19
|
+
executePluginRequest(model: string, messages: ChatMessage[], options?: GenerationOptions): Promise<PluginResponse>;
|
|
20
|
+
private convertAnthropicResponse;
|
|
21
|
+
private convertGeminiResponse;
|
|
22
|
+
private validatePlugin;
|
|
23
|
+
exportPlugin(id: string): Plugin | null;
|
|
24
|
+
importPlugin(pluginData: unknown): Plugin;
|
|
25
|
+
getPluginForTTS(model: string): Plugin | null;
|
|
26
|
+
getAvailableTTSModels(): {
|
|
27
|
+
model: string;
|
|
28
|
+
plugin: string;
|
|
29
|
+
config?: TTSConfig;
|
|
30
|
+
}[];
|
|
31
|
+
executeTTSRequest(model: string, input: string, options?: {
|
|
32
|
+
voice?: string;
|
|
33
|
+
response_format?: 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm';
|
|
34
|
+
speed?: number;
|
|
35
|
+
}): Promise<Buffer>;
|
|
36
|
+
private splitTextForTTS;
|
|
37
|
+
getTTSConfig(pluginId: string): TTSConfig | null;
|
|
38
|
+
getPluginsByCapability(capabilityType: PluginType): Plugin[];
|
|
39
|
+
}
|
|
40
|
+
declare const _default: PluginService;
|
|
41
|
+
export default _default;
|
|
42
|
+
//# sourceMappingURL=pluginService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginService.d.ts","sourceRoot":"","sources":["../../src/services/pluginService.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,cAAM,aAAa;IACjB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAA0B;;IAQjD,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,iBAAiB;IAUzB,aAAa,IAAI,MAAM,EAAE;IA+BzB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkCpC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAoBzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA2CjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAanC,gBAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAYtC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqCrD,gBAAgB,IAAI,MAAM,EAAE;IAqB5B,eAAe,IAAI,MAAM,GAAG,IAAI;IAMhC,eAAe,IAAI,YAAY,EAAE;IAU3B,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAkT1B,OAAO,CAAC,wBAAwB;IA8EhC,OAAO,CAAC,qBAAqB;IAyF7B,OAAO,CAAC,cAAc;IA2BtB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM;IAoBzC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkD7C,qBAAqB,IAAI;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,EAAE;IAuCG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QAClE,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,MAAM,CAAC;IA4NlB,OAAO,CAAC,eAAe;IA4CvB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAYhD,sBAAsB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,EAAE;CAgD7D;;AAED,wBAAmC"}
|