libre-webui 0.2.9 → 0.3.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 (40) hide show
  1. package/backend/dist/db.d.ts.map +1 -1
  2. package/backend/dist/db.js +16 -0
  3. package/backend/dist/db.js.map +1 -1
  4. package/backend/dist/index.d.ts.map +1 -1
  5. package/backend/dist/index.js +13 -0
  6. package/backend/dist/index.js.map +1 -1
  7. package/backend/dist/routes/imageGen.d.ts +3 -0
  8. package/backend/dist/routes/imageGen.d.ts.map +1 -0
  9. package/backend/dist/routes/imageGen.js +313 -0
  10. package/backend/dist/routes/imageGen.js.map +1 -0
  11. package/backend/dist/services/galleryService.d.ts +41 -0
  12. package/backend/dist/services/galleryService.d.ts.map +1 -0
  13. package/backend/dist/services/galleryService.js +175 -0
  14. package/backend/dist/services/galleryService.js.map +1 -0
  15. package/backend/dist/services/pluginCredentialsService.js +3 -3
  16. package/backend/dist/services/pluginCredentialsService.js.map +1 -1
  17. package/backend/dist/services/pluginService.d.ts +16 -1
  18. package/backend/dist/services/pluginService.d.ts.map +1 -1
  19. package/backend/dist/services/pluginService.js +411 -5
  20. package/backend/dist/services/pluginService.js.map +1 -1
  21. package/backend/dist/types/index.d.ts +39 -0
  22. package/backend/dist/types/index.d.ts.map +1 -1
  23. package/backend/dist/types/index.js.map +1 -1
  24. package/frontend/dist/assets/index-BAlYrgVl.js +26 -0
  25. package/frontend/dist/css/index-CYRSPYSA.css +1 -0
  26. package/frontend/dist/index.html +3 -3
  27. package/frontend/dist/js/{ArtifactContainer-BNTSGf96.js → ArtifactContainer-DOyRNr2K.js} +4 -3
  28. package/frontend/dist/js/{ArtifactDemoPage-x98zuxsN.js → ArtifactDemoPage-DuHnKjTy.js} +1 -1
  29. package/frontend/dist/js/ChatPage-D4AGvUr9.js +281 -0
  30. package/frontend/dist/js/GalleryPage-DPxs-JHF.js +1 -0
  31. package/frontend/dist/js/{ModelsPage-4CDKkZ0-.js → ModelsPage-CDx8DvZ8.js} +1 -1
  32. package/frontend/dist/js/{PersonasPage-Df_20I2C.js → PersonasPage-CHDGv_Lh.js} +1 -1
  33. package/frontend/dist/js/{UserManagementPage-CZc7OD7f.js → UserManagementPage-COb0e5_w.js} +1 -1
  34. package/frontend/dist/js/ui-vendor-DA07XX1l.js +177 -0
  35. package/package.json +1 -1
  36. package/plugins/comfyui.json +49 -0
  37. package/frontend/dist/assets/index-C1Ba9uDt.js +0 -25
  38. package/frontend/dist/css/index-CdiWoduX.css +0 -1
  39. package/frontend/dist/js/ChatPage-BxamwHd3.js +0 -281
  40. package/frontend/dist/js/ui-vendor-BiDMn752.js +0 -177
@@ -0,0 +1,175 @@
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 { v4 as uuidv4 } from 'uuid';
18
+ import { getDatabaseSafe } from '../db.js';
19
+ import { encryptionService } from './encryptionService.js';
20
+ class GalleryService {
21
+ /**
22
+ * Save a generated image to the gallery
23
+ */
24
+ saveImage(userId, params) {
25
+ const db = getDatabaseSafe();
26
+ if (!db) {
27
+ console.error('Database not available for saving image');
28
+ return null;
29
+ }
30
+ try {
31
+ const id = uuidv4();
32
+ const createdAt = Date.now();
33
+ // Encrypt the image data and prompt before storing
34
+ const encryptedImageData = encryptionService.encrypt(params.imageData);
35
+ const encryptedPrompt = encryptionService.encrypt(params.prompt);
36
+ db.prepare(`
37
+ INSERT INTO generated_images (id, user_id, prompt, model, image_data, size, quality, created_at)
38
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
39
+ `).run(id, userId, encryptedPrompt, params.model, encryptedImageData, params.size || null, params.quality || null, createdAt);
40
+ return {
41
+ id,
42
+ userId,
43
+ prompt: params.prompt,
44
+ model: params.model,
45
+ imageData: params.imageData,
46
+ size: params.size,
47
+ quality: params.quality,
48
+ createdAt,
49
+ };
50
+ }
51
+ catch (error) {
52
+ console.error('Error saving image to gallery:', error);
53
+ return null;
54
+ }
55
+ }
56
+ /**
57
+ * Get user's images with pagination
58
+ */
59
+ getImages(userId, params = {}) {
60
+ const db = getDatabaseSafe();
61
+ if (!db) {
62
+ return { images: [], total: 0 };
63
+ }
64
+ try {
65
+ const limit = params.limit || 20;
66
+ const offset = params.offset || 0;
67
+ // Get total count
68
+ const countResult = db
69
+ .prepare('SELECT COUNT(*) as total FROM generated_images WHERE user_id = ?')
70
+ .get(userId);
71
+ // Get paginated images
72
+ const rows = db
73
+ .prepare(`
74
+ SELECT id, user_id, prompt, model, image_data, size, quality, created_at
75
+ FROM generated_images
76
+ WHERE user_id = ?
77
+ ORDER BY created_at DESC
78
+ LIMIT ? OFFSET ?
79
+ `)
80
+ .all(userId, limit, offset);
81
+ const images = rows.map(row => ({
82
+ id: row.id,
83
+ userId: row.user_id,
84
+ prompt: encryptionService.decrypt(row.prompt),
85
+ model: row.model,
86
+ imageData: encryptionService.decrypt(row.image_data),
87
+ size: row.size || undefined,
88
+ quality: row.quality || undefined,
89
+ createdAt: row.created_at,
90
+ }));
91
+ return {
92
+ images,
93
+ total: countResult.total,
94
+ };
95
+ }
96
+ catch (error) {
97
+ console.error('Error getting images from gallery:', error);
98
+ return { images: [], total: 0 };
99
+ }
100
+ }
101
+ /**
102
+ * Get a single image by ID
103
+ */
104
+ getImage(imageId, userId) {
105
+ const db = getDatabaseSafe();
106
+ if (!db) {
107
+ return null;
108
+ }
109
+ try {
110
+ const row = db
111
+ .prepare(`
112
+ SELECT id, user_id, prompt, model, image_data, size, quality, created_at
113
+ FROM generated_images
114
+ WHERE id = ? AND user_id = ?
115
+ `)
116
+ .get(imageId, userId);
117
+ if (!row) {
118
+ return null;
119
+ }
120
+ return {
121
+ id: row.id,
122
+ userId: row.user_id,
123
+ prompt: encryptionService.decrypt(row.prompt),
124
+ model: row.model,
125
+ imageData: encryptionService.decrypt(row.image_data),
126
+ size: row.size || undefined,
127
+ quality: row.quality || undefined,
128
+ createdAt: row.created_at,
129
+ };
130
+ }
131
+ catch (error) {
132
+ console.error('Error getting image from gallery:', error);
133
+ return null;
134
+ }
135
+ }
136
+ /**
137
+ * Delete an image from the gallery
138
+ */
139
+ deleteImage(imageId, userId) {
140
+ const db = getDatabaseSafe();
141
+ if (!db) {
142
+ return false;
143
+ }
144
+ try {
145
+ // Verify ownership before deleting
146
+ const result = db
147
+ .prepare('DELETE FROM generated_images WHERE id = ? AND user_id = ?')
148
+ .run(imageId, userId);
149
+ return result.changes > 0;
150
+ }
151
+ catch (error) {
152
+ console.error('Error deleting image from gallery:', error);
153
+ return false;
154
+ }
155
+ }
156
+ /**
157
+ * Delete all images for a user
158
+ */
159
+ deleteAllImages(userId) {
160
+ const db = getDatabaseSafe();
161
+ if (!db) {
162
+ return false;
163
+ }
164
+ try {
165
+ db.prepare('DELETE FROM generated_images WHERE user_id = ?').run(userId);
166
+ return true;
167
+ }
168
+ catch (error) {
169
+ console.error('Error deleting all images from gallery:', error);
170
+ return false;
171
+ }
172
+ }
173
+ }
174
+ export default new GalleryService();
175
+ //# sourceMappingURL=galleryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galleryService.js","sourceRoot":"","sources":["../../src/services/galleryService.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ class PluginCredentialsService {
39
39
  }
40
40
  }
41
41
  catch (error) {
42
- console.error(`Failed to get API key for plugin ${pluginId}:`, error);
42
+ console.error('Failed to get API key for plugin %s:', pluginId, error);
43
43
  }
44
44
  }
45
45
  // Fallback to environment variable
@@ -99,7 +99,7 @@ class PluginCredentialsService {
99
99
  return true;
100
100
  }
101
101
  catch (error) {
102
- console.error(`Failed to set API key for plugin ${pluginId}:`, error);
102
+ console.error('Failed to set API key for plugin %s:', pluginId, error);
103
103
  return false;
104
104
  }
105
105
  }
@@ -123,7 +123,7 @@ class PluginCredentialsService {
123
123
  return false;
124
124
  }
125
125
  catch (error) {
126
- console.error(`Failed to delete API key for plugin ${pluginId}:`, error);
126
+ console.error('Failed to delete API key for plugin %s:', pluginId, error);
127
127
  return false;
128
128
  }
129
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pluginCredentialsService.js","sourceRoot":"","sources":["../../src/services/pluginCredentialsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pluginCredentialsService.js","sourceRoot":"","sources":["../../src/services/pluginCredentialsService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Plugin, PluginStatus, PluginResponse, ChatMessage, GenerationOptions, TTSConfig, PluginType } from '../types/index.js';
1
+ import { Plugin, PluginStatus, PluginResponse, ChatMessage, GenerationOptions, TTSConfig, ImageGenConfig, ImageGenResponse, PluginType } from '../types/index.js';
2
2
  declare class PluginService {
3
3
  private pluginsDir;
4
4
  private activePluginIds;
@@ -42,6 +42,21 @@ declare class PluginService {
42
42
  }): Promise<Buffer>;
43
43
  private splitTextForTTS;
44
44
  getTTSConfig(pluginId: string): TTSConfig | null;
45
+ getPluginForImageGen(model: string): Plugin | null;
46
+ getAvailableImageGenModels(): {
47
+ model: string;
48
+ plugin: string;
49
+ config?: ImageGenConfig;
50
+ }[];
51
+ executeImageGenRequest(model: string, prompt: string, options?: {
52
+ size?: string;
53
+ quality?: string;
54
+ style?: string;
55
+ n?: number;
56
+ response_format?: 'url' | 'b64_json';
57
+ }): Promise<ImageGenResponse>;
58
+ private executeComfyUIRequest;
59
+ getImageGenConfig(pluginId: string): ImageGenConfig | null;
45
60
  getPluginsByCapability(capabilityType: PluginType): Plugin[];
46
61
  }
47
62
  declare const _default: PluginService;
@@ -1 +1 @@
1
- {"version":3,"file":"pluginService.d.ts","sourceRoot":"","sources":["../../src/services/pluginService.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,cAAM,aAAa;IACjB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAA0B;;IAQjD,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASzD,aAAa,IAAI,MAAM,EAAE;IA+BzB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkCpC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAoBzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA2CjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAanC,gBAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAYtC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqCrD,gBAAgB,IAAI,MAAM,EAAE;IAqB5B,eAAe,IAAI,MAAM,GAAG,IAAI;IAMhC,eAAe,IAAI,YAAY,EAAE;IAU3B,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAkT1B,OAAO,CAAC,wBAAwB;IA8EhC,OAAO,CAAC,qBAAqB;IAyF7B,OAAO,CAAC,cAAc;IA2BtB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM;IAoBzC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkD7C,qBAAqB,IAAI;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,EAAE;IAuCG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QAClE,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,MAAM,CAAC;IA4NlB,OAAO,CAAC,eAAe;IA4CvB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAYhD,sBAAsB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,EAAE;CAgD7D;;AAED,wBAAmC"}
1
+ {"version":3,"file":"pluginService.d.ts","sourceRoot":"","sources":["../../src/services/pluginService.ts"],"names":[],"mappings":"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"}