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.
Files changed (205) hide show
  1. package/README.md +18 -8
  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 +226 -42
  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/routes/work.d.ts.map +1 -1
  23. package/backend/dist/routes/work.js +2 -1
  24. package/backend/dist/routes/work.js.map +1 -1
  25. package/backend/dist/services/assistantCompletionService.d.ts +2 -1
  26. package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
  27. package/backend/dist/services/assistantCompletionService.js +3 -1
  28. package/backend/dist/services/assistantCompletionService.js.map +1 -1
  29. package/backend/dist/services/chatGenerationService.d.ts +5 -3
  30. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  31. package/backend/dist/services/chatGenerationService.js +18 -6
  32. package/backend/dist/services/chatGenerationService.js.map +1 -1
  33. package/backend/dist/services/chatRequestService.d.ts +6 -4
  34. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  35. package/backend/dist/services/chatRequestService.js +10 -2
  36. package/backend/dist/services/chatRequestService.js.map +1 -1
  37. package/backend/dist/services/chatService.d.ts +2 -2
  38. package/backend/dist/services/chatService.d.ts.map +1 -1
  39. package/backend/dist/services/chatService.js +29 -17
  40. package/backend/dist/services/chatService.js.map +1 -1
  41. package/backend/dist/services/embeddingService.js +1 -1
  42. package/backend/dist/services/embeddingService.js.map +1 -1
  43. package/backend/dist/services/pluginActivationService.d.ts +11 -0
  44. package/backend/dist/services/pluginActivationService.d.ts.map +1 -0
  45. package/backend/dist/services/pluginActivationService.js +163 -0
  46. package/backend/dist/services/pluginActivationService.js.map +1 -0
  47. package/backend/dist/services/pluginCapabilityRegistryService.d.ts +1 -1
  48. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  49. package/backend/dist/services/pluginCapabilityRegistryService.js +1 -1
  50. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  51. package/backend/dist/services/pluginCredentialsService.d.ts +16 -8
  52. package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
  53. package/backend/dist/services/pluginCredentialsService.js +47 -14
  54. package/backend/dist/services/pluginCredentialsService.js.map +1 -1
  55. package/backend/dist/services/pluginEmbeddingService.d.ts +2 -2
  56. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
  57. package/backend/dist/services/pluginEmbeddingService.js +33 -13
  58. package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
  59. package/backend/dist/services/pluginImageGenerationService.d.ts +11 -7
  60. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  61. package/backend/dist/services/pluginImageGenerationService.js +265 -81
  62. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  63. package/backend/dist/services/pluginService.d.ts +97 -26
  64. package/backend/dist/services/pluginService.d.ts.map +1 -1
  65. package/backend/dist/services/pluginService.js +797 -178
  66. package/backend/dist/services/pluginService.js.map +1 -1
  67. package/backend/dist/services/pluginTTSService.d.ts +4 -4
  68. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  69. package/backend/dist/services/pluginTTSService.js +24 -28
  70. package/backend/dist/services/pluginTTSService.js.map +1 -1
  71. package/backend/dist/services/pluginVariablesService.d.ts +6 -1
  72. package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
  73. package/backend/dist/services/pluginVariablesService.js +59 -1
  74. package/backend/dist/services/pluginVariablesService.js.map +1 -1
  75. package/backend/dist/services/preferencesService.d.ts +2 -2
  76. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  77. package/backend/dist/services/preferencesService.js +78 -10
  78. package/backend/dist/services/preferencesService.js.map +1 -1
  79. package/backend/dist/services/titleGenerationService.d.ts +6 -4
  80. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  81. package/backend/dist/services/titleGenerationService.js +9 -5
  82. package/backend/dist/services/titleGenerationService.js.map +1 -1
  83. package/backend/dist/services/workAgentService.d.ts +5 -2
  84. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  85. package/backend/dist/services/workAgentService.js +315 -44
  86. package/backend/dist/services/workAgentService.js.map +1 -1
  87. package/backend/dist/services/workModelProviderService.d.ts +6 -3
  88. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  89. package/backend/dist/services/workModelProviderService.js +243 -19
  90. package/backend/dist/services/workModelProviderService.js.map +1 -1
  91. package/backend/dist/services/workRuntimeService.d.ts +18 -1
  92. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  93. package/backend/dist/services/workRuntimeService.js +62 -11
  94. package/backend/dist/services/workRuntimeService.js.map +1 -1
  95. package/backend/dist/services/workTaskService.d.ts +2 -0
  96. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  97. package/backend/dist/services/workTaskService.js +89 -14
  98. package/backend/dist/services/workTaskService.js.map +1 -1
  99. package/backend/dist/storage.d.ts.map +1 -1
  100. package/backend/dist/storage.js +9 -6
  101. package/backend/dist/storage.js.map +1 -1
  102. package/backend/dist/storageMappers.d.ts +3 -0
  103. package/backend/dist/storageMappers.d.ts.map +1 -1
  104. package/backend/dist/storageMappers.js +3 -0
  105. package/backend/dist/storageMappers.js.map +1 -1
  106. package/backend/dist/types/index.d.ts +54 -1
  107. package/backend/dist/types/index.d.ts.map +1 -1
  108. package/backend/dist/types/index.js.map +1 -1
  109. package/backend/dist/types/work.d.ts +1 -1
  110. package/backend/dist/types/work.d.ts.map +1 -1
  111. package/backend/dist/utils/chatContext.d.ts +13 -1
  112. package/backend/dist/utils/chatContext.d.ts.map +1 -1
  113. package/backend/dist/utils/chatContext.js +52 -0
  114. package/backend/dist/utils/chatContext.js.map +1 -1
  115. package/backend/dist/utils/chatProviderSelection.d.ts +15 -0
  116. package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -0
  117. package/backend/dist/utils/chatProviderSelection.js +59 -0
  118. package/backend/dist/utils/chatProviderSelection.js.map +1 -0
  119. package/backend/dist/utils/imageGenerationValidation.d.ts +3 -0
  120. package/backend/dist/utils/imageGenerationValidation.d.ts.map +1 -0
  121. package/backend/dist/utils/imageGenerationValidation.js +55 -0
  122. package/backend/dist/utils/imageGenerationValidation.js.map +1 -0
  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 +20 -2
  151. package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
  152. package/backend/dist/utils/pluginValidation.js +187 -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-BVgyQN3z.js +5 -0
  163. package/frontend/dist/assets/index-Dme2Ozol.css +1 -0
  164. package/frontend/dist/index.html +3 -3
  165. package/frontend/dist/js/{ArtifactContainer-BHSBrlQB.js → ArtifactContainer-CbMAYwvr.js} +1 -1
  166. package/frontend/dist/js/{ArtifactDemoPage-BHGJmJAT.js → ArtifactDemoPage-CWDhGWrz.js} +1 -1
  167. package/frontend/dist/js/ArtifactSlideOutPanel-CzUpDM59.js +1 -0
  168. package/frontend/dist/js/ChatPage-D0fdzy7a.js +16 -0
  169. package/frontend/dist/js/{FirstTimeSetup-BYWAVAdE.js → FirstTimeSetup-CfnOmy9w.js} +1 -1
  170. package/frontend/dist/js/GalleryPage-CMkCur9v.js +1 -0
  171. package/frontend/dist/js/LibreClawPage-CHEfny1k.js +1 -0
  172. package/frontend/dist/js/ModelSelector-COnlNsVM.js +1 -0
  173. package/frontend/dist/js/ModelsPage-nxheiYJp.js +2 -0
  174. package/frontend/dist/js/PersonasPage-C2pqDsWA.js +13 -0
  175. package/frontend/dist/js/{RichMessageContent-BdU5vXz9.js → RichMessageContent-Cz9y-bgl.js} +1 -1
  176. package/frontend/dist/js/SettingsModal-B6Se68Hd.js +1 -0
  177. package/frontend/dist/js/UserManagementPage-DQeL-Twp.js +1 -0
  178. package/frontend/dist/js/WorkPage-AcZMp8OB.js +2 -0
  179. package/frontend/dist/js/api-Fi-lJlfu.js +19 -0
  180. package/frontend/dist/js/{estree-Bu_-Wi6O.js → estree-BRklD62a.js} +1 -1
  181. package/frontend/dist/js/{html-Ca764Rus.js → html-BgGIAGmn.js} +1 -1
  182. package/frontend/dist/js/{markdown-DaiQGPEs.js → markdown-CM2nBJJi.js} +1 -1
  183. package/frontend/dist/js/{standalone-DWWnsbIr.js → standalone-CUBo-NGt.js} +1 -1
  184. package/frontend/dist/js/{typescript-CatjJeHm.js → typescript-Dcy9qxSB.js} +1 -1
  185. package/frontend/dist/js/useBaseQuery-CFTidwqz.js +1 -0
  186. package/frontend/dist/js/useQuery-UsSBfWzs.js +1 -0
  187. package/package.json +2 -2
  188. package/plugins/github.json +1 -2
  189. package/plugins/huggingface.json +30 -30
  190. package/plugins/openai.json +53 -22
  191. package/frontend/dist/assets/index-DkShhNBf.js +0 -5
  192. package/frontend/dist/assets/index-bdSWBsAM.css +0 -1
  193. package/frontend/dist/js/ArtifactSlideOutPanel-s8vcE5Ea.js +0 -1
  194. package/frontend/dist/js/ChatPage-B6Hm_pdu.js +0 -16
  195. package/frontend/dist/js/GalleryPage-CH4f65q8.js +0 -1
  196. package/frontend/dist/js/LibreClawPage-CcH7M3mJ.js +0 -1
  197. package/frontend/dist/js/ModelSelector-T1KZtIde.js +0 -1
  198. package/frontend/dist/js/ModelsPage-C1bM_Yoc.js +0 -2
  199. package/frontend/dist/js/PersonasPage-T_PrhnPG.js +0 -13
  200. package/frontend/dist/js/SettingsModal-BVj-D1L4.js +0 -1
  201. package/frontend/dist/js/UserManagementPage-Pix71oRW.js +0 -1
  202. package/frontend/dist/js/WorkPage-DdOVGyj_.js +0 -2
  203. package/frontend/dist/js/api-Do6u0tMM.js +0 -19
  204. package/frontend/dist/js/useBaseQuery-CVNuhuID.js +0 -1
  205. package/frontend/dist/js/useQuery-CYhC_da4.js +0 -1
@@ -21,6 +21,8 @@ import { personaService } from './personaService.js';
21
21
  import { memoryService } from './memoryService.js';
22
22
  import { mutationEngineService } from './mutationEngineService.js';
23
23
  import { createLogger } from '../utils/logger.js';
24
+ import { normalizeChatProviderSelection } from '../utils/chatProviderSelection.js';
25
+ import { sanitizeChatMessageProviderState, selectChatMessagesForContext, } from '../utils/chatContext.js';
24
26
  const logger = createLogger('chat-service');
25
27
  class ChatService {
26
28
  constructor() {
@@ -41,9 +43,10 @@ class ChatService {
41
43
  // This method is kept for compatibility but individual session saving is now handled by storage service
42
44
  // The storage service handles both SQLite and JSON fallback
43
45
  }
44
- async createSession(model, title, userId = 'default', personaId) {
46
+ async createSession(model, title, userId = 'default', personaId, providerSelection) {
45
47
  const sessionId = uuidv4();
46
48
  const now = Date.now();
49
+ const normalizedProvider = normalizeChatProviderSelection(providerSelection);
47
50
  const session = {
48
51
  id: sessionId,
49
52
  title: title || 'New Chat',
@@ -52,6 +55,7 @@ class ChatService {
52
55
  createdAt: now,
53
56
  updatedAt: now,
54
57
  personaId,
58
+ ...normalizedProvider,
55
59
  };
56
60
  // Add system message - prioritize persona system prompt over global preferences
57
61
  let systemMessage = '';
@@ -130,11 +134,27 @@ class ChatService {
130
134
  const session = this.getSession(sessionId, userId);
131
135
  if (!session)
132
136
  return undefined;
137
+ const sanitizedUpdates = updates.messages === undefined
138
+ ? updates
139
+ : {
140
+ ...updates,
141
+ messages: updates.messages.map(sanitizeChatMessageProviderState),
142
+ };
133
143
  const updatedSession = {
134
144
  ...session,
135
- ...updates,
145
+ ...sanitizedUpdates,
136
146
  updatedAt: Date.now(),
137
147
  };
148
+ const hasProviderUpdate = Object.prototype.hasOwnProperty.call(updates, 'providerType') ||
149
+ Object.prototype.hasOwnProperty.call(updates, 'providerId');
150
+ const modelChanged = Boolean(updates.model && updates.model !== session.model);
151
+ if (hasProviderUpdate || modelChanged) {
152
+ const normalizedProvider = hasProviderUpdate
153
+ ? normalizeChatProviderSelection(updates)
154
+ : undefined;
155
+ updatedSession.providerType = normalizedProvider?.providerType;
156
+ updatedSession.providerId = normalizedProvider?.providerId;
157
+ }
138
158
  // If the model is being updated and it's a persona, update the system message and personaId
139
159
  if (updates.model && updates.model !== session.model) {
140
160
  if (updates.model.startsWith('persona:')) {
@@ -166,11 +186,11 @@ class ChatService {
166
186
  if (existingMessage) {
167
187
  return existingMessage;
168
188
  }
169
- const newMessage = {
189
+ const newMessage = sanitizeChatMessageProviderState({
170
190
  ...message,
171
191
  id: messageId,
172
192
  timestamp: Date.now(),
173
- };
193
+ });
174
194
  // If this is a branch message (has parentId), update sibling messages
175
195
  if (newMessage.parentId) {
176
196
  const parentId = newMessage.parentId;
@@ -217,11 +237,11 @@ class ChatService {
217
237
  return undefined;
218
238
  }
219
239
  // Update the message
220
- const updatedMessage = {
240
+ const updatedMessage = sanitizeChatMessageProviderState({
221
241
  ...session.messages[messageIndex],
222
242
  ...updates,
223
243
  timestamp: Date.now(), // Always update timestamp
224
- };
244
+ });
225
245
  session.messages[messageIndex] = updatedMessage;
226
246
  session.updatedAt = Date.now();
227
247
  // Save updated session
@@ -256,15 +276,7 @@ class ChatService {
256
276
  const session = this.sessions.get(sessionId);
257
277
  if (!session)
258
278
  return [];
259
- // Separate system messages from conversation messages
260
- // Only include active messages (isActive !== false) to respect branch selection
261
- const systemMessages = session.messages.filter(msg => msg.role === 'system');
262
- const conversationMessages = session.messages.filter(msg => msg.role !== 'system' && msg.isActive !== false);
263
- // Take the last N conversation messages, but always include all system messages first
264
- const recentConversation = conversationMessages.slice(-maxMessages);
265
- // Return system messages first, then conversation messages
266
- const contextMessages = [...systemMessages, ...recentConversation];
267
- return contextMessages;
279
+ return selectChatMessagesForContext(session.messages, maxMessages).map(sanitizeChatMessageProviderState);
268
280
  }
269
281
  async updateSystemMessageForPersona(session, personaId, userId) {
270
282
  try {
@@ -484,7 +496,7 @@ Guidelines:
484
496
  sibling.isActive = false;
485
497
  }
486
498
  const messageId = newMessage.id || uuidv4();
487
- const newBranchMessage = {
499
+ const newBranchMessage = sanitizeChatMessageProviderState({
488
500
  ...newMessage,
489
501
  id: messageId,
490
502
  timestamp: Date.now(),
@@ -492,7 +504,7 @@ Guidelines:
492
504
  branchIndex: newBranchIndex,
493
505
  isActive: true,
494
506
  siblingCount: newBranchIndex + 1,
495
- };
507
+ });
496
508
  // Update sibling counts for all related messages
497
509
  for (const sibling of siblings) {
498
510
  sibling.siblingCount = newBranchIndex + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"chatService.js","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatService.js","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ class EmbeddingService {
88
88
  logger.warn('Failed to load Ollama embedding models:', error);
89
89
  }
90
90
  const plugins = pluginService
91
- .getAllPlugins()
91
+ .getActivePlugins(userId)
92
92
  .filter(plugin => (plugin.capabilities?.embedding ||
93
93
  plugin.type === 'embedding' ||
94
94
  plugin.type === 'completion' ||
@@ -1 +1 @@
1
- {"version":3,"file":"embeddingService.js","sourceRoot":"","sources":["../../src/services/embeddingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddingService.js","sourceRoot":"","sources":["../../src/services/embeddingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class PluginActivationService {
2
+ migrateLegacyStatus(statusDirectories: string[], canMigratePlugin?: (pluginId: string) => boolean): void;
3
+ getActivePluginIds(userId?: string): Set<string>;
4
+ activate(pluginId: string, userId?: string): boolean;
5
+ deactivate(pluginId: string | undefined, userId?: string): boolean;
6
+ deletePlugin(pluginId: string): boolean;
7
+ private readLegacyStatus;
8
+ }
9
+ declare const pluginActivationService: PluginActivationService;
10
+ export default pluginActivationService;
11
+ //# sourceMappingURL=pluginActivationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginActivationService.d.ts","sourceRoot":"","sources":["../../src/services/pluginActivationService.ts"],"names":[],"mappings":"AA+BA,qBAAa,uBAAuB;IAClC,mBAAmB,CACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,gBAAgB,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAoB,GAC3D,IAAI;IAoEP,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAehD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAkBpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAqBlE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAmBvC,OAAO,CAAC,gBAAgB;CAoBzB;AAaD,QAAA,MAAM,uBAAuB,yBAAgC,CAAC;AAC9D,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,163 @@
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 fs from 'fs';
18
+ import path from 'path';
19
+ import { getDatabaseSafe } from '../db.js';
20
+ import { createLogger } from '../utils/logger.js';
21
+ const logger = createLogger('services:plugin-activation-service');
22
+ const LEGACY_MIGRATION_KEY = 'plugin_activations_legacy_migrated_v1';
23
+ export class PluginActivationService {
24
+ migrateLegacyStatus(statusDirectories, canMigratePlugin = () => true) {
25
+ const db = getDatabaseSafe();
26
+ if (!db)
27
+ return;
28
+ try {
29
+ const migrated = db
30
+ .prepare('SELECT value FROM system_settings WHERE key = ?')
31
+ .get(LEGACY_MIGRATION_KEY);
32
+ if (migrated?.value === 'true')
33
+ return;
34
+ const status = this.readLegacyStatus(statusDirectories);
35
+ const now = Date.now();
36
+ const migrate = db.transaction(() => {
37
+ const insertActivation = db.prepare(`INSERT OR IGNORE INTO plugin_activations
38
+ (user_id, plugin_id, activated_at)
39
+ VALUES (?, ?, ?)`);
40
+ const users = db.prepare('SELECT id FROM users').all();
41
+ const validUserIds = new Set(users.map(user => user.id));
42
+ if (status?.activePluginsByUser &&
43
+ typeof status.activePluginsByUser === 'object' &&
44
+ !Array.isArray(status.activePluginsByUser)) {
45
+ for (const [userId, pluginIds] of Object.entries(status.activePluginsByUser)) {
46
+ if (!validUserIds.has(userId) || !Array.isArray(pluginIds)) {
47
+ continue;
48
+ }
49
+ for (const pluginId of validPluginIds(pluginIds).filter(canMigratePlugin)) {
50
+ insertActivation.run(userId, pluginId, now);
51
+ }
52
+ }
53
+ }
54
+ else {
55
+ const legacyPluginIds = Array.isArray(status?.activePlugins)
56
+ ? validPluginIds(status.activePlugins).filter(canMigratePlugin)
57
+ : typeof status?.activePlugin === 'string'
58
+ ? [status.activePlugin].filter(canMigratePlugin)
59
+ : [];
60
+ for (const { id: userId } of users) {
61
+ for (const pluginId of legacyPluginIds) {
62
+ insertActivation.run(userId, pluginId, now);
63
+ }
64
+ }
65
+ }
66
+ db.prepare(`INSERT INTO system_settings (key, value, updated_at)
67
+ VALUES (?, 'true', ?)
68
+ ON CONFLICT(key) DO UPDATE SET
69
+ value = excluded.value,
70
+ updated_at = excluded.updated_at`).run(LEGACY_MIGRATION_KEY, now);
71
+ });
72
+ migrate();
73
+ }
74
+ catch (error) {
75
+ logger.error('Failed to migrate legacy plugin activation status:', error);
76
+ }
77
+ }
78
+ getActivePluginIds(userId) {
79
+ const db = getDatabaseSafe();
80
+ if (!db)
81
+ return new Set();
82
+ try {
83
+ const rows = db
84
+ .prepare('SELECT plugin_id FROM plugin_activations WHERE user_id = ?')
85
+ .all(userId || 'default');
86
+ return new Set(rows.map(row => row.plugin_id));
87
+ }
88
+ catch (error) {
89
+ logger.error('Failed to read plugin activations:', error);
90
+ return new Set();
91
+ }
92
+ }
93
+ activate(pluginId, userId) {
94
+ const db = getDatabaseSafe();
95
+ if (!db)
96
+ return false;
97
+ try {
98
+ db.prepare(`INSERT INTO plugin_activations (user_id, plugin_id, activated_at)
99
+ VALUES (?, ?, ?)
100
+ ON CONFLICT(user_id, plugin_id) DO UPDATE SET
101
+ activated_at = excluded.activated_at`).run(userId || 'default', pluginId, Date.now());
102
+ return true;
103
+ }
104
+ catch (error) {
105
+ logger.error('Failed to activate plugin %s:', pluginId, error);
106
+ return false;
107
+ }
108
+ }
109
+ deactivate(pluginId, userId) {
110
+ const db = getDatabaseSafe();
111
+ if (!db)
112
+ return false;
113
+ try {
114
+ if (pluginId) {
115
+ db.prepare('DELETE FROM plugin_activations WHERE user_id = ? AND plugin_id = ?').run(userId || 'default', pluginId);
116
+ }
117
+ else {
118
+ db.prepare('DELETE FROM plugin_activations WHERE user_id = ?').run(userId || 'default');
119
+ }
120
+ return true;
121
+ }
122
+ catch (error) {
123
+ logger.error('Failed to deactivate plugin:', error);
124
+ return false;
125
+ }
126
+ }
127
+ deletePlugin(pluginId) {
128
+ const db = getDatabaseSafe();
129
+ if (!db)
130
+ return false;
131
+ try {
132
+ db.prepare('DELETE FROM plugin_activations WHERE plugin_id = ?').run(pluginId);
133
+ return true;
134
+ }
135
+ catch (error) {
136
+ logger.error('Failed to delete activation state for plugin %s:', pluginId, error);
137
+ return false;
138
+ }
139
+ }
140
+ readLegacyStatus(statusDirectories) {
141
+ for (const statusDirectory of Array.from(new Set(statusDirectories))) {
142
+ const statusFile = path.join(statusDirectory, '.status.json');
143
+ if (!fs.existsSync(statusFile))
144
+ continue;
145
+ try {
146
+ const status = JSON.parse(fs.readFileSync(statusFile, 'utf8'));
147
+ if (status && typeof status === 'object' && !Array.isArray(status)) {
148
+ return status;
149
+ }
150
+ }
151
+ catch (error) {
152
+ logger.error('Failed to load plugin status:', error);
153
+ }
154
+ }
155
+ return undefined;
156
+ }
157
+ }
158
+ function validPluginIds(values) {
159
+ return Array.from(new Set(values.filter((pluginId) => typeof pluginId === 'string' && pluginId.length > 0)));
160
+ }
161
+ const pluginActivationService = new PluginActivationService();
162
+ export default pluginActivationService;
163
+ //# sourceMappingURL=pluginActivationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginActivationService.js","sourceRoot":"","sources":["../../src/services/pluginActivationService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Plugin, PluginType } from '../types/index.js';
2
2
  export interface PluginCapabilityRegistryDependencies {
3
- getAllPlugins(): Plugin[];
3
+ getAllPlugins(userId?: string): Plugin[];
4
4
  getApiKey(plugin: Plugin, userId?: string): string | null;
5
5
  }
6
6
  export declare class PluginCapabilityRegistryService {
@@ -1 +1 @@
1
- {"version":3,"file":"pluginCapabilityRegistryService.d.ts","sourceRoot":"","sources":["../../src/services/pluginCapabilityRegistryService.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,oCAAoC;IACnD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED,qBAAa,+BAA+B;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,oCAAoC;IAEvE,sBAAsB,CACpB,cAAc,EAAE,UAAU,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,EAAE;CAkEZ"}
1
+ {"version":3,"file":"pluginCapabilityRegistryService.d.ts","sourceRoot":"","sources":["../../src/services/pluginCapabilityRegistryService.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,oCAAoC;IACnD,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED,qBAAa,+BAA+B;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,oCAAoC;IAEvE,sBAAsB,CACpB,cAAc,EAAE,UAAU,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,EAAE;CAkEZ"}
@@ -19,7 +19,7 @@ export class PluginCapabilityRegistryService {
19
19
  this.deps = deps;
20
20
  }
21
21
  getPluginsByCapability(capabilityType, userId) {
22
- const allPlugins = this.deps.getAllPlugins();
22
+ const allPlugins = this.deps.getAllPlugins(userId);
23
23
  const result = [];
24
24
  for (const plugin of allPlugins) {
25
25
  if (plugin.type === capabilityType) {
@@ -1 +1 @@
1
- {"version":3,"file":"pluginCapabilityRegistryService.js","sourceRoot":"","sources":["../../src/services/pluginCapabilityRegistryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,OAAO,+BAA+B;IAC1C,YAA6B,IAA0C;QAA1C,SAAI,GAAJ,IAAI,CAAsC;IAAG,CAAC;IAE3E,sBAAsB,CACpB,cAA0B,EAC1B,MAAe;QAEf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,MAAM,gBAAgB,GACpB,cAAc,KAAK,KAAK;oBACtB,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM;oBAClC,CAAC,CAAC,cAAc,KAAK,OAAO;wBAC1B,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM;wBACpC,CAAC,CAAC,SAAS,CAAC;gBAClB,MAAM,cAAc,GACjB,gBAAwD;oBACvD,EAAE,gBAAgB,KAAK,IAAI,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnD,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,QAAQ,cAAc,EAAE,CAAC;oBACvB,KAAK,KAAK;wBACR,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;wBAC1C,cAAc;4BAEV,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAE1B,EAAE,gBAAgB,KAAK,IAAI,CAAC;wBAC/B,MAAM;oBACR,KAAK,KAAK;wBACR,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;wBAC1C,MAAM;oBACR,KAAK,WAAW;wBACd,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;wBAChD,MAAM;oBACR,KAAK,OAAO;wBACV,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;wBAC5C,cAAc;4BAEV,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAE5B,EAAE,gBAAgB,KAAK,IAAI,CAAC;wBAC/B,MAAM;oBACR,KAAK,YAAY,CAAC;oBAClB,KAAK,MAAM;wBACT,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;wBACjD,MAAM;gBACV,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACnD,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"pluginCapabilityRegistryService.js","sourceRoot":"","sources":["../../src/services/pluginCapabilityRegistryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,OAAO,+BAA+B;IAC1C,YAA6B,IAA0C;QAA1C,SAAI,GAAJ,IAAI,CAAsC;IAAG,CAAC;IAE3E,sBAAsB,CACpB,cAA0B,EAC1B,MAAe;QAEf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,MAAM,gBAAgB,GACpB,cAAc,KAAK,KAAK;oBACtB,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM;oBAClC,CAAC,CAAC,cAAc,KAAK,OAAO;wBAC1B,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM;wBACpC,CAAC,CAAC,SAAS,CAAC;gBAClB,MAAM,cAAc,GACjB,gBAAwD;oBACvD,EAAE,gBAAgB,KAAK,IAAI,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnD,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,QAAQ,cAAc,EAAE,CAAC;oBACvB,KAAK,KAAK;wBACR,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;wBAC1C,cAAc;4BAEV,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAE1B,EAAE,gBAAgB,KAAK,IAAI,CAAC;wBAC/B,MAAM;oBACR,KAAK,KAAK;wBACR,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;wBAC1C,MAAM;oBACR,KAAK,WAAW;wBACd,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;wBAChD,MAAM;oBACR,KAAK,OAAO;wBACV,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;wBAC5C,cAAc;4BAEV,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAE5B,EAAE,gBAAgB,KAAK,IAAI,CAAC;wBAC/B,MAAM;oBACR,KAAK,YAAY,CAAC;oBAClB,KAAK,MAAM;wBACT,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;wBACjD,MAAM;gBACV,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACnD,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -8,10 +8,22 @@ export interface PluginCredential {
8
8
  }
9
9
  declare class PluginCredentialsService {
10
10
  /**
11
- * Get API key for a specific plugin and user
12
- * Returns null if not found, with optional fallback to environment variable
11
+ * Get only the API key stored for a specific plugin and user.
13
12
  */
14
- getApiKey(pluginId: string, keyEnv: string, userId?: string): string | null;
13
+ getStoredApiKey(pluginId: string, userId: string | undefined, options: {
14
+ expectedRoutingAuthFingerprint: string;
15
+ allowLegacyUnboundCredential: boolean;
16
+ }): string | null;
17
+ /**
18
+ * Get an API key for a specific plugin and user.
19
+ * Environment fallback must be disabled when the effective route comes from
20
+ * a user-stored connection override.
21
+ */
22
+ getApiKey(pluginId: string, keyEnv: string, userId: string | undefined, options: {
23
+ allowEnvironmentFallback: boolean;
24
+ expectedRoutingAuthFingerprint: string;
25
+ allowLegacyUnboundCredential: boolean;
26
+ }): string | null;
15
27
  /**
16
28
  * Get all credentials for a user (API keys are masked for security)
17
29
  */
@@ -23,15 +35,11 @@ declare class PluginCredentialsService {
23
35
  /**
24
36
  * Set or update API key for a plugin
25
37
  */
26
- setApiKey(pluginId: string, apiKey: string, userId?: string): boolean;
38
+ setApiKey(pluginId: string, apiKey: string, userId: string | undefined, routingAuthFingerprint: string): boolean;
27
39
  /**
28
40
  * Delete API key for a plugin
29
41
  */
30
42
  deleteApiKey(pluginId: string, userId?: string): boolean;
31
- /**
32
- * Check if a user has an API key set for a plugin
33
- */
34
- hasApiKey(pluginId: string, keyEnv: string, userId?: string): boolean;
35
43
  /**
36
44
  * Delete all credentials for a user (used when user account is deleted)
37
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pluginCredentialsService.d.ts","sourceRoot":"","sources":["../../src/services/pluginCredentialsService.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD,cAAM,wBAAwB;IAC5B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA4B3E;;OAEG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA8BF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IA2CrE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IA4BxD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAIrE;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAsBjD;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAqBtD;AAED,QAAA,MAAM,wBAAwB,0BAAiC,CAAC;AAChE,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"pluginCredentialsService.d.ts","sourceRoot":"","sources":["../../src/services/pluginCredentialsService.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD,cAAM,wBAAwB;IAC5B;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE;QACP,8BAA8B,EAAE,MAAM,CAAC;QACvC,4BAA4B,EAAE,OAAO,CAAC;KACvC,GACA,MAAM,GAAG,IAAI;IAyDhB;;;;OAIG;IACH,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE;QACP,wBAAwB,EAAE,OAAO,CAAC;QAClC,8BAA8B,EAAE,MAAM,CAAC;QACvC,4BAA4B,EAAE,OAAO,CAAC;KACvC,GACA,MAAM,GAAG,IAAI;IAOhB;;OAEG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA8BF;;OAEG;IACH,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,sBAAsB,EAAE,MAAM,GAC7B,OAAO;IA4DV;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IA4BxD;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAsBjD;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAqBtD;AAED,QAAA,MAAM,wBAAwB,0BAAiC,CAAC;AAChE,eAAe,wBAAwB,CAAC"}
@@ -21,18 +21,36 @@ import { createLogger } from '../utils/logger.js';
21
21
  const logger = createLogger('services:plugin-credentials-service');
22
22
  class PluginCredentialsService {
23
23
  /**
24
- * Get API key for a specific plugin and user
25
- * Returns null if not found, with optional fallback to environment variable
24
+ * Get only the API key stored for a specific plugin and user.
26
25
  */
27
- getApiKey(pluginId, keyEnv, userId) {
26
+ getStoredApiKey(pluginId, userId, options) {
28
27
  const effectiveUserId = userId || 'default';
29
28
  const db = getDatabaseSafe();
30
29
  if (db) {
31
30
  try {
32
31
  const row = db
33
- .prepare('SELECT api_key FROM plugin_credentials WHERE plugin_id = ? AND user_id = ?')
32
+ .prepare(`SELECT id, api_key, routing_auth_fingerprint
33
+ FROM plugin_credentials
34
+ WHERE plugin_id = ? AND user_id = ?`)
34
35
  .get(pluginId, effectiveUserId);
35
36
  if (row?.api_key) {
37
+ const bindingMatches = row.routing_auth_fingerprint ===
38
+ options.expectedRoutingAuthFingerprint;
39
+ const trustedLegacyCredential = row.routing_auth_fingerprint === null &&
40
+ options.allowLegacyUnboundCredential;
41
+ if (!bindingMatches && !trustedLegacyCredential) {
42
+ return null;
43
+ }
44
+ if (trustedLegacyCredential) {
45
+ const result = db
46
+ .prepare(`UPDATE plugin_credentials
47
+ SET routing_auth_fingerprint = ?
48
+ WHERE id = ? AND routing_auth_fingerprint IS NULL`)
49
+ .run(options.expectedRoutingAuthFingerprint, row.id);
50
+ if (result.changes !== 1) {
51
+ return null;
52
+ }
53
+ }
36
54
  // Decrypt the API key
37
55
  const decryptedKey = encryptionService.decrypt(row.api_key);
38
56
  if (decryptedKey) {
@@ -44,7 +62,19 @@ class PluginCredentialsService {
44
62
  logger.error('Failed to get API key for plugin %s:', pluginId, error);
45
63
  }
46
64
  }
47
- // Fallback to environment variable
65
+ return null;
66
+ }
67
+ /**
68
+ * Get an API key for a specific plugin and user.
69
+ * Environment fallback must be disabled when the effective route comes from
70
+ * a user-stored connection override.
71
+ */
72
+ getApiKey(pluginId, keyEnv, userId, options) {
73
+ const storedApiKey = this.getStoredApiKey(pluginId, userId, options);
74
+ if (storedApiKey)
75
+ return storedApiKey;
76
+ if (!options.allowEnvironmentFallback)
77
+ return null;
48
78
  return process.env[keyEnv] || null;
49
79
  }
50
80
  /**
@@ -74,13 +104,17 @@ class PluginCredentialsService {
74
104
  /**
75
105
  * Set or update API key for a plugin
76
106
  */
77
- setApiKey(pluginId, apiKey, userId) {
107
+ setApiKey(pluginId, apiKey, userId, routingAuthFingerprint) {
78
108
  const effectiveUserId = userId || 'default';
79
109
  const db = getDatabaseSafe();
80
110
  if (!db) {
81
111
  logger.error('Database not available for storing plugin credentials');
82
112
  return false;
83
113
  }
114
+ if (!routingAuthFingerprint) {
115
+ logger.error('Routing/auth binding is required for plugin credentials');
116
+ return false;
117
+ }
84
118
  try {
85
119
  const now = Date.now();
86
120
  const encryptedKey = encryptionService.encrypt(apiKey);
@@ -90,12 +124,17 @@ class PluginCredentialsService {
90
124
  .get(pluginId, effectiveUserId);
91
125
  if (existing) {
92
126
  // Update existing credential
93
- db.prepare('UPDATE plugin_credentials SET api_key = ?, updated_at = ? WHERE id = ?').run(encryptedKey, now, existing.id);
127
+ db.prepare(`UPDATE plugin_credentials
128
+ SET api_key = ?, routing_auth_fingerprint = ?, updated_at = ?
129
+ WHERE id = ?`).run(encryptedKey, routingAuthFingerprint, now, existing.id);
94
130
  }
95
131
  else {
96
132
  // Insert new credential
97
133
  const id = uuidv4();
98
- db.prepare('INSERT INTO plugin_credentials (id, user_id, plugin_id, api_key, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)').run(id, effectiveUserId, pluginId, encryptedKey, now, now);
134
+ db.prepare(`INSERT INTO plugin_credentials
135
+ (id, user_id, plugin_id, api_key, routing_auth_fingerprint,
136
+ created_at, updated_at)
137
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(id, effectiveUserId, pluginId, encryptedKey, routingAuthFingerprint, now, now);
99
138
  }
100
139
  logger.debug(`API key ${existing ? 'updated' : 'set'} for plugin ${pluginId} (user: ${effectiveUserId})`);
101
140
  return true;
@@ -129,12 +168,6 @@ class PluginCredentialsService {
129
168
  return false;
130
169
  }
131
170
  }
132
- /**
133
- * Check if a user has an API key set for a plugin
134
- */
135
- hasApiKey(pluginId, keyEnv, userId) {
136
- return this.getApiKey(pluginId, keyEnv, userId) !== null;
137
- }
138
171
  /**
139
172
  * Delete all credentials for a user (used when user account is deleted)
140
173
  */