libre-webui 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/README.md +26 -10
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +63 -0
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +4 -4
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/routes/chat.d.ts.map +1 -1
  9. package/backend/dist/routes/chat.js +93 -10
  10. package/backend/dist/routes/chat.js.map +1 -1
  11. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  12. package/backend/dist/routes/imageGen.js +52 -29
  13. package/backend/dist/routes/imageGen.js.map +1 -1
  14. package/backend/dist/routes/plugins.d.ts.map +1 -1
  15. package/backend/dist/routes/plugins.js +218 -41
  16. package/backend/dist/routes/plugins.js.map +1 -1
  17. package/backend/dist/routes/preferences.d.ts.map +1 -1
  18. package/backend/dist/routes/preferences.js +5 -4
  19. package/backend/dist/routes/preferences.js.map +1 -1
  20. package/backend/dist/routes/tts.js +2 -2
  21. package/backend/dist/routes/tts.js.map +1 -1
  22. package/backend/dist/services/assistantCompletionService.d.ts +2 -1
  23. package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
  24. package/backend/dist/services/assistantCompletionService.js +3 -1
  25. package/backend/dist/services/assistantCompletionService.js.map +1 -1
  26. package/backend/dist/services/chatGenerationService.d.ts +5 -3
  27. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  28. package/backend/dist/services/chatGenerationService.js +18 -6
  29. package/backend/dist/services/chatGenerationService.js.map +1 -1
  30. package/backend/dist/services/chatRequestService.d.ts +6 -4
  31. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  32. package/backend/dist/services/chatRequestService.js +10 -2
  33. package/backend/dist/services/chatRequestService.js.map +1 -1
  34. package/backend/dist/services/chatService.d.ts +2 -2
  35. package/backend/dist/services/chatService.d.ts.map +1 -1
  36. package/backend/dist/services/chatService.js +29 -17
  37. package/backend/dist/services/chatService.js.map +1 -1
  38. package/backend/dist/services/embeddingService.js +1 -1
  39. package/backend/dist/services/embeddingService.js.map +1 -1
  40. package/backend/dist/services/pluginActivationService.d.ts +11 -0
  41. package/backend/dist/services/pluginActivationService.d.ts.map +1 -0
  42. package/backend/dist/services/pluginActivationService.js +163 -0
  43. package/backend/dist/services/pluginActivationService.js.map +1 -0
  44. package/backend/dist/services/pluginCapabilityRegistryService.d.ts +1 -1
  45. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  46. package/backend/dist/services/pluginCapabilityRegistryService.js +1 -1
  47. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  48. package/backend/dist/services/pluginCredentialsService.d.ts +16 -8
  49. package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
  50. package/backend/dist/services/pluginCredentialsService.js +47 -14
  51. package/backend/dist/services/pluginCredentialsService.js.map +1 -1
  52. package/backend/dist/services/pluginEmbeddingService.d.ts +2 -2
  53. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
  54. package/backend/dist/services/pluginEmbeddingService.js +33 -13
  55. package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
  56. package/backend/dist/services/pluginImageGenerationService.d.ts +11 -7
  57. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  58. package/backend/dist/services/pluginImageGenerationService.js +265 -81
  59. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  60. package/backend/dist/services/pluginService.d.ts +55 -25
  61. package/backend/dist/services/pluginService.d.ts.map +1 -1
  62. package/backend/dist/services/pluginService.js +663 -174
  63. package/backend/dist/services/pluginService.js.map +1 -1
  64. package/backend/dist/services/pluginTTSService.d.ts +4 -4
  65. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  66. package/backend/dist/services/pluginTTSService.js +24 -28
  67. package/backend/dist/services/pluginTTSService.js.map +1 -1
  68. package/backend/dist/services/pluginVariablesService.d.ts +6 -1
  69. package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
  70. package/backend/dist/services/pluginVariablesService.js +59 -1
  71. package/backend/dist/services/pluginVariablesService.js.map +1 -1
  72. package/backend/dist/services/preferencesService.d.ts +2 -2
  73. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  74. package/backend/dist/services/preferencesService.js +78 -10
  75. package/backend/dist/services/preferencesService.js.map +1 -1
  76. package/backend/dist/services/titleGenerationService.d.ts +6 -4
  77. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  78. package/backend/dist/services/titleGenerationService.js +9 -5
  79. package/backend/dist/services/titleGenerationService.js.map +1 -1
  80. package/backend/dist/services/workAgentGuidance.d.ts +1 -0
  81. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  82. package/backend/dist/services/workAgentGuidance.js +2 -0
  83. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  84. package/backend/dist/services/workAgentService.d.ts +5 -2
  85. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  86. package/backend/dist/services/workAgentService.js +379 -53
  87. package/backend/dist/services/workAgentService.js.map +1 -1
  88. package/backend/dist/services/workModelProviderService.d.ts +8 -3
  89. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  90. package/backend/dist/services/workModelProviderService.js +293 -33
  91. package/backend/dist/services/workModelProviderService.js.map +1 -1
  92. package/backend/dist/services/workTaskService.d.ts +2 -0
  93. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  94. package/backend/dist/services/workTaskService.js +89 -14
  95. package/backend/dist/services/workTaskService.js.map +1 -1
  96. package/backend/dist/storage.d.ts.map +1 -1
  97. package/backend/dist/storage.js +9 -6
  98. package/backend/dist/storage.js.map +1 -1
  99. package/backend/dist/storageMappers.d.ts +3 -0
  100. package/backend/dist/storageMappers.d.ts.map +1 -1
  101. package/backend/dist/storageMappers.js +3 -0
  102. package/backend/dist/storageMappers.js.map +1 -1
  103. package/backend/dist/types/index.d.ts +54 -1
  104. package/backend/dist/types/index.d.ts.map +1 -1
  105. package/backend/dist/types/index.js.map +1 -1
  106. package/backend/dist/types/work.d.ts +1 -1
  107. package/backend/dist/types/work.d.ts.map +1 -1
  108. package/backend/dist/utils/chatContext.d.ts +13 -1
  109. package/backend/dist/utils/chatContext.d.ts.map +1 -1
  110. package/backend/dist/utils/chatContext.js +52 -0
  111. package/backend/dist/utils/chatContext.js.map +1 -1
  112. package/backend/dist/utils/chatProviderSelection.d.ts +15 -0
  113. package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -0
  114. package/backend/dist/utils/chatProviderSelection.js +59 -0
  115. package/backend/dist/utils/chatProviderSelection.js.map +1 -0
  116. package/backend/dist/utils/imageGenerationValidation.d.ts +3 -0
  117. package/backend/dist/utils/imageGenerationValidation.d.ts.map +1 -0
  118. package/backend/dist/utils/imageGenerationValidation.js +55 -0
  119. package/backend/dist/utils/imageGenerationValidation.js.map +1 -0
  120. package/backend/dist/utils/ollamaLibrary.d.ts.map +1 -1
  121. package/backend/dist/utils/ollamaLibrary.js +81 -8
  122. package/backend/dist/utils/ollamaLibrary.js.map +1 -1
  123. package/backend/dist/utils/openAIResponsesAdapter.d.ts +88 -0
  124. package/backend/dist/utils/openAIResponsesAdapter.d.ts.map +1 -0
  125. package/backend/dist/utils/openAIResponsesAdapter.js +521 -0
  126. package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -0
  127. package/backend/dist/utils/pluginChatAdapter.d.ts +7 -4
  128. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
  129. package/backend/dist/utils/pluginChatAdapter.js +33 -5
  130. package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
  131. package/backend/dist/utils/pluginChatContext.d.ts.map +1 -1
  132. package/backend/dist/utils/pluginChatContext.js +5 -1
  133. package/backend/dist/utils/pluginChatContext.js.map +1 -1
  134. package/backend/dist/utils/pluginConnectionVariables.d.ts +6 -0
  135. package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -0
  136. package/backend/dist/utils/pluginConnectionVariables.js +52 -0
  137. package/backend/dist/utils/pluginConnectionVariables.js.map +1 -0
  138. package/backend/dist/utils/pluginDefinitionTrust.d.ts +9 -0
  139. package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -0
  140. package/backend/dist/utils/pluginDefinitionTrust.js +71 -0
  141. package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -0
  142. package/backend/dist/utils/pluginStreamAdapter.d.ts +3 -0
  143. package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
  144. package/backend/dist/utils/pluginStreamAdapter.js +410 -0
  145. package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
  146. package/backend/dist/utils/pluginStreaming.d.ts +7 -1
  147. package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
  148. package/backend/dist/utils/pluginStreaming.js +12 -1
  149. package/backend/dist/utils/pluginStreaming.js.map +1 -1
  150. package/backend/dist/utils/pluginValidation.d.ts +21 -2
  151. package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
  152. package/backend/dist/utils/pluginValidation.js +190 -17
  153. package/backend/dist/utils/pluginValidation.js.map +1 -1
  154. package/backend/dist/utils/pluginVariableValidation.d.ts +7 -0
  155. package/backend/dist/utils/pluginVariableValidation.d.ts.map +1 -1
  156. package/backend/dist/utils/pluginVariableValidation.js +79 -4
  157. package/backend/dist/utils/pluginVariableValidation.js.map +1 -1
  158. package/backend/dist/websocketServer.d.ts.map +1 -1
  159. package/backend/dist/websocketServer.js +16 -3
  160. package/backend/dist/websocketServer.js.map +1 -1
  161. package/backend/package.json +1 -1
  162. package/frontend/dist/assets/index-CKV9Lnj8.js +5 -0
  163. package/frontend/dist/assets/index-Dme2Ozol.css +1 -0
  164. package/frontend/dist/index.html +4 -4
  165. package/frontend/dist/js/{ArtifactContainer-CXfmVx8T.js → ArtifactContainer-B0uVR8Z9.js} +1 -1
  166. package/frontend/dist/js/{ArtifactDemoPage-B1_AuMd2.js → ArtifactDemoPage-DBVPHFxk.js} +1 -1
  167. package/frontend/dist/js/{ArtifactSlideOutPanel-C0eTguNL.js → ArtifactSlideOutPanel-Cg5kAwv9.js} +1 -1
  168. package/frontend/dist/js/ChatPage-CPHlIZqU.js +16 -0
  169. package/frontend/dist/js/{FirstTimeSetup-DOoZUaRs.js → FirstTimeSetup-DksL5arK.js} +1 -1
  170. package/frontend/dist/js/GalleryPage-1mdUGo_N.js +1 -0
  171. package/frontend/dist/js/LibreClawPage-qGr1Jy8p.js +1 -0
  172. package/frontend/dist/js/{ModelManagerModals-DneqFQJC.js → ModelManagerModals-DltRprHU.js} +1 -1
  173. package/frontend/dist/js/ModelSelector-CUnwRmNU.js +1 -0
  174. package/frontend/dist/js/ModelsPage-DMYVg3LT.js +2 -0
  175. package/frontend/dist/js/PersonasPage-Ct-KKW-j.js +13 -0
  176. package/frontend/dist/js/{RichMessageContent-WQLdJ5jq.js → RichMessageContent-CGBAcUES.js} +1 -1
  177. package/frontend/dist/js/SettingsModal-BVj3gFCS.js +1 -0
  178. package/frontend/dist/js/UserManagementPage-D3tLGtTu.js +1 -0
  179. package/frontend/dist/js/WorkPage-DhTjy-kf.js +2 -0
  180. package/frontend/dist/js/api-YWoSobKv.js +19 -0
  181. package/frontend/dist/js/{ar-CCVY0-7X.js → ar-KceI0PfT.js} +1 -1
  182. package/frontend/dist/js/{bn-CoU5CSph.js → bn-DsKo2dzS.js} +1 -1
  183. package/frontend/dist/js/{cs-CR6pjIbG.js → cs-6UKhKj0A.js} +1 -1
  184. package/frontend/dist/js/{da-CkyYITRz.js → da-CJgZ3YuL.js} +1 -1
  185. package/frontend/dist/js/{de-DwNANzB-.js → de-BZAmOuCT.js} +1 -1
  186. package/frontend/dist/js/{es-TxygiaVQ.js → es-CD4u7no9.js} +1 -1
  187. package/frontend/dist/js/{estree-DPzMpjFm.js → estree-PDLT672k.js} +1 -1
  188. package/frontend/dist/js/{fr-DvEqVpZr.js → fr-Cou2jOS3.js} +1 -1
  189. package/frontend/dist/js/{hi-CyrWkyh7.js → hi-ZxkbNCyB.js} +1 -1
  190. package/frontend/dist/js/{html-R50jmBYq.js → html-CkhF9wDQ.js} +1 -1
  191. package/frontend/dist/js/{id-PJjIGHGM.js → id-DT9CqaWQ.js} +1 -1
  192. package/frontend/dist/js/{is-ChXcN1tI.js → is-BWSbAIoq.js} +1 -1
  193. package/frontend/dist/js/{it-DsgM8-MJ.js → it-CdNoTXm3.js} +1 -1
  194. package/frontend/dist/js/{ja-ivtt80N2.js → ja-CIuQg0xv.js} +1 -1
  195. package/frontend/dist/js/{ko-B8l_Ice1.js → ko-BWRUjDOH.js} +1 -1
  196. package/frontend/dist/js/{markdown-C08x2H-K.js → markdown-B1iNUbse.js} +1 -1
  197. package/frontend/dist/js/{ms-DoUBI6Qi.js → ms-gJstIj2a.js} +1 -1
  198. package/frontend/dist/js/{nl-DsX5Hj8m.js → nl-CydjVNUw.js} +1 -1
  199. package/frontend/dist/js/{pl-Db_NKL4x.js → pl-DPN9mAa5.js} +1 -1
  200. package/frontend/dist/js/{pt-CpzBhb5J.js → pt-MRXGqIjQ.js} +1 -1
  201. package/frontend/dist/js/{ru-DCXvJyXJ.js → ru-CvQ9GkJF.js} +1 -1
  202. package/frontend/dist/js/{standalone-DpMZUvjd.js → standalone-CCd6rkf-.js} +1 -1
  203. package/frontend/dist/js/{sv-DcVoybc7.js → sv-BxS2fvhU.js} +1 -1
  204. package/frontend/dist/js/{th-D0G7HyQn.js → th-DMxyn6e4.js} +1 -1
  205. package/frontend/dist/js/{tr-CMDOh4Aq.js → tr-BTPldUaA.js} +1 -1
  206. package/frontend/dist/js/{typescript-B6y_hxBm.js → typescript-DKJ1uM5L.js} +1 -1
  207. package/frontend/dist/js/ui-vendor-CAFEDSaO.js +177 -0
  208. package/frontend/dist/js/{uk-D2MMa6LP.js → uk-BGxZOKgp.js} +1 -1
  209. package/frontend/dist/js/useBaseQuery-MuQj7vA5.js +1 -0
  210. package/frontend/dist/js/useQuery-CYGPkxWR.js +1 -0
  211. package/frontend/dist/js/{vi-B8uHT8yh.js → vi-82JkwFsQ.js} +1 -1
  212. package/frontend/dist/js/{zh-CNqa_15K.js → zh-Bxxfwci3.js} +1 -1
  213. package/package.json +3 -2
  214. package/plugins/github.json +1 -2
  215. package/plugins/huggingface.json +30 -30
  216. package/plugins/mlx-lm.json +55 -0
  217. package/plugins/openai.json +53 -22
  218. package/frontend/dist/assets/index-Bv-twCuY.css +0 -1
  219. package/frontend/dist/assets/index-uCHBH_PM.js +0 -5
  220. package/frontend/dist/js/ChatPage-1bK0gDBy.js +0 -16
  221. package/frontend/dist/js/GalleryPage-6WwyH3kt.js +0 -1
  222. package/frontend/dist/js/LibreClawPage-ChHVfPLb.js +0 -1
  223. package/frontend/dist/js/ModelsPage-Dw6wdiMt.js +0 -2
  224. package/frontend/dist/js/PersonasPage-BxdI2e1-.js +0 -13
  225. package/frontend/dist/js/SettingsModal-C-cK6TNb.js +0 -1
  226. package/frontend/dist/js/UserManagementPage-DqjNXPkf.js +0 -1
  227. package/frontend/dist/js/WorkPage-MGR3odo6.js +0 -2
  228. package/frontend/dist/js/api-DD5qhhLf.js +0 -19
  229. package/frontend/dist/js/ui-vendor-DUqvZsfs.js +0 -177
  230. package/frontend/dist/js/useBaseQuery-Duml3DYp.js +0 -1
  231. package/frontend/dist/js/useQuery-C0lZwNoc.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) => req.user?.userId || 'default';
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,7 @@ const uploadRateLimit = rateLimit({
47
132
  // Get all plugins
48
133
  router.get('/', async (req, res) => {
49
134
  try {
50
- const plugins = pluginService.getAllPlugins();
135
+ const plugins = pluginService.getAllPlugins(getRequestUserId(req));
51
136
  res.json({
52
137
  success: true,
53
138
  data: plugins,
@@ -63,7 +148,7 @@ router.get('/', async (req, res) => {
63
148
  // Get active plugins
64
149
  router.get('/active', async (req, res) => {
65
150
  try {
66
- const activePlugins = pluginService.getActivePlugins();
151
+ const activePlugins = pluginService.getActivePlugins(getRequestUserId(req));
67
152
  res.json({
68
153
  success: true,
69
154
  data: activePlugins,
@@ -79,7 +164,7 @@ router.get('/active', async (req, res) => {
79
164
  // Get active plugin (alternative route)
80
165
  router.get('/active/current', async (req, res) => {
81
166
  try {
82
- const activePlugin = pluginService.getActivePlugin();
167
+ const activePlugin = pluginService.getActivePlugin(getRequestUserId(req));
83
168
  res.json({
84
169
  success: true,
85
170
  data: activePlugin,
@@ -95,7 +180,7 @@ router.get('/active/current', async (req, res) => {
95
180
  // Get plugin status
96
181
  router.get('/status/all', async (req, res) => {
97
182
  try {
98
- const status = pluginService.getPluginStatus();
183
+ const status = pluginService.getPluginStatus(getRequestUserId(req));
99
184
  res.json({
100
185
  success: true,
101
186
  data: status,
@@ -112,7 +197,7 @@ router.get('/status/all', async (req, res) => {
112
197
  router.get('/:id', async (req, res) => {
113
198
  try {
114
199
  const id = req.params.id;
115
- const plugin = pluginService.getPlugin(id);
200
+ const plugin = pluginService.getPlugin(id, getRequestUserId(req));
116
201
  if (!plugin) {
117
202
  res.status(404).json({
118
203
  success: false,
@@ -133,7 +218,7 @@ router.get('/:id', async (req, res) => {
133
218
  }
134
219
  });
135
220
  // Upload and install a plugin
136
- router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res) => {
221
+ router.post('/upload', requireAdmin, uploadRateLimit, upload.single('plugin'), async (req, res) => {
137
222
  const tempDir = path.resolve('temp/');
138
223
  try {
139
224
  if (!req.file) {
@@ -181,7 +266,7 @@ router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res
181
266
  // Clean up uploaded file after reading
182
267
  safeCleanupFile(req.file.path, tempDir);
183
268
  // Install the plugin
184
- const plugin = pluginService.importPlugin(pluginData);
269
+ const plugin = pluginService.importPlugin(pluginData, getRequestUserId(req));
185
270
  res.json({
186
271
  success: true,
187
272
  data: plugin,
@@ -214,10 +299,10 @@ router.post('/upload', uploadRateLimit, upload.single('plugin'), async (req, res
214
299
  }
215
300
  });
216
301
  // Install plugin from JSON data (alternative to file upload)
217
- router.post('/install', pluginRateLimit, async (req, res) => {
302
+ router.post('/install', requireAdmin, pluginRateLimit, async (req, res) => {
218
303
  try {
219
304
  const pluginData = req.body;
220
- const plugin = pluginService.installPlugin(pluginData);
305
+ const plugin = pluginService.installPlugin(pluginData, getRequestUserId(req));
221
306
  res.json({
222
307
  success: true,
223
308
  data: plugin,
@@ -246,7 +331,7 @@ router.post('/install', pluginRateLimit, async (req, res) => {
246
331
  }
247
332
  });
248
333
  // Update a plugin
249
- router.put('/:id', pluginRateLimit, async (req, res) => {
334
+ router.put('/:id', requireAdmin, pluginRateLimit, async (req, res) => {
250
335
  try {
251
336
  const id = req.params.id;
252
337
  const updates = req.body;
@@ -259,7 +344,7 @@ router.put('/:id', pluginRateLimit, async (req, res) => {
259
344
  return;
260
345
  }
261
346
  updates.id = id;
262
- const plugin = pluginService.installPlugin(updates);
347
+ const plugin = pluginService.installPlugin(updates, getRequestUserId(req));
263
348
  res.json({
264
349
  success: true,
265
350
  data: plugin,
@@ -273,7 +358,7 @@ router.put('/:id', pluginRateLimit, async (req, res) => {
273
358
  }
274
359
  });
275
360
  // Delete a plugin
276
- router.delete('/:id', pluginRateLimit, async (req, res) => {
361
+ router.delete('/:id', requireAdmin, pluginRateLimit, async (req, res) => {
277
362
  try {
278
363
  const id = req.params.id;
279
364
  const success = pluginService.deletePlugin(id);
@@ -300,7 +385,8 @@ router.delete('/:id', pluginRateLimit, async (req, res) => {
300
385
  router.post('/activate/:id', pluginRateLimit, async (req, res) => {
301
386
  try {
302
387
  const id = req.params.id;
303
- const success = pluginService.activatePlugin(id);
388
+ const userId = getRequestUserId(req);
389
+ const success = await pluginService.activatePlugin(id, userId);
304
390
  res.json({
305
391
  success: true,
306
392
  data: success,
@@ -326,7 +412,7 @@ router.post('/activate/:id', pluginRateLimit, async (req, res) => {
326
412
  router.post('/discover/:id', pluginRateLimit, async (req, res) => {
327
413
  try {
328
414
  const id = req.params.id;
329
- const models = await pluginService.discoverModels(id);
415
+ const models = await pluginService.discoverModels(id, getRequestUserId(req));
330
416
  res.json({
331
417
  success: true,
332
418
  data: models,
@@ -343,7 +429,7 @@ router.post('/discover/:id', pluginRateLimit, async (req, res) => {
343
429
  router.post('/deactivate/:id', pluginRateLimit, async (req, res) => {
344
430
  try {
345
431
  const id = req.params.id;
346
- const success = pluginService.deactivatePlugin(id);
432
+ const success = pluginService.deactivatePlugin(id, getRequestUserId(req));
347
433
  res.json({
348
434
  success: true,
349
435
  data: success,
@@ -359,7 +445,7 @@ router.post('/deactivate/:id', pluginRateLimit, async (req, res) => {
359
445
  // Deactivate all plugins (legacy)
360
446
  router.post('/deactivate', pluginRateLimit, async (req, res) => {
361
447
  try {
362
- const success = pluginService.deactivatePlugin();
448
+ const success = pluginService.deactivatePlugin(undefined, getRequestUserId(req));
363
449
  res.json({
364
450
  success: true,
365
451
  data: success,
@@ -376,7 +462,7 @@ router.post('/deactivate', pluginRateLimit, async (req, res) => {
376
462
  router.get('/:id/export', async (req, res) => {
377
463
  try {
378
464
  const id = req.params.id;
379
- const plugin = pluginService.exportPlugin(id);
465
+ const plugin = pluginService.exportPlugin(id, getRequestUserId(req));
380
466
  if (!plugin) {
381
467
  res.status(404).json({
382
468
  success: false,
@@ -410,7 +496,16 @@ router.get('/credentials/all', async (req, res) => {
410
496
  try {
411
497
  // Get userId from auth context (defaults to 'default' for single-user mode)
412
498
  const userId = getRequestUserId(req);
413
- const credentials = pluginCredentialsService.getCredentials(userId);
499
+ const credentials = pluginCredentialsService
500
+ .getCredentials(userId)
501
+ .map(credential => {
502
+ const plugin = pluginService.getPlugin(credential.plugin_id, userId);
503
+ return {
504
+ ...credential,
505
+ has_api_key: plugin !== null &&
506
+ pluginService.getApiKey(plugin, userId) !== null,
507
+ };
508
+ });
414
509
  res.json({
415
510
  success: true,
416
511
  data: credentials,
@@ -428,6 +523,7 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
428
523
  try {
429
524
  const id = req.params.id;
430
525
  const { api_key } = req.body;
526
+ const userId = getRequestUserId(req);
431
527
  if (!api_key || typeof api_key !== 'string') {
432
528
  res.status(400).json({
433
529
  success: false,
@@ -436,7 +532,7 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
436
532
  return;
437
533
  }
438
534
  // Verify plugin exists
439
- const plugin = pluginService.getPlugin(id);
535
+ const plugin = pluginService.getPlugin(id, userId);
440
536
  if (!plugin) {
441
537
  res.status(404).json({
442
538
  success: false,
@@ -444,10 +540,9 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
444
540
  });
445
541
  return;
446
542
  }
447
- // Get userId from auth context
448
- const userId = getRequestUserId(req);
449
- const success = pluginCredentialsService.setApiKey(id, api_key, userId);
543
+ const success = pluginCredentialsService.setApiKey(id, api_key, userId, pluginService.getCredentialRoutingAuthFingerprint(plugin, userId));
450
544
  if (success) {
545
+ await refreshUserModels(plugin, userId, true);
451
546
  res.json({
452
547
  success: true,
453
548
  data: true,
@@ -471,8 +566,9 @@ router.post('/:id/credentials', pluginRateLimit, async (req, res) => {
471
566
  router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
472
567
  try {
473
568
  const id = req.params.id;
569
+ const userId = getRequestUserId(req);
474
570
  // Verify plugin exists
475
- const plugin = pluginService.getPlugin(id);
571
+ const plugin = pluginService.getPlugin(id, userId);
476
572
  if (!plugin) {
477
573
  res.status(404).json({
478
574
  success: false,
@@ -480,9 +576,10 @@ router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
480
576
  });
481
577
  return;
482
578
  }
483
- // Get userId from auth context
484
- const userId = getRequestUserId(req);
485
579
  const success = pluginCredentialsService.deleteApiKey(id, userId);
580
+ if (success) {
581
+ await refreshUserModels(plugin, userId, true);
582
+ }
486
583
  res.json({
487
584
  success: true,
488
585
  data: success,
@@ -499,8 +596,9 @@ router.delete('/:id/credentials', pluginRateLimit, async (req, res) => {
499
596
  router.get('/:id/credentials/check', async (req, res) => {
500
597
  try {
501
598
  const id = req.params.id;
599
+ const userId = getRequestUserId(req);
502
600
  // Verify plugin exists
503
- const plugin = pluginService.getPlugin(id);
601
+ const plugin = pluginService.getPlugin(id, userId);
504
602
  if (!plugin) {
505
603
  res.status(404).json({
506
604
  success: false,
@@ -508,9 +606,7 @@ router.get('/:id/credentials/check', async (req, res) => {
508
606
  });
509
607
  return;
510
608
  }
511
- // Get userId from auth context
512
- const userId = getRequestUserId(req);
513
- const hasKey = pluginCredentialsService.hasApiKey(id, plugin.auth.key_env, userId);
609
+ const hasKey = pluginService.getApiKey(plugin, userId) !== null;
514
610
  res.json({
515
611
  success: true,
516
612
  data: hasKey,
@@ -530,7 +626,8 @@ router.get('/:id/credentials/check', async (req, res) => {
530
626
  router.get('/:id/variables', async (req, res) => {
531
627
  try {
532
628
  const id = req.params.id;
533
- const plugin = pluginService.getPlugin(id);
629
+ const userId = getRequestUserId(req);
630
+ const plugin = pluginService.getPlugin(id, userId);
534
631
  if (!plugin) {
535
632
  res.status(404).json({ success: false, error: 'Plugin not found' });
536
633
  return;
@@ -539,9 +636,21 @@ router.get('/:id/variables', async (req, res) => {
539
636
  res.json({ success: true, data: {} });
540
637
  return;
541
638
  }
542
- const userId = getRequestUserId(req);
543
639
  const variables = pluginVariablesService.getVariables(id, plugin.variables, userId, true // forDisplay - mask sensitive values
544
640
  );
641
+ if (!requestUserIsAdmin(req)) {
642
+ for (const definition of plugin.variables) {
643
+ if (!isPluginConnectionVariableForPlugin(plugin, definition.name)) {
644
+ continue;
645
+ }
646
+ variables[definition.name] = {
647
+ name: definition.name,
648
+ value: definition.sensitive ? '' : (definition.default ?? ''),
649
+ is_sensitive: definition.sensitive ?? false,
650
+ has_value: false,
651
+ };
652
+ }
653
+ }
545
654
  res.json({ success: true, data: variables });
546
655
  }
547
656
  catch (error) {
@@ -555,14 +664,17 @@ router.get('/:id/variables', async (req, res) => {
555
664
  router.put('/:id/variables', pluginRateLimit, async (req, res) => {
556
665
  try {
557
666
  const id = req.params.id;
558
- const { variables } = req.body;
559
- if (!variables || typeof variables !== 'object') {
667
+ const { variables, unset } = req.body ?? {};
668
+ const userId = getRequestUserId(req);
669
+ if (!variables ||
670
+ typeof variables !== 'object' ||
671
+ Array.isArray(variables)) {
560
672
  res
561
673
  .status(400)
562
674
  .json({ success: false, error: 'Variables object is required' });
563
675
  return;
564
676
  }
565
- const plugin = pluginService.getPlugin(id);
677
+ const plugin = pluginService.getPlugin(id, userId);
566
678
  if (!plugin) {
567
679
  res.status(404).json({ success: false, error: 'Plugin not found' });
568
680
  return;
@@ -574,14 +686,59 @@ router.put('/:id/variables', pluginRateLimit, async (req, res) => {
574
686
  });
575
687
  return;
576
688
  }
689
+ const submittedNames = Object.keys(variables);
690
+ const requestedUnsetNames = Array.isArray(unset)
691
+ ? unset.filter((name) => typeof name === 'string')
692
+ : [];
693
+ if (!requestUserIsAdmin(req) &&
694
+ [...submittedNames, ...requestedUnsetNames].some(name => isPluginConnectionVariableForPlugin(plugin, name))) {
695
+ res.status(403).json({
696
+ success: false,
697
+ error: 'Administrator access is required to change provider routing',
698
+ });
699
+ return;
700
+ }
577
701
  const validation = validatePluginVariables(plugin.variables, variables);
578
702
  if (!validation.success) {
579
703
  res.status(400).json({ success: false, error: validation.error });
580
704
  return;
581
705
  }
582
- const userId = getRequestUserId(req);
583
- const success = pluginVariablesService.setVariables(id, validation.variables, plugin.variables, userId);
706
+ const unsetValidation = validatePluginVariablesToUnset(plugin.variables, unset);
707
+ if (!unsetValidation.success) {
708
+ res.status(400).json({ success: false, error: unsetValidation.error });
709
+ return;
710
+ }
711
+ const validatedSubmittedNames = new Set(Object.keys(validation.variables));
712
+ const overlap = unsetValidation.variables.find(name => validatedSubmittedNames.has(name));
713
+ if (overlap) {
714
+ res.status(400).json({
715
+ success: false,
716
+ error: `Variable "${overlap}" cannot be both set and unset`,
717
+ });
718
+ return;
719
+ }
720
+ const definitionsByName = new Map(plugin.variables.map(definition => [definition.name, definition]));
721
+ const variablesToSet = { ...validation.variables };
722
+ const variablesToUnset = new Set(unsetValidation.variables);
723
+ // A submitted manifest default is inherited state, not a user override.
724
+ // Keep it sparse so trusted environment credentials do not become bound
725
+ // to a redundant stored routing row.
726
+ for (const [name, value] of Object.entries(variablesToSet)) {
727
+ const definition = definitionsByName.get(name);
728
+ if (definition &&
729
+ isPluginConnectionVariableForPlugin(plugin, name) &&
730
+ matchesInheritedDefault(plugin, definition, value)) {
731
+ delete variablesToSet[name];
732
+ variablesToUnset.add(name);
733
+ }
734
+ }
735
+ const previousVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
736
+ const success = pluginVariablesService.setVariables(id, variablesToSet, plugin.variables, userId, [...variablesToUnset]);
584
737
  if (success) {
738
+ const nextVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
739
+ if (modelDiscoveryConnectionChanged(plugin, previousVariables, nextVariables)) {
740
+ await refreshUserModels(plugin, userId);
741
+ }
585
742
  res.json({ success: true, data: true });
586
743
  }
587
744
  else {
@@ -601,14 +758,34 @@ router.put('/:id/variables', pluginRateLimit, async (req, res) => {
601
758
  router.delete('/:id/variables', pluginRateLimit, async (req, res) => {
602
759
  try {
603
760
  const id = req.params.id;
604
- const plugin = pluginService.getPlugin(id);
761
+ const userId = getRequestUserId(req);
762
+ const plugin = pluginService.getPlugin(id, userId);
605
763
  if (!plugin) {
606
764
  res.status(404).json({ success: false, error: 'Plugin not found' });
607
765
  return;
608
766
  }
609
- const userId = getRequestUserId(req);
767
+ // A full account-scoped reset also purges ignored legacy routing rows.
768
+ // Non-admins still cannot target routing variables through the update
769
+ // endpoint, but reset must not leave dormant values that a later role
770
+ // promotion could reactivate.
771
+ const previousVariables = plugin.variables
772
+ ? pluginVariablesService.getResolvedVariables(id, plugin.variables, userId)
773
+ : {};
610
774
  const success = pluginVariablesService.deletePluginVariables(id, userId);
611
- res.json({ success: true, data: success });
775
+ if (!success) {
776
+ res.status(500).json({
777
+ success: false,
778
+ error: 'Failed to reset plugin variables',
779
+ });
780
+ return;
781
+ }
782
+ if (plugin.variables) {
783
+ const nextVariables = pluginVariablesService.getResolvedVariables(id, plugin.variables, userId);
784
+ if (modelDiscoveryConnectionChanged(plugin, previousVariables, nextVariables)) {
785
+ await refreshUserModels(plugin, userId);
786
+ }
787
+ }
788
+ res.json({ success: true, data: true });
612
789
  }
613
790
  catch (error) {
614
791
  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":"AA2BA,QAAA,MAAM,MAAM,4CAAmB,CAAC;AAmYhC,eAAe,MAAM,CAAC"}
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
  });