@kapeta/local-cluster-service 0.70.10 → 0.70.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/src/storm/PageGenerator.js +8 -4
- package/dist/cjs/src/storm/routes.js +0 -38
- package/dist/esm/src/storm/PageGenerator.js +8 -4
- package/dist/esm/src/storm/routes.js +0 -38
- package/package.json +1 -1
- package/src/storm/PageGenerator.ts +10 -5
- package/src/storm/routes.ts +0 -39
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## [0.70.12](https://github.com/kapetacom/local-cluster-service/compare/v0.70.11...v0.70.12) (2024-09-13)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* wait for image resources on disk [CORE-3467] ([#249](https://github.com/kapetacom/local-cluster-service/issues/249)) ([934d9f4](https://github.com/kapetacom/local-cluster-service/commit/934d9f400ae917559a4ede08d3f3e5644b3b5053))
|
7
|
+
|
8
|
+
## [0.70.11](https://github.com/kapetacom/local-cluster-service/compare/v0.70.10...v0.70.11) (2024-09-12)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* CORE-3456 make the prompt shorter ([8292ccf](https://github.com/kapetacom/local-cluster-service/commit/8292ccf59213c2db606d23b573bea90e7e870ef3))
|
14
|
+
|
1
15
|
## [0.70.10](https://github.com/kapetacom/local-cluster-service/compare/v0.70.9...v0.70.10) (2024-09-12)
|
2
16
|
|
3
17
|
|
@@ -241,15 +241,19 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
241
241
|
return;
|
242
242
|
}
|
243
243
|
this.images.set(prompt.url, prompt.description);
|
244
|
-
const
|
245
|
-
|
246
|
-
//console.log('Adding image prompt', prompt);
|
244
|
+
const result = await stormClient_1.stormClient.createImage(`Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
|
245
|
+
let imageEvent = null;
|
247
246
|
result.on('data', (event) => {
|
248
247
|
if (event.type === 'IMAGE') {
|
249
|
-
|
248
|
+
imageEvent = event;
|
250
249
|
}
|
251
250
|
});
|
252
251
|
await result.waitForDone();
|
252
|
+
if (!imageEvent) {
|
253
|
+
throw new Error('No image was generated');
|
254
|
+
}
|
255
|
+
await (0, page_utils_1.writeImageToDisk)(this.systemId, imageEvent, prompt);
|
256
|
+
this.emit('image', imageEvent, prompt);
|
253
257
|
}
|
254
258
|
async generate(prompt, conversationId) {
|
255
259
|
const screenStream = await stormClient_1.stormClient.createUIPage(prompt, conversationId);
|
@@ -118,18 +118,6 @@ router.post('/ui/screen', async (req, res) => {
|
|
118
118
|
});
|
119
119
|
const promises = [];
|
120
120
|
queue.on('page', (data) => (systemId ? sendPageEvent(systemId, data, res) : undefined));
|
121
|
-
queue.on('image', async (screenData, prompt) => {
|
122
|
-
if (!systemId) {
|
123
|
-
return;
|
124
|
-
}
|
125
|
-
try {
|
126
|
-
await handleImageEvent(systemId, screenData, prompt);
|
127
|
-
}
|
128
|
-
catch (e) {
|
129
|
-
console.error('Failed to handle image event', e);
|
130
|
-
throw e;
|
131
|
-
}
|
132
|
-
});
|
133
121
|
queue.on('error', (err) => {
|
134
122
|
console.error('Failed to process page', err);
|
135
123
|
sendError(err, res);
|
@@ -212,15 +200,6 @@ router.post('/:handle/ui/iterative', async (req, res) => {
|
|
212
200
|
pageQueue.cancel();
|
213
201
|
});
|
214
202
|
pageQueue.on('page', (screenData) => sendPageEvent(landingPagesStream.getConversationId(), screenData, res));
|
215
|
-
pageQueue.on('image', async (screenData, prompt) => {
|
216
|
-
try {
|
217
|
-
await handleImageEvent(landingPagesStream.getConversationId(), screenData, prompt);
|
218
|
-
}
|
219
|
-
catch (e) {
|
220
|
-
console.error('Failed to handle image event', e);
|
221
|
-
throw e;
|
222
|
-
}
|
223
|
-
});
|
224
203
|
pageQueue.on('event', (screenData) => {
|
225
204
|
sendEvent(res, screenData);
|
226
205
|
});
|
@@ -374,15 +353,6 @@ router.post('/:handle/ui', async (req, res) => {
|
|
374
353
|
queue.cancel();
|
375
354
|
});
|
376
355
|
queue.on('page', (screenData) => sendPageEvent(outerConversationId, screenData, res));
|
377
|
-
queue.on('image', async (screenData, prompt) => {
|
378
|
-
try {
|
379
|
-
await handleImageEvent(outerConversationId, screenData, prompt);
|
380
|
-
}
|
381
|
-
catch (e) {
|
382
|
-
console.error('Failed to handle image event', e);
|
383
|
-
throw e;
|
384
|
-
}
|
385
|
-
});
|
386
356
|
queue.on('event', (screenData) => {
|
387
357
|
sendEvent(res, screenData);
|
388
358
|
});
|
@@ -722,12 +692,4 @@ async function sendPageEvent(mainConversationId, data, res) {
|
|
722
692
|
}
|
723
693
|
sendEvent(res, convertPageEvent(data, data.payload.conversationId, mainConversationId));
|
724
694
|
}
|
725
|
-
async function handleImageEvent(mainConversationId, data, prompt) {
|
726
|
-
try {
|
727
|
-
await (0, page_utils_1.writeImageToDisk)(mainConversationId, data, prompt);
|
728
|
-
}
|
729
|
-
catch (err) {
|
730
|
-
console.error('Failed to write image to disk', err);
|
731
|
-
}
|
732
|
-
}
|
733
695
|
exports.default = router;
|
@@ -241,15 +241,19 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
241
241
|
return;
|
242
242
|
}
|
243
243
|
this.images.set(prompt.url, prompt.description);
|
244
|
-
const
|
245
|
-
|
246
|
-
//console.log('Adding image prompt', prompt);
|
244
|
+
const result = await stormClient_1.stormClient.createImage(`Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
|
245
|
+
let imageEvent = null;
|
247
246
|
result.on('data', (event) => {
|
248
247
|
if (event.type === 'IMAGE') {
|
249
|
-
|
248
|
+
imageEvent = event;
|
250
249
|
}
|
251
250
|
});
|
252
251
|
await result.waitForDone();
|
252
|
+
if (!imageEvent) {
|
253
|
+
throw new Error('No image was generated');
|
254
|
+
}
|
255
|
+
await (0, page_utils_1.writeImageToDisk)(this.systemId, imageEvent, prompt);
|
256
|
+
this.emit('image', imageEvent, prompt);
|
253
257
|
}
|
254
258
|
async generate(prompt, conversationId) {
|
255
259
|
const screenStream = await stormClient_1.stormClient.createUIPage(prompt, conversationId);
|
@@ -118,18 +118,6 @@ router.post('/ui/screen', async (req, res) => {
|
|
118
118
|
});
|
119
119
|
const promises = [];
|
120
120
|
queue.on('page', (data) => (systemId ? sendPageEvent(systemId, data, res) : undefined));
|
121
|
-
queue.on('image', async (screenData, prompt) => {
|
122
|
-
if (!systemId) {
|
123
|
-
return;
|
124
|
-
}
|
125
|
-
try {
|
126
|
-
await handleImageEvent(systemId, screenData, prompt);
|
127
|
-
}
|
128
|
-
catch (e) {
|
129
|
-
console.error('Failed to handle image event', e);
|
130
|
-
throw e;
|
131
|
-
}
|
132
|
-
});
|
133
121
|
queue.on('error', (err) => {
|
134
122
|
console.error('Failed to process page', err);
|
135
123
|
sendError(err, res);
|
@@ -212,15 +200,6 @@ router.post('/:handle/ui/iterative', async (req, res) => {
|
|
212
200
|
pageQueue.cancel();
|
213
201
|
});
|
214
202
|
pageQueue.on('page', (screenData) => sendPageEvent(landingPagesStream.getConversationId(), screenData, res));
|
215
|
-
pageQueue.on('image', async (screenData, prompt) => {
|
216
|
-
try {
|
217
|
-
await handleImageEvent(landingPagesStream.getConversationId(), screenData, prompt);
|
218
|
-
}
|
219
|
-
catch (e) {
|
220
|
-
console.error('Failed to handle image event', e);
|
221
|
-
throw e;
|
222
|
-
}
|
223
|
-
});
|
224
203
|
pageQueue.on('event', (screenData) => {
|
225
204
|
sendEvent(res, screenData);
|
226
205
|
});
|
@@ -374,15 +353,6 @@ router.post('/:handle/ui', async (req, res) => {
|
|
374
353
|
queue.cancel();
|
375
354
|
});
|
376
355
|
queue.on('page', (screenData) => sendPageEvent(outerConversationId, screenData, res));
|
377
|
-
queue.on('image', async (screenData, prompt) => {
|
378
|
-
try {
|
379
|
-
await handleImageEvent(outerConversationId, screenData, prompt);
|
380
|
-
}
|
381
|
-
catch (e) {
|
382
|
-
console.error('Failed to handle image event', e);
|
383
|
-
throw e;
|
384
|
-
}
|
385
|
-
});
|
386
356
|
queue.on('event', (screenData) => {
|
387
357
|
sendEvent(res, screenData);
|
388
358
|
});
|
@@ -722,12 +692,4 @@ async function sendPageEvent(mainConversationId, data, res) {
|
|
722
692
|
}
|
723
693
|
sendEvent(res, convertPageEvent(data, data.payload.conversationId, mainConversationId));
|
724
694
|
}
|
725
|
-
async function handleImageEvent(mainConversationId, data, prompt) {
|
726
|
-
try {
|
727
|
-
await (0, page_utils_1.writeImageToDisk)(mainConversationId, data, prompt);
|
728
|
-
}
|
729
|
-
catch (err) {
|
730
|
-
console.error('Failed to write image to disk', err);
|
731
|
-
}
|
732
|
-
}
|
733
695
|
exports.default = router;
|
package/package.json
CHANGED
@@ -9,7 +9,7 @@ import { ReferenceClassification, StormEvent, StormEventPage, StormImage, UIShel
|
|
9
9
|
import { EventEmitter } from 'node:events';
|
10
10
|
import PQueue from 'p-queue';
|
11
11
|
|
12
|
-
import { hasPageOnDisk, normalizePath } from './page-utils';
|
12
|
+
import { hasPageOnDisk, normalizePath, writeImageToDisk } from './page-utils';
|
13
13
|
import * as mimetypes from 'mime-types';
|
14
14
|
|
15
15
|
export interface ImagePrompt {
|
@@ -266,19 +266,24 @@ export class PageQueue extends EventEmitter {
|
|
266
266
|
}
|
267
267
|
|
268
268
|
this.images.set(prompt.url, prompt.description);
|
269
|
-
const prefix = this.getPrefix();
|
270
269
|
const result = await stormClient.createImage(
|
271
|
-
|
270
|
+
`Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim()
|
272
271
|
);
|
273
272
|
|
274
|
-
|
273
|
+
let imageEvent: StormImage | null = null;
|
275
274
|
result.on('data', (event: StormEvent) => {
|
276
275
|
if (event.type === 'IMAGE') {
|
277
|
-
|
276
|
+
imageEvent = event;
|
278
277
|
}
|
279
278
|
});
|
280
279
|
|
281
280
|
await result.waitForDone();
|
281
|
+
if (!imageEvent) {
|
282
|
+
throw new Error('No image was generated');
|
283
|
+
}
|
284
|
+
|
285
|
+
await writeImageToDisk(this.systemId, imageEvent, prompt);
|
286
|
+
this.emit('image', imageEvent, prompt);
|
282
287
|
}
|
283
288
|
|
284
289
|
public async generate(prompt: UIPagePrompt, conversationId: string) {
|
package/src/storm/routes.ts
CHANGED
@@ -41,7 +41,6 @@ import {
|
|
41
41
|
resolveReadPath,
|
42
42
|
SystemIdHeader,
|
43
43
|
writeAssetToDisk,
|
44
|
-
writeImageToDisk,
|
45
44
|
writePageToDisk,
|
46
45
|
} from './page-utils';
|
47
46
|
import { UIServer } from './UIServer';
|
@@ -165,18 +164,6 @@ router.post('/ui/screen', async (req: KapetaBodyRequest, res: Response) => {
|
|
165
164
|
|
166
165
|
queue.on('page', (data) => (systemId ? sendPageEvent(systemId, data, res) : undefined));
|
167
166
|
|
168
|
-
queue.on('image', async (screenData, prompt) => {
|
169
|
-
if (!systemId) {
|
170
|
-
return;
|
171
|
-
}
|
172
|
-
try {
|
173
|
-
await handleImageEvent(systemId, screenData, prompt);
|
174
|
-
} catch (e) {
|
175
|
-
console.error('Failed to handle image event', e);
|
176
|
-
throw e;
|
177
|
-
}
|
178
|
-
});
|
179
|
-
|
180
167
|
queue.on('error', (err) => {
|
181
168
|
console.error('Failed to process page', err);
|
182
169
|
sendError(err as any, res);
|
@@ -275,15 +262,6 @@ router.post('/:handle/ui/iterative', async (req: KapetaBodyRequest, res: Respons
|
|
275
262
|
sendPageEvent(landingPagesStream.getConversationId(), screenData, res)
|
276
263
|
);
|
277
264
|
|
278
|
-
pageQueue.on('image', async (screenData, prompt) => {
|
279
|
-
try {
|
280
|
-
await handleImageEvent(landingPagesStream.getConversationId(), screenData, prompt);
|
281
|
-
} catch (e) {
|
282
|
-
console.error('Failed to handle image event', e);
|
283
|
-
throw e;
|
284
|
-
}
|
285
|
-
});
|
286
|
-
|
287
265
|
pageQueue.on('event', (screenData: StormEvent) => {
|
288
266
|
sendEvent(res, screenData);
|
289
267
|
});
|
@@ -470,15 +448,6 @@ router.post('/:handle/ui', async (req: KapetaBodyRequest, res: Response) => {
|
|
470
448
|
|
471
449
|
queue.on('page', (screenData: StormEventPage) => sendPageEvent(outerConversationId, screenData, res));
|
472
450
|
|
473
|
-
queue.on('image', async (screenData, prompt) => {
|
474
|
-
try {
|
475
|
-
await handleImageEvent(outerConversationId, screenData, prompt);
|
476
|
-
} catch (e) {
|
477
|
-
console.error('Failed to handle image event', e);
|
478
|
-
throw e;
|
479
|
-
}
|
480
|
-
});
|
481
|
-
|
482
451
|
queue.on('event', (screenData: StormEvent) => {
|
483
452
|
sendEvent(res, screenData);
|
484
453
|
});
|
@@ -883,12 +852,4 @@ async function sendPageEvent(mainConversationId: string, data: StormEventPage, r
|
|
883
852
|
sendEvent(res, convertPageEvent(data, data.payload.conversationId, mainConversationId));
|
884
853
|
}
|
885
854
|
|
886
|
-
async function handleImageEvent(mainConversationId: string, data: StormImage, prompt: ImagePrompt) {
|
887
|
-
try {
|
888
|
-
await writeImageToDisk(mainConversationId, data, prompt);
|
889
|
-
} catch (err) {
|
890
|
-
console.error('Failed to write image to disk', err);
|
891
|
-
}
|
892
|
-
}
|
893
|
-
|
894
855
|
export default router;
|