libre-webui 0.15.1 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -8
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +63 -0
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +4 -4
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +93 -10
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +52 -29
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +226 -42
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/preferences.d.ts.map +1 -1
- package/backend/dist/routes/preferences.js +5 -4
- package/backend/dist/routes/preferences.js.map +1 -1
- package/backend/dist/routes/tts.js +2 -2
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +2 -1
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +2 -1
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
- package/backend/dist/services/assistantCompletionService.js +3 -1
- package/backend/dist/services/assistantCompletionService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +5 -3
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +18 -6
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatRequestService.d.ts +6 -4
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +10 -2
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +2 -2
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +29 -17
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/embeddingService.js +1 -1
- package/backend/dist/services/embeddingService.js.map +1 -1
- package/backend/dist/services/pluginActivationService.d.ts +11 -0
- package/backend/dist/services/pluginActivationService.d.ts.map +1 -0
- package/backend/dist/services/pluginActivationService.js +163 -0
- package/backend/dist/services/pluginActivationService.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginCredentialsService.d.ts +16 -8
- package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
- package/backend/dist/services/pluginCredentialsService.js +47 -14
- package/backend/dist/services/pluginCredentialsService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +2 -2
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.js +33 -13
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +11 -7
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +265 -81
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts +97 -26
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +797 -178
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +4 -4
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js +24 -28
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/services/pluginVariablesService.d.ts +6 -1
- package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
- package/backend/dist/services/pluginVariablesService.js +59 -1
- package/backend/dist/services/pluginVariablesService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts +2 -2
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +78 -10
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts +6 -4
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +9 -5
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts +5 -2
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +315 -44
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +6 -3
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +243 -19
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workRuntimeService.d.ts +18 -1
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +62 -11
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +2 -0
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +89 -14
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +9 -6
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/storageMappers.d.ts +3 -0
- package/backend/dist/storageMappers.d.ts.map +1 -1
- package/backend/dist/storageMappers.js +3 -0
- package/backend/dist/storageMappers.js.map +1 -1
- package/backend/dist/types/index.d.ts +54 -1
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/work.d.ts +1 -1
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.d.ts +13 -1
- package/backend/dist/utils/chatContext.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.js +52 -0
- package/backend/dist/utils/chatContext.js.map +1 -1
- package/backend/dist/utils/chatProviderSelection.d.ts +15 -0
- package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -0
- package/backend/dist/utils/chatProviderSelection.js +59 -0
- package/backend/dist/utils/chatProviderSelection.js.map +1 -0
- package/backend/dist/utils/imageGenerationValidation.d.ts +3 -0
- package/backend/dist/utils/imageGenerationValidation.d.ts.map +1 -0
- package/backend/dist/utils/imageGenerationValidation.js +55 -0
- package/backend/dist/utils/imageGenerationValidation.js.map +1 -0
- package/backend/dist/utils/openAIResponsesAdapter.d.ts +88 -0
- package/backend/dist/utils/openAIResponsesAdapter.d.ts.map +1 -0
- package/backend/dist/utils/openAIResponsesAdapter.js +521 -0
- package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts +7 -4
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +33 -5
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginChatContext.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatContext.js +5 -1
- package/backend/dist/utils/pluginChatContext.js.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.d.ts +6 -0
- package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -0
- package/backend/dist/utils/pluginConnectionVariables.js +52 -0
- package/backend/dist/utils/pluginConnectionVariables.js.map +1 -0
- package/backend/dist/utils/pluginDefinitionTrust.d.ts +9 -0
- package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -0
- package/backend/dist/utils/pluginDefinitionTrust.js +71 -0
- package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts +3 -0
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +410 -0
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +7 -1
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +12 -1
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts +20 -2
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +187 -17
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/dist/utils/pluginVariableValidation.d.ts +7 -0
- package/backend/dist/utils/pluginVariableValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginVariableValidation.js +79 -4
- package/backend/dist/utils/pluginVariableValidation.js.map +1 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +16 -3
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/assets/index-BVgyQN3z.js +5 -0
- package/frontend/dist/assets/index-Dme2Ozol.css +1 -0
- package/frontend/dist/index.html +3 -3
- package/frontend/dist/js/{ArtifactContainer-BHSBrlQB.js → ArtifactContainer-CbMAYwvr.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-BHGJmJAT.js → ArtifactDemoPage-CWDhGWrz.js} +1 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-CzUpDM59.js +1 -0
- package/frontend/dist/js/ChatPage-D0fdzy7a.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-BYWAVAdE.js → FirstTimeSetup-CfnOmy9w.js} +1 -1
- package/frontend/dist/js/GalleryPage-CMkCur9v.js +1 -0
- package/frontend/dist/js/LibreClawPage-CHEfny1k.js +1 -0
- package/frontend/dist/js/ModelSelector-COnlNsVM.js +1 -0
- package/frontend/dist/js/ModelsPage-nxheiYJp.js +2 -0
- package/frontend/dist/js/PersonasPage-C2pqDsWA.js +13 -0
- package/frontend/dist/js/{RichMessageContent-BdU5vXz9.js → RichMessageContent-Cz9y-bgl.js} +1 -1
- package/frontend/dist/js/SettingsModal-B6Se68Hd.js +1 -0
- package/frontend/dist/js/UserManagementPage-DQeL-Twp.js +1 -0
- package/frontend/dist/js/WorkPage-AcZMp8OB.js +2 -0
- package/frontend/dist/js/api-Fi-lJlfu.js +19 -0
- package/frontend/dist/js/{estree-Bu_-Wi6O.js → estree-BRklD62a.js} +1 -1
- package/frontend/dist/js/{html-Ca764Rus.js → html-BgGIAGmn.js} +1 -1
- package/frontend/dist/js/{markdown-DaiQGPEs.js → markdown-CM2nBJJi.js} +1 -1
- package/frontend/dist/js/{standalone-DWWnsbIr.js → standalone-CUBo-NGt.js} +1 -1
- package/frontend/dist/js/{typescript-CatjJeHm.js → typescript-Dcy9qxSB.js} +1 -1
- package/frontend/dist/js/useBaseQuery-CFTidwqz.js +1 -0
- package/frontend/dist/js/useQuery-UsSBfWzs.js +1 -0
- package/package.json +2 -2
- package/plugins/github.json +1 -2
- package/plugins/huggingface.json +30 -30
- package/plugins/openai.json +53 -22
- package/frontend/dist/assets/index-DkShhNBf.js +0 -5
- package/frontend/dist/assets/index-bdSWBsAM.css +0 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-s8vcE5Ea.js +0 -1
- package/frontend/dist/js/ChatPage-B6Hm_pdu.js +0 -16
- package/frontend/dist/js/GalleryPage-CH4f65q8.js +0 -1
- package/frontend/dist/js/LibreClawPage-CcH7M3mJ.js +0 -1
- package/frontend/dist/js/ModelSelector-T1KZtIde.js +0 -1
- package/frontend/dist/js/ModelsPage-C1bM_Yoc.js +0 -2
- package/frontend/dist/js/PersonasPage-T_PrhnPG.js +0 -13
- package/frontend/dist/js/SettingsModal-BVj-D1L4.js +0 -1
- package/frontend/dist/js/UserManagementPage-Pix71oRW.js +0 -1
- package/frontend/dist/js/WorkPage-DdOVGyj_.js +0 -2
- package/frontend/dist/js/api-Do6u0tMM.js +0 -19
- package/frontend/dist/js/useBaseQuery-CVNuhuID.js +0 -1
- package/frontend/dist/js/useQuery-CYhC_da4.js +0 -1
|
@@ -23,9 +23,94 @@ import pluginCredentialsService from '../services/pluginCredentialsService.js';
|
|
|
23
23
|
import pluginVariablesService from '../services/pluginVariablesService.js';
|
|
24
24
|
import { getErrorMessage, } from '../types/index.js';
|
|
25
25
|
import { pluginUpload as upload, safeCleanupFile, } from '../utils/pluginUpload.js';
|
|
26
|
-
import { validatePluginVariables } from '../utils/pluginVariableValidation.js';
|
|
26
|
+
import { validatePluginVariables, validatePluginVariablesToUnset, } from '../utils/pluginVariableValidation.js';
|
|
27
|
+
import { requireAdmin } from '../middleware/auth.js';
|
|
28
|
+
import { userModel } from '../models/userModel.js';
|
|
29
|
+
import { isPluginConnectionVariableForPlugin } from '../utils/pluginConnectionVariables.js';
|
|
30
|
+
import { inferPluginApiMode, PLUGIN_MODEL_DISCOVERY_VARIABLES, } from '../utils/pluginValidation.js';
|
|
27
31
|
const router = express.Router();
|
|
28
|
-
const getRequestUserId = (req) =>
|
|
32
|
+
const getRequestUserId = (req) => {
|
|
33
|
+
const userId = req.user?.userId;
|
|
34
|
+
if (!userId) {
|
|
35
|
+
throw new Error('Authenticated user context is required');
|
|
36
|
+
}
|
|
37
|
+
return userId;
|
|
38
|
+
};
|
|
39
|
+
const requestUserIsAdmin = (req) => {
|
|
40
|
+
const userId = req.user?.userId;
|
|
41
|
+
if (!userId)
|
|
42
|
+
return false;
|
|
43
|
+
try {
|
|
44
|
+
return userModel.getUserById(userId)?.role === 'admin';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const supportsCompletionModelDiscovery = (plugin) => plugin.type === 'completion' || plugin.type === 'chat';
|
|
51
|
+
const getModelDiscoveryVariableNames = (plugin) => {
|
|
52
|
+
const names = new Set(PLUGIN_MODEL_DISCOVERY_VARIABLES);
|
|
53
|
+
for (const capability of Object.values((plugin.capabilities || {}))) {
|
|
54
|
+
if (!capability || typeof capability !== 'object')
|
|
55
|
+
continue;
|
|
56
|
+
const capabilityRecord = capability;
|
|
57
|
+
const config = capabilityRecord.config && typeof capabilityRecord.config === 'object'
|
|
58
|
+
? capabilityRecord.config
|
|
59
|
+
: {};
|
|
60
|
+
const selector = config.endpoint_variable ?? capabilityRecord.endpoint_variable;
|
|
61
|
+
if (typeof selector === 'string' && selector.trim()) {
|
|
62
|
+
names.add(selector.trim());
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return names;
|
|
66
|
+
};
|
|
67
|
+
const modelDiscoveryConnectionChanged = (plugin, previousVariables, nextVariables) => [...getModelDiscoveryVariableNames(plugin)].some(name => previousVariables[name] !== nextVariables[name]);
|
|
68
|
+
const matchesInheritedDefault = (plugin, definition, value) => {
|
|
69
|
+
let inheritedValue = definition.default;
|
|
70
|
+
if (inheritedValue === undefined) {
|
|
71
|
+
if (definition.name === 'endpoint' || definition.name === 'api_url') {
|
|
72
|
+
inheritedValue = plugin.endpoint;
|
|
73
|
+
}
|
|
74
|
+
else if (definition.name === 'base_url') {
|
|
75
|
+
inheritedValue = plugin.base_url;
|
|
76
|
+
}
|
|
77
|
+
else if (definition.name === 'api_path') {
|
|
78
|
+
inheritedValue = plugin.api_path;
|
|
79
|
+
}
|
|
80
|
+
else if (definition.name === 'api_mode') {
|
|
81
|
+
inheritedValue = plugin.api_mode ?? inferPluginApiMode(plugin.endpoint);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
for (const capability of Object.values((plugin.capabilities || {}))) {
|
|
85
|
+
if (!capability || typeof capability !== 'object')
|
|
86
|
+
continue;
|
|
87
|
+
const capabilityRecord = capability;
|
|
88
|
+
const config = capabilityRecord.config && typeof capabilityRecord.config === 'object'
|
|
89
|
+
? capabilityRecord.config
|
|
90
|
+
: {};
|
|
91
|
+
const selector = config.endpoint_variable ?? capabilityRecord.endpoint_variable;
|
|
92
|
+
if (selector === definition.name &&
|
|
93
|
+
typeof capabilityRecord.endpoint === 'string') {
|
|
94
|
+
inheritedValue = capabilityRecord.endpoint;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const defaultValidation = validatePluginVariables([definition], {
|
|
101
|
+
[definition.name]: inheritedValue ?? '',
|
|
102
|
+
});
|
|
103
|
+
return (defaultValidation.success &&
|
|
104
|
+
Object.is(defaultValidation.variables[definition.name], value));
|
|
105
|
+
};
|
|
106
|
+
const refreshUserModels = async (plugin, userId, clearExisting = true) => {
|
|
107
|
+
if (!supportsCompletionModelDiscovery(plugin))
|
|
108
|
+
return;
|
|
109
|
+
if (clearExisting) {
|
|
110
|
+
pluginService.clearDiscoveredModels(plugin.id, userId);
|
|
111
|
+
}
|
|
112
|
+
await pluginService.discoverModels(plugin.id, userId).catch(() => { });
|
|
113
|
+
};
|
|
29
114
|
// Rate limiting for plugin operations
|
|
30
115
|
const pluginRateLimit = rateLimit({
|
|
31
116
|
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
@@ -47,7 +132,11 @@ const uploadRateLimit = rateLimit({
|
|
|
47
132
|
// Get all plugins
|
|
48
133
|
router.get('/', async (req, res) => {
|
|
49
134
|
try {
|
|
50
|
-
const
|
|
135
|
+
const userId = getRequestUserId(req);
|
|
136
|
+
// Keep provider catalogs current: a stale or never-discovered model list
|
|
137
|
+
// is refreshed here so a browser reload reflects the provider's models.
|
|
138
|
+
await pluginService.refreshStaleModels(userId).catch(() => { });
|
|
139
|
+
const plugins = pluginService.getAllPlugins(userId);
|
|
51
140
|
res.json({
|
|
52
141
|
success: true,
|
|
53
142
|
data: plugins,
|
|
@@ -63,7 +152,7 @@ router.get('/', async (req, res) => {
|
|
|
63
152
|
// Get active plugins
|
|
64
153
|
router.get('/active', async (req, res) => {
|
|
65
154
|
try {
|
|
66
|
-
const activePlugins = pluginService.getActivePlugins();
|
|
155
|
+
const activePlugins = pluginService.getActivePlugins(getRequestUserId(req));
|
|
67
156
|
res.json({
|
|
68
157
|
success: true,
|
|
69
158
|
data: activePlugins,
|
|
@@ -79,7 +168,7 @@ router.get('/active', async (req, res) => {
|
|
|
79
168
|
// Get active plugin (alternative route)
|
|
80
169
|
router.get('/active/current', async (req, res) => {
|
|
81
170
|
try {
|
|
82
|
-
const activePlugin = pluginService.getActivePlugin();
|
|
171
|
+
const activePlugin = pluginService.getActivePlugin(getRequestUserId(req));
|
|
83
172
|
res.json({
|
|
84
173
|
success: true,
|
|
85
174
|
data: activePlugin,
|
|
@@ -95,7 +184,7 @@ router.get('/active/current', async (req, res) => {
|
|
|
95
184
|
// Get plugin status
|
|
96
185
|
router.get('/status/all', async (req, res) => {
|
|
97
186
|
try {
|
|
98
|
-
const status = pluginService.getPluginStatus();
|
|
187
|
+
const status = pluginService.getPluginStatus(getRequestUserId(req));
|
|
99
188
|
res.json({
|
|
100
189
|
success: true,
|
|
101
190
|
data: status,
|
|
@@ -112,7 +201,7 @@ router.get('/status/all', async (req, res) => {
|
|
|
112
201
|
router.get('/:id', async (req, res) => {
|
|
113
202
|
try {
|
|
114
203
|
const id = req.params.id;
|
|
115
|
-
const plugin = pluginService.getPlugin(id);
|
|
204
|
+
const plugin = pluginService.getPlugin(id, getRequestUserId(req));
|
|
116
205
|
if (!plugin) {
|
|
117
206
|
res.status(404).json({
|
|
118
207
|
success: false,
|
|
@@ -133,7 +222,7 @@ router.get('/:id', async (req, res) => {
|
|
|
133
222
|
}
|
|
134
223
|
});
|
|
135
224
|
// Upload and install a plugin
|
|
136
|
-
router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res) => {
|
|
225
|
+
router.post('/upload', requireAdmin, uploadRateLimit, upload.single('plugin'), async (req, res) => {
|
|
137
226
|
const tempDir = path.resolve('temp/');
|
|
138
227
|
try {
|
|
139
228
|
if (!req.file) {
|
|
@@ -181,7 +270,7 @@ router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res
|
|
|
181
270
|
// Clean up uploaded file after reading
|
|
182
271
|
safeCleanupFile(req.file.path, tempDir);
|
|
183
272
|
// Install the plugin
|
|
184
|
-
const plugin = pluginService.importPlugin(pluginData);
|
|
273
|
+
const plugin = pluginService.importPlugin(pluginData, getRequestUserId(req));
|
|
185
274
|
res.json({
|
|
186
275
|
success: true,
|
|
187
276
|
data: plugin,
|
|
@@ -214,10 +303,10 @@ router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res
|
|
|
214
303
|
}
|
|
215
304
|
});
|
|
216
305
|
// Install plugin from JSON data (alternative to file upload)
|
|
217
|
-
router.post('/install', pluginRateLimit, async (req, res) => {
|
|
306
|
+
router.post('/install', requireAdmin, pluginRateLimit, async (req, res) => {
|
|
218
307
|
try {
|
|
219
308
|
const pluginData = req.body;
|
|
220
|
-
const plugin = pluginService.installPlugin(pluginData);
|
|
309
|
+
const plugin = pluginService.installPlugin(pluginData, getRequestUserId(req));
|
|
221
310
|
res.json({
|
|
222
311
|
success: true,
|
|
223
312
|
data: plugin,
|
|
@@ -246,7 +335,7 @@ router.post('/install', pluginRateLimit, async (req, res) => {
|
|
|
246
335
|
}
|
|
247
336
|
});
|
|
248
337
|
// Update a plugin
|
|
249
|
-
router.put('/:id', pluginRateLimit, async (req, res) => {
|
|
338
|
+
router.put('/:id', requireAdmin, pluginRateLimit, async (req, res) => {
|
|
250
339
|
try {
|
|
251
340
|
const id = req.params.id;
|
|
252
341
|
const updates = req.body;
|
|
@@ -259,7 +348,7 @@ router.put('/:id', pluginRateLimit, async (req, res) => {
|
|
|
259
348
|
return;
|
|
260
349
|
}
|
|
261
350
|
updates.id = id;
|
|
262
|
-
const plugin = pluginService.installPlugin(updates);
|
|
351
|
+
const plugin = pluginService.installPlugin(updates, getRequestUserId(req));
|
|
263
352
|
res.json({
|
|
264
353
|
success: true,
|
|
265
354
|
data: plugin,
|
|
@@ -273,7 +362,7 @@ router.put('/:id', pluginRateLimit, async (req, res) => {
|
|
|
273
362
|
}
|
|
274
363
|
});
|
|
275
364
|
// Delete a plugin
|
|
276
|
-
router.delete('/:id', pluginRateLimit, async (req, res) => {
|
|
365
|
+
router.delete('/:id', requireAdmin, pluginRateLimit, async (req, res) => {
|
|
277
366
|
try {
|
|
278
367
|
const id = req.params.id;
|
|
279
368
|
const success = pluginService.deletePlugin(id);
|
|
@@ -300,7 +389,8 @@ router.delete('/:id', pluginRateLimit, async (req, res) => {
|
|
|
300
389
|
router.post('/activate/:id', pluginRateLimit, async (req, res) => {
|
|
301
390
|
try {
|
|
302
391
|
const id = req.params.id;
|
|
303
|
-
const
|
|
392
|
+
const userId = getRequestUserId(req);
|
|
393
|
+
const success = await pluginService.activatePlugin(id, userId);
|
|
304
394
|
res.json({
|
|
305
395
|
success: true,
|
|
306
396
|
data: success,
|
|
@@ -326,10 +416,13 @@ router.post('/activate/:id', pluginRateLimit, async (req, res) => {
|
|
|
326
416
|
router.post('/discover/:id', pluginRateLimit, async (req, res) => {
|
|
327
417
|
try {
|
|
328
418
|
const id = req.params.id;
|
|
329
|
-
|
|
419
|
+
// Report the outcome rather than only the catalog: without a usable API
|
|
420
|
+
// key or a reachable provider the returned models are the previous ones,
|
|
421
|
+
// and the caller must not present that as a refresh.
|
|
422
|
+
const result = await pluginService.discoverModelsResult(id, getRequestUserId(req));
|
|
330
423
|
res.json({
|
|
331
424
|
success: true,
|
|
332
|
-
data:
|
|
425
|
+
data: result,
|
|
333
426
|
});
|
|
334
427
|
}
|
|
335
428
|
catch (error) {
|
|
@@ -343,7 +436,7 @@ router.post('/discover/:id', pluginRateLimit, async (req, res) => {
|
|
|
343
436
|
router.post('/deactivate/:id', pluginRateLimit, async (req, res) => {
|
|
344
437
|
try {
|
|
345
438
|
const id = req.params.id;
|
|
346
|
-
const success = pluginService.deactivatePlugin(id);
|
|
439
|
+
const success = pluginService.deactivatePlugin(id, getRequestUserId(req));
|
|
347
440
|
res.json({
|
|
348
441
|
success: true,
|
|
349
442
|
data: success,
|
|
@@ -359,7 +452,7 @@ router.post('/deactivate/:id', pluginRateLimit, async (req, res) => {
|
|
|
359
452
|
// Deactivate all plugins (legacy)
|
|
360
453
|
router.post('/deactivate', pluginRateLimit, async (req, res) => {
|
|
361
454
|
try {
|
|
362
|
-
const success = pluginService.deactivatePlugin();
|
|
455
|
+
const success = pluginService.deactivatePlugin(undefined, getRequestUserId(req));
|
|
363
456
|
res.json({
|
|
364
457
|
success: true,
|
|
365
458
|
data: success,
|
|
@@ -376,7 +469,7 @@ router.post('/deactivate', pluginRateLimit, async (req, res) => {
|
|
|
376
469
|
router.get('/:id/export', async (req, res) => {
|
|
377
470
|
try {
|
|
378
471
|
const id = req.params.id;
|
|
379
|
-
const plugin = pluginService.exportPlugin(id);
|
|
472
|
+
const plugin = pluginService.exportPlugin(id, getRequestUserId(req));
|
|
380
473
|
if (!plugin) {
|
|
381
474
|
res.status(404).json({
|
|
382
475
|
success: false,
|
|
@@ -410,7 +503,16 @@ router.get('/credentials/all', async (req, res) => {
|
|
|
410
503
|
try {
|
|
411
504
|
// Get userId from auth context (defaults to 'default' for single-user mode)
|
|
412
505
|
const userId = getRequestUserId(req);
|
|
413
|
-
const credentials = pluginCredentialsService
|
|
506
|
+
const credentials = pluginCredentialsService
|
|
507
|
+
.getCredentials(userId)
|
|
508
|
+
.map(credential => {
|
|
509
|
+
const plugin = pluginService.getPlugin(credential.plugin_id, userId);
|
|
510
|
+
return {
|
|
511
|
+
...credential,
|
|
512
|
+
has_api_key: plugin !== null &&
|
|
513
|
+
pluginService.getApiKey(plugin, userId) !== null,
|
|
514
|
+
};
|
|
515
|
+
});
|
|
414
516
|
res.json({
|
|
415
517
|
success: true,
|
|
416
518
|
data: credentials,
|
|
@@ -428,6 +530,7 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
428
530
|
try {
|
|
429
531
|
const id = req.params.id;
|
|
430
532
|
const { api_key } = req.body;
|
|
533
|
+
const userId = getRequestUserId(req);
|
|
431
534
|
if (!api_key || typeof api_key !== 'string') {
|
|
432
535
|
res.status(400).json({
|
|
433
536
|
success: false,
|
|
@@ -436,7 +539,7 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
436
539
|
return;
|
|
437
540
|
}
|
|
438
541
|
// Verify plugin exists
|
|
439
|
-
const plugin = pluginService.getPlugin(id);
|
|
542
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
440
543
|
if (!plugin) {
|
|
441
544
|
res.status(404).json({
|
|
442
545
|
success: false,
|
|
@@ -444,10 +547,9 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
444
547
|
});
|
|
445
548
|
return;
|
|
446
549
|
}
|
|
447
|
-
|
|
448
|
-
const userId = getRequestUserId(req);
|
|
449
|
-
const success = pluginCredentialsService.setApiKey(id, api_key, userId);
|
|
550
|
+
const success = pluginCredentialsService.setApiKey(id, api_key, userId, pluginService.getCredentialRoutingAuthFingerprint(plugin, userId));
|
|
450
551
|
if (success) {
|
|
552
|
+
await refreshUserModels(plugin, userId, true);
|
|
451
553
|
res.json({
|
|
452
554
|
success: true,
|
|
453
555
|
data: true,
|
|
@@ -471,8 +573,9 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
471
573
|
router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
472
574
|
try {
|
|
473
575
|
const id = req.params.id;
|
|
576
|
+
const userId = getRequestUserId(req);
|
|
474
577
|
// Verify plugin exists
|
|
475
|
-
const plugin = pluginService.getPlugin(id);
|
|
578
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
476
579
|
if (!plugin) {
|
|
477
580
|
res.status(404).json({
|
|
478
581
|
success: false,
|
|
@@ -480,9 +583,10 @@ router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
480
583
|
});
|
|
481
584
|
return;
|
|
482
585
|
}
|
|
483
|
-
// Get userId from auth context
|
|
484
|
-
const userId = getRequestUserId(req);
|
|
485
586
|
const success = pluginCredentialsService.deleteApiKey(id, userId);
|
|
587
|
+
if (success) {
|
|
588
|
+
await refreshUserModels(plugin, userId, true);
|
|
589
|
+
}
|
|
486
590
|
res.json({
|
|
487
591
|
success: true,
|
|
488
592
|
data: success,
|
|
@@ -499,8 +603,9 @@ router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
|
|
|
499
603
|
router.get('/:id/credentials/check', async (req, res) => {
|
|
500
604
|
try {
|
|
501
605
|
const id = req.params.id;
|
|
606
|
+
const userId = getRequestUserId(req);
|
|
502
607
|
// Verify plugin exists
|
|
503
|
-
const plugin = pluginService.getPlugin(id);
|
|
608
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
504
609
|
if (!plugin) {
|
|
505
610
|
res.status(404).json({
|
|
506
611
|
success: false,
|
|
@@ -508,9 +613,7 @@ router.get('/:id/credentials/check', async (req, res) => {
|
|
|
508
613
|
});
|
|
509
614
|
return;
|
|
510
615
|
}
|
|
511
|
-
|
|
512
|
-
const userId = getRequestUserId(req);
|
|
513
|
-
const hasKey = pluginCredentialsService.hasApiKey(id, plugin.auth.key_env, userId);
|
|
616
|
+
const hasKey = pluginService.getApiKey(plugin, userId) !== null;
|
|
514
617
|
res.json({
|
|
515
618
|
success: true,
|
|
516
619
|
data: hasKey,
|
|
@@ -530,7 +633,8 @@ router.get('/:id/credentials/check', async (req, res) => {
|
|
|
530
633
|
router.get('/:id/variables', async (req, res) => {
|
|
531
634
|
try {
|
|
532
635
|
const id = req.params.id;
|
|
533
|
-
const
|
|
636
|
+
const userId = getRequestUserId(req);
|
|
637
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
534
638
|
if (!plugin) {
|
|
535
639
|
res.status(404).json({ success: false, error: 'Plugin not found' });
|
|
536
640
|
return;
|
|
@@ -539,9 +643,21 @@ router.get('/:id/variables', async (req, res) => {
|
|
|
539
643
|
res.json({ success: true, data: {} });
|
|
540
644
|
return;
|
|
541
645
|
}
|
|
542
|
-
const userId = getRequestUserId(req);
|
|
543
646
|
const variables = pluginVariablesService.getVariables(id, plugin.variables, userId, true // forDisplay - mask sensitive values
|
|
544
647
|
);
|
|
648
|
+
if (!requestUserIsAdmin(req)) {
|
|
649
|
+
for (const definition of plugin.variables) {
|
|
650
|
+
if (!isPluginConnectionVariableForPlugin(plugin, definition.name)) {
|
|
651
|
+
continue;
|
|
652
|
+
}
|
|
653
|
+
variables[definition.name] = {
|
|
654
|
+
name: definition.name,
|
|
655
|
+
value: definition.sensitive ? '' : (definition.default ?? ''),
|
|
656
|
+
is_sensitive: definition.sensitive ?? false,
|
|
657
|
+
has_value: false,
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
}
|
|
545
661
|
res.json({ success: true, data: variables });
|
|
546
662
|
}
|
|
547
663
|
catch (error) {
|
|
@@ -555,14 +671,17 @@ router.get('/:id/variables', async (req, res) => {
|
|
|
555
671
|
router.put('/:id/variables', pluginRateLimit, async (req, res) => {
|
|
556
672
|
try {
|
|
557
673
|
const id = req.params.id;
|
|
558
|
-
const { variables } = req.body;
|
|
559
|
-
|
|
674
|
+
const { variables, unset } = req.body ?? {};
|
|
675
|
+
const userId = getRequestUserId(req);
|
|
676
|
+
if (!variables ||
|
|
677
|
+
typeof variables !== 'object' ||
|
|
678
|
+
Array.isArray(variables)) {
|
|
560
679
|
res
|
|
561
680
|
.status(400)
|
|
562
681
|
.json({ success: false, error: 'Variables object is required' });
|
|
563
682
|
return;
|
|
564
683
|
}
|
|
565
|
-
const plugin = pluginService.getPlugin(id);
|
|
684
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
566
685
|
if (!plugin) {
|
|
567
686
|
res.status(404).json({ success: false, error: 'Plugin not found' });
|
|
568
687
|
return;
|
|
@@ -574,14 +693,59 @@ router.put('/:id/variables', pluginRateLimit, async (req, res) => {
|
|
|
574
693
|
});
|
|
575
694
|
return;
|
|
576
695
|
}
|
|
696
|
+
const submittedNames = Object.keys(variables);
|
|
697
|
+
const requestedUnsetNames = Array.isArray(unset)
|
|
698
|
+
? unset.filter((name) => typeof name === 'string')
|
|
699
|
+
: [];
|
|
700
|
+
if (!requestUserIsAdmin(req) &&
|
|
701
|
+
[...submittedNames, ...requestedUnsetNames].some(name => isPluginConnectionVariableForPlugin(plugin, name))) {
|
|
702
|
+
res.status(403).json({
|
|
703
|
+
success: false,
|
|
704
|
+
error: 'Administrator access is required to change provider routing',
|
|
705
|
+
});
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
577
708
|
const validation = validatePluginVariables(plugin.variables, variables);
|
|
578
709
|
if (!validation.success) {
|
|
579
710
|
res.status(400).json({ success: false, error: validation.error });
|
|
580
711
|
return;
|
|
581
712
|
}
|
|
582
|
-
const
|
|
583
|
-
|
|
713
|
+
const unsetValidation = validatePluginVariablesToUnset(plugin.variables, unset);
|
|
714
|
+
if (!unsetValidation.success) {
|
|
715
|
+
res.status(400).json({ success: false, error: unsetValidation.error });
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
const validatedSubmittedNames = new Set(Object.keys(validation.variables));
|
|
719
|
+
const overlap = unsetValidation.variables.find(name => validatedSubmittedNames.has(name));
|
|
720
|
+
if (overlap) {
|
|
721
|
+
res.status(400).json({
|
|
722
|
+
success: false,
|
|
723
|
+
error: `Variable "${overlap}" cannot be both set and unset`,
|
|
724
|
+
});
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
const definitionsByName = new Map(plugin.variables.map(definition => [definition.name, definition]));
|
|
728
|
+
const variablesToSet = { ...validation.variables };
|
|
729
|
+
const variablesToUnset = new Set(unsetValidation.variables);
|
|
730
|
+
// A submitted manifest default is inherited state, not a user override.
|
|
731
|
+
// Keep it sparse so trusted environment credentials do not become bound
|
|
732
|
+
// to a redundant stored routing row.
|
|
733
|
+
for (const [name, value] of Object.entries(variablesToSet)) {
|
|
734
|
+
const definition = definitionsByName.get(name);
|
|
735
|
+
if (definition &&
|
|
736
|
+
isPluginConnectionVariableForPlugin(plugin, name) &&
|
|
737
|
+
matchesInheritedDefault(plugin, definition, value)) {
|
|
738
|
+
delete variablesToSet[name];
|
|
739
|
+
variablesToUnset.add(name);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
const previousVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
|
|
743
|
+
const success = pluginVariablesService.setVariables(id, variablesToSet, plugin.variables, userId, [...variablesToUnset]);
|
|
584
744
|
if (success) {
|
|
745
|
+
const nextVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
|
|
746
|
+
if (modelDiscoveryConnectionChanged(plugin, previousVariables, nextVariables)) {
|
|
747
|
+
await refreshUserModels(plugin, userId);
|
|
748
|
+
}
|
|
585
749
|
res.json({ success: true, data: true });
|
|
586
750
|
}
|
|
587
751
|
else {
|
|
@@ -601,14 +765,34 @@ router.put('/:id/variables', pluginRateLimit, async (req, res) => {
|
|
|
601
765
|
router.delete('/:id/variables', pluginRateLimit, async (req, res) => {
|
|
602
766
|
try {
|
|
603
767
|
const id = req.params.id;
|
|
604
|
-
const
|
|
768
|
+
const userId = getRequestUserId(req);
|
|
769
|
+
const plugin = pluginService.getPlugin(id, userId);
|
|
605
770
|
if (!plugin) {
|
|
606
771
|
res.status(404).json({ success: false, error: 'Plugin not found' });
|
|
607
772
|
return;
|
|
608
773
|
}
|
|
609
|
-
|
|
774
|
+
// A full account-scoped reset also purges ignored legacy routing rows.
|
|
775
|
+
// Non-admins still cannot target routing variables through the update
|
|
776
|
+
// endpoint, but reset must not leave dormant values that a later role
|
|
777
|
+
// promotion could reactivate.
|
|
778
|
+
const previousVariables = plugin.variables
|
|
779
|
+
? pluginVariablesService.getResolvedVariables(id, plugin.variables, userId)
|
|
780
|
+
: {};
|
|
610
781
|
const success = pluginVariablesService.deletePluginVariables(id, userId);
|
|
611
|
-
|
|
782
|
+
if (!success) {
|
|
783
|
+
res.status(500).json({
|
|
784
|
+
success: false,
|
|
785
|
+
error: 'Failed to reset plugin variables',
|
|
786
|
+
});
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
789
|
+
if (plugin.variables) {
|
|
790
|
+
const nextVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
|
|
791
|
+
if (modelDiscoveryConnectionChanged(plugin, previousVariables, nextVariables)) {
|
|
792
|
+
await refreshUserModels(plugin, userId);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
res.json({ success: true, data: true });
|
|
612
796
|
}
|
|
613
797
|
catch (error) {
|
|
614
798
|
res.status(500).json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/routes/preferences.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/routes/preferences.ts"],"names":[],"mappings":"AA4BA,QAAA,MAAM,MAAM,4CAAmB,CAAC;AAoYhC,eAAe,MAAM,CAAC"}
|
|
@@ -19,6 +19,7 @@ import rateLimit from 'express-rate-limit';
|
|
|
19
19
|
import preferencesService from '../services/preferencesService.js';
|
|
20
20
|
import { getErrorMessage, } from '../types/index.js';
|
|
21
21
|
import { authenticate } from '../middleware/auth.js';
|
|
22
|
+
import { ChatProviderSelectionError } from '../utils/chatProviderSelection.js';
|
|
22
23
|
const router = express.Router();
|
|
23
24
|
// Rate limiter for preferences routes: 30 requests per minute (reasonable for settings)
|
|
24
25
|
const preferencesRateLimiter = rateLimit({
|
|
@@ -78,7 +79,7 @@ router.put('/', async (req, res) => {
|
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
81
|
catch (error) {
|
|
81
|
-
res.status(500).json({
|
|
82
|
+
res.status(error instanceof ChatProviderSelectionError ? 400 : 500).json({
|
|
82
83
|
success: false,
|
|
83
84
|
error: getErrorMessage(error, 'Failed to update preferences'),
|
|
84
85
|
});
|
|
@@ -95,7 +96,7 @@ router.put('/default-model', async (req, res) => {
|
|
|
95
96
|
});
|
|
96
97
|
return;
|
|
97
98
|
}
|
|
98
|
-
const { model } = req.body;
|
|
99
|
+
const { model, providerType, providerId } = req.body;
|
|
99
100
|
if (!model) {
|
|
100
101
|
res.status(400).json({
|
|
101
102
|
success: false,
|
|
@@ -103,14 +104,14 @@ router.put('/default-model', async (req, res) => {
|
|
|
103
104
|
});
|
|
104
105
|
return;
|
|
105
106
|
}
|
|
106
|
-
const updatedPreferences = preferencesService.setDefaultModel(model, userId);
|
|
107
|
+
const updatedPreferences = preferencesService.setDefaultModel(model, userId, { providerType, providerId });
|
|
107
108
|
res.json({
|
|
108
109
|
success: true,
|
|
109
110
|
data: updatedPreferences,
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
catch (error) {
|
|
113
|
-
res.status(500).json({
|
|
114
|
+
res.status(error instanceof ChatProviderSelectionError ? 400 : 500).json({
|
|
114
115
|
success: false,
|
|
115
116
|
error: getErrorMessage(error, 'Failed to set default model'),
|
|
116
117
|
});
|