@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 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 prefix = this.getPrefix();
245
- const result = await stormClient_1.stormClient.createImage(prefix + `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
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
- this.emit('image', event, prompt);
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 prefix = this.getPrefix();
245
- const result = await stormClient_1.stormClient.createImage(prefix + `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
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
- this.emit('image', event, prompt);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.70.10",
3
+ "version": "0.70.12",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
@@ -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
- prefix + `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim()
270
+ `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim()
272
271
  );
273
272
 
274
- //console.log('Adding image prompt', prompt);
273
+ let imageEvent: StormImage | null = null;
275
274
  result.on('data', (event: StormEvent) => {
276
275
  if (event.type === 'IMAGE') {
277
- this.emit('image', event, prompt);
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) {
@@ -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;