@kapeta/local-cluster-service 0.70.6 → 0.70.7
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 +8 -0
- package/dist/cjs/src/storm/PageGenerator.js +32 -0
- package/dist/cjs/src/storm/routes.js +8 -0
- package/dist/esm/src/storm/PageGenerator.js +32 -0
- package/dist/esm/src/storm/routes.js +8 -0
- package/package.json +3 -1
- package/src/storm/PageGenerator.ts +10 -0
- package/src/storm/routes.ts +10 -0
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## [0.70.7](https://github.com/kapetacom/local-cluster-service/compare/v0.70.6...v0.70.7) (2024-09-12)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add missing error handlers to pagegen ([56a3ab5](https://github.com/kapetacom/local-cluster-service/commit/56a3ab576f011ed29ce8074c53e025b347fb4e8a))
|
7
|
+
* skip unknown mimetypes in image gen ([3076367](https://github.com/kapetacom/local-cluster-service/commit/307636771c46a99f555c4c3e944c61fcffa16adc))
|
8
|
+
|
1
9
|
## [0.70.6](https://github.com/kapetacom/local-cluster-service/compare/v0.70.5...v0.70.6) (2024-09-11)
|
2
10
|
|
3
11
|
|
@@ -3,6 +3,29 @@
|
|
3
3
|
* Copyright 2023 Kapeta Inc.
|
4
4
|
* SPDX-License-Identifier: BUSL-1.1
|
5
5
|
*/
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
7
|
+
if (k2 === undefined) k2 = k;
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
11
|
+
}
|
12
|
+
Object.defineProperty(o, k2, desc);
|
13
|
+
}) : (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
o[k2] = m[k];
|
16
|
+
}));
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
19
|
+
}) : function(o, v) {
|
20
|
+
o["default"] = v;
|
21
|
+
});
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
23
|
+
if (mod && mod.__esModule) return mod;
|
24
|
+
var result = {};
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
26
|
+
__setModuleDefault(result, mod);
|
27
|
+
return result;
|
28
|
+
};
|
6
29
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
7
30
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
8
31
|
};
|
@@ -13,6 +36,7 @@ const stormClient_1 = require("./stormClient");
|
|
13
36
|
const node_events_1 = require("node:events");
|
14
37
|
const p_queue_1 = __importDefault(require("p-queue"));
|
15
38
|
const page_utils_1 = require("./page-utils");
|
39
|
+
const mimetypes = __importStar(require("mime-types"));
|
16
40
|
class PageQueue extends node_events_1.EventEmitter {
|
17
41
|
queue;
|
18
42
|
eventQueue;
|
@@ -208,6 +232,14 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
208
232
|
//console.log('Ignoring duplicate image prompt', prompt);
|
209
233
|
return;
|
210
234
|
}
|
235
|
+
// Add safeguard to avoid generating images for nonsense URLs
|
236
|
+
// Sometimes we get entries for Base URLs that will then cause issues on the filesystem
|
237
|
+
// Example: https://www.kapeta.com/images/
|
238
|
+
const mimeType = mimetypes.lookup(prompt.url);
|
239
|
+
if (!mimeType || !mimeType.startsWith('image/')) {
|
240
|
+
console.warn('Skipping image reference of type %s for url %s', mimeType, prompt.url);
|
241
|
+
return;
|
242
|
+
}
|
211
243
|
this.images.set(prompt.url, prompt.description);
|
212
244
|
const prefix = this.getPrefix();
|
213
245
|
const result = await stormClient_1.stormClient.createImage(prefix + `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
|
@@ -380,6 +380,10 @@ router.post('/:handle/ui', async (req, res) => {
|
|
380
380
|
queue.on('event', (screenData) => {
|
381
381
|
sendEvent(res, screenData);
|
382
382
|
});
|
383
|
+
queue.on('error', (err) => {
|
384
|
+
console.error('Failed to process page', err);
|
385
|
+
sendError(err, res);
|
386
|
+
});
|
383
387
|
for (const screen of Object.values(uniqueUserJourneyScreens)) {
|
384
388
|
queue
|
385
389
|
.addPrompt({
|
@@ -435,6 +439,10 @@ router.post('/ui/edit', async (req, res) => {
|
|
435
439
|
sendEvent(res, data);
|
436
440
|
}
|
437
441
|
});
|
442
|
+
queue.on('error', (err) => {
|
443
|
+
console.error('Failed to process page', err);
|
444
|
+
sendError(err, res);
|
445
|
+
});
|
438
446
|
const pages = aiRequest.prompt.pages.filter((page) => page.conversationId);
|
439
447
|
if (pages.length === 0) {
|
440
448
|
console.log('No pages to update', aiRequest.prompt.pages);
|
@@ -3,6 +3,29 @@
|
|
3
3
|
* Copyright 2023 Kapeta Inc.
|
4
4
|
* SPDX-License-Identifier: BUSL-1.1
|
5
5
|
*/
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
7
|
+
if (k2 === undefined) k2 = k;
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
11
|
+
}
|
12
|
+
Object.defineProperty(o, k2, desc);
|
13
|
+
}) : (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
o[k2] = m[k];
|
16
|
+
}));
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
19
|
+
}) : function(o, v) {
|
20
|
+
o["default"] = v;
|
21
|
+
});
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
23
|
+
if (mod && mod.__esModule) return mod;
|
24
|
+
var result = {};
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
26
|
+
__setModuleDefault(result, mod);
|
27
|
+
return result;
|
28
|
+
};
|
6
29
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
7
30
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
8
31
|
};
|
@@ -13,6 +36,7 @@ const stormClient_1 = require("./stormClient");
|
|
13
36
|
const node_events_1 = require("node:events");
|
14
37
|
const p_queue_1 = __importDefault(require("p-queue"));
|
15
38
|
const page_utils_1 = require("./page-utils");
|
39
|
+
const mimetypes = __importStar(require("mime-types"));
|
16
40
|
class PageQueue extends node_events_1.EventEmitter {
|
17
41
|
queue;
|
18
42
|
eventQueue;
|
@@ -208,6 +232,14 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
208
232
|
//console.log('Ignoring duplicate image prompt', prompt);
|
209
233
|
return;
|
210
234
|
}
|
235
|
+
// Add safeguard to avoid generating images for nonsense URLs
|
236
|
+
// Sometimes we get entries for Base URLs that will then cause issues on the filesystem
|
237
|
+
// Example: https://www.kapeta.com/images/
|
238
|
+
const mimeType = mimetypes.lookup(prompt.url);
|
239
|
+
if (!mimeType || !mimeType.startsWith('image/')) {
|
240
|
+
console.warn('Skipping image reference of type %s for url %s', mimeType, prompt.url);
|
241
|
+
return;
|
242
|
+
}
|
211
243
|
this.images.set(prompt.url, prompt.description);
|
212
244
|
const prefix = this.getPrefix();
|
213
245
|
const result = await stormClient_1.stormClient.createImage(prefix + `Create an image for the url "${prompt.url}" with this description: ${prompt.description}`.trim());
|
@@ -380,6 +380,10 @@ router.post('/:handle/ui', async (req, res) => {
|
|
380
380
|
queue.on('event', (screenData) => {
|
381
381
|
sendEvent(res, screenData);
|
382
382
|
});
|
383
|
+
queue.on('error', (err) => {
|
384
|
+
console.error('Failed to process page', err);
|
385
|
+
sendError(err, res);
|
386
|
+
});
|
383
387
|
for (const screen of Object.values(uniqueUserJourneyScreens)) {
|
384
388
|
queue
|
385
389
|
.addPrompt({
|
@@ -435,6 +439,10 @@ router.post('/ui/edit', async (req, res) => {
|
|
435
439
|
sendEvent(res, data);
|
436
440
|
}
|
437
441
|
});
|
442
|
+
queue.on('error', (err) => {
|
443
|
+
console.error('Failed to process page', err);
|
444
|
+
sendError(err, res);
|
445
|
+
});
|
438
446
|
const pages = aiRequest.prompt.pages.filter((page) => page.conversationId);
|
439
447
|
if (pages.length === 0) {
|
440
448
|
console.log('No pages to update', aiRequest.prompt.pages);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@kapeta/local-cluster-service",
|
3
|
-
"version": "0.70.
|
3
|
+
"version": "0.70.7",
|
4
4
|
"description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
|
5
5
|
"type": "commonjs",
|
6
6
|
"exports": {
|
@@ -76,6 +76,7 @@
|
|
76
76
|
"js-yaml": "^4.1.0",
|
77
77
|
"lodash": "^4.17.15",
|
78
78
|
"md5": "2.2.1",
|
79
|
+
"mime-types": "^2.1.35",
|
79
80
|
"node-cache": "^5.1.2",
|
80
81
|
"node-fetch": "^3.3.2",
|
81
82
|
"node-uuid": "^1.4.8",
|
@@ -104,6 +105,7 @@
|
|
104
105
|
"@types/js-yaml": "^4.0.9",
|
105
106
|
"@types/lodash": "^4.14.195",
|
106
107
|
"@types/md5": "^2.3.2",
|
108
|
+
"@types/mime-types": "^2.1.4",
|
107
109
|
"@types/node": "^20.5.8",
|
108
110
|
"@types/node-fetch": "^2.6.11",
|
109
111
|
"@types/node-uuid": "^0.0.29",
|
@@ -10,6 +10,7 @@ import { EventEmitter } from 'node:events';
|
|
10
10
|
import PQueue from 'p-queue';
|
11
11
|
|
12
12
|
import { hasPageOnDisk, normalizePath } from './page-utils';
|
13
|
+
import * as mimetypes from 'mime-types';
|
13
14
|
|
14
15
|
export interface ImagePrompt {
|
15
16
|
name: string;
|
@@ -255,6 +256,15 @@ export class PageQueue extends EventEmitter {
|
|
255
256
|
//console.log('Ignoring duplicate image prompt', prompt);
|
256
257
|
return;
|
257
258
|
}
|
259
|
+
// Add safeguard to avoid generating images for nonsense URLs
|
260
|
+
// Sometimes we get entries for Base URLs that will then cause issues on the filesystem
|
261
|
+
// Example: https://www.kapeta.com/images/
|
262
|
+
const mimeType = mimetypes.lookup(prompt.url) as string | false;
|
263
|
+
if (!mimeType || !mimeType.startsWith('image/')) {
|
264
|
+
console.warn('Skipping image reference of type %s for url %s', mimeType, prompt.url);
|
265
|
+
return;
|
266
|
+
}
|
267
|
+
|
258
268
|
this.images.set(prompt.url, prompt.description);
|
259
269
|
const prefix = this.getPrefix();
|
260
270
|
const result = await stormClient.createImage(
|
package/src/storm/routes.ts
CHANGED
@@ -474,6 +474,11 @@ router.post('/:handle/ui', async (req: KapetaBodyRequest, res: Response) => {
|
|
474
474
|
sendEvent(res, screenData);
|
475
475
|
});
|
476
476
|
|
477
|
+
queue.on('error', (err) => {
|
478
|
+
console.error('Failed to process page', err);
|
479
|
+
sendError(err as any, res);
|
480
|
+
});
|
481
|
+
|
477
482
|
for (const screen of Object.values(uniqueUserJourneyScreens)) {
|
478
483
|
queue
|
479
484
|
.addPrompt({
|
@@ -538,6 +543,11 @@ router.post('/ui/edit', async (req: KapetaBodyRequest, res: Response) => {
|
|
538
543
|
}
|
539
544
|
});
|
540
545
|
|
546
|
+
queue.on('error', (err) => {
|
547
|
+
console.error('Failed to process page', err);
|
548
|
+
sendError(err as any, res);
|
549
|
+
});
|
550
|
+
|
541
551
|
const pages = aiRequest.prompt.pages.filter((page) => page.conversationId);
|
542
552
|
if (pages.length === 0) {
|
543
553
|
console.log('No pages to update', aiRequest.prompt.pages);
|