@kapeta/local-cluster-service 0.70.2 → 0.70.3
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 +7 -6
- package/dist/cjs/src/storm/page-utils.d.ts +1 -0
- package/dist/cjs/src/storm/page-utils.js +2 -1
- package/dist/esm/src/storm/PageGenerator.js +7 -6
- package/dist/esm/src/storm/page-utils.d.ts +1 -0
- package/dist/esm/src/storm/page-utils.js +2 -1
- package/package.json +1 -1
- package/src/storm/PageGenerator.ts +10 -7
- package/src/storm/page-utils.ts +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## [0.70.3](https://github.com/kapetacom/local-cluster-service/compare/v0.70.2...v0.70.3) (2024-09-10)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* better dedupe of refs ([48f676e](https://github.com/kapetacom/local-cluster-service/commit/48f676e0f6780580c2b77cdb8e6f3336f6633e77))
|
7
|
+
* match full pattern in lazy check ([5b5e9d7](https://github.com/kapetacom/local-cluster-service/commit/5b5e9d7cfaf3e6e9b3eacf378e90362e99433d86))
|
8
|
+
|
1
9
|
## [0.70.2](https://github.com/kapetacom/local-cluster-service/compare/v0.70.1...v0.70.2) (2024-09-09)
|
2
10
|
|
3
11
|
|
@@ -104,7 +104,7 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
104
104
|
generator.on('page_refs', async ({ event, references }) => {
|
105
105
|
try {
|
106
106
|
const matchesExistingPages = (url) => {
|
107
|
-
return [...this.pages.keys()].some((path) => new RegExp(path.replaceAll('/*', '/[^/]+')).test(url));
|
107
|
+
return [...this.pages.keys()].some((path) => new RegExp(`^${path.replaceAll('/*', '/[^/]+')}$`).test(url.replace(/\?.*$/gi, '')));
|
108
108
|
};
|
109
109
|
const initialPrompts = [];
|
110
110
|
const resourcePromises = references.map(async (reference) => {
|
@@ -125,16 +125,16 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
125
125
|
case 'javascript':
|
126
126
|
//console.log('Ignoring reference', reference);
|
127
127
|
break;
|
128
|
-
case 'html':
|
129
|
-
|
130
|
-
if (matchesExistingPages(
|
128
|
+
case 'html': {
|
129
|
+
const normalizedPath = (0, page_utils_1.normalizePath)(reference.url);
|
130
|
+
if (matchesExistingPages(normalizedPath)) {
|
131
131
|
break;
|
132
132
|
}
|
133
|
-
this.pages.set(
|
133
|
+
this.pages.set(normalizedPath, reference.description);
|
134
134
|
initialPrompts.push({
|
135
135
|
name: reference.name,
|
136
136
|
title: reference.title,
|
137
|
-
path:
|
137
|
+
path: normalizedPath,
|
138
138
|
method: 'GET',
|
139
139
|
storage_prefix: this.systemId + '_',
|
140
140
|
prompt: `Implement a page for ${reference.name} at ${reference.url} with the following description: ${reference.description}.\n` +
|
@@ -145,6 +145,7 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
145
145
|
theme: this.theme,
|
146
146
|
});
|
147
147
|
break;
|
148
|
+
}
|
148
149
|
}
|
149
150
|
});
|
150
151
|
// Wait for resources to be generated
|
@@ -7,6 +7,7 @@ import { Response } from 'express';
|
|
7
7
|
import { ConversationItem } from './stream';
|
8
8
|
import { ImagePrompt } from './PageGenerator';
|
9
9
|
export declare const SystemIdHeader = "System-Id";
|
10
|
+
export declare function normalizePath(path: string): string;
|
10
11
|
export declare function writePageToDisk(systemId: string, event: StormEventPage): Promise<{
|
11
12
|
path: string;
|
12
13
|
}>;
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.writeConversationToFile = exports.readConversationFromFile = exports.readPageFromDisk = exports.readPageFromDiskAsString = exports.resolveReadPath = exports.getSystemBaseDir = exports.hasPageOnDisk = exports.writeImageToDisk = exports.writeAssetToDisk = exports.writePageToDisk = exports.SystemIdHeader = void 0;
|
6
|
+
exports.writeConversationToFile = exports.readConversationFromFile = exports.readPageFromDisk = exports.readPageFromDiskAsString = exports.resolveReadPath = exports.getSystemBaseDir = exports.hasPageOnDisk = exports.writeImageToDisk = exports.writeAssetToDisk = exports.writePageToDisk = exports.normalizePath = exports.SystemIdHeader = void 0;
|
7
7
|
const node_os_1 = __importDefault(require("node:os"));
|
8
8
|
const path_1 = __importDefault(require("path"));
|
9
9
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
@@ -14,6 +14,7 @@ function normalizePath(path) {
|
|
14
14
|
.replace(/:[a-z][a-z_]*\b/gi, '*')
|
15
15
|
.replace(/\{[a-z-.]+}/gi, '*');
|
16
16
|
}
|
17
|
+
exports.normalizePath = normalizePath;
|
17
18
|
async function writePageToDisk(systemId, event) {
|
18
19
|
const baseDir = getSystemBaseDir(systemId);
|
19
20
|
const filePath = getFilePath(event.payload.method);
|
@@ -104,7 +104,7 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
104
104
|
generator.on('page_refs', async ({ event, references }) => {
|
105
105
|
try {
|
106
106
|
const matchesExistingPages = (url) => {
|
107
|
-
return [...this.pages.keys()].some((path) => new RegExp(path.replaceAll('/*', '/[^/]+')).test(url));
|
107
|
+
return [...this.pages.keys()].some((path) => new RegExp(`^${path.replaceAll('/*', '/[^/]+')}$`).test(url.replace(/\?.*$/gi, '')));
|
108
108
|
};
|
109
109
|
const initialPrompts = [];
|
110
110
|
const resourcePromises = references.map(async (reference) => {
|
@@ -125,16 +125,16 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
125
125
|
case 'javascript':
|
126
126
|
//console.log('Ignoring reference', reference);
|
127
127
|
break;
|
128
|
-
case 'html':
|
129
|
-
|
130
|
-
if (matchesExistingPages(
|
128
|
+
case 'html': {
|
129
|
+
const normalizedPath = (0, page_utils_1.normalizePath)(reference.url);
|
130
|
+
if (matchesExistingPages(normalizedPath)) {
|
131
131
|
break;
|
132
132
|
}
|
133
|
-
this.pages.set(
|
133
|
+
this.pages.set(normalizedPath, reference.description);
|
134
134
|
initialPrompts.push({
|
135
135
|
name: reference.name,
|
136
136
|
title: reference.title,
|
137
|
-
path:
|
137
|
+
path: normalizedPath,
|
138
138
|
method: 'GET',
|
139
139
|
storage_prefix: this.systemId + '_',
|
140
140
|
prompt: `Implement a page for ${reference.name} at ${reference.url} with the following description: ${reference.description}.\n` +
|
@@ -145,6 +145,7 @@ class PageQueue extends node_events_1.EventEmitter {
|
|
145
145
|
theme: this.theme,
|
146
146
|
});
|
147
147
|
break;
|
148
|
+
}
|
148
149
|
}
|
149
150
|
});
|
150
151
|
// Wait for resources to be generated
|
@@ -7,6 +7,7 @@ import { Response } from 'express';
|
|
7
7
|
import { ConversationItem } from './stream';
|
8
8
|
import { ImagePrompt } from './PageGenerator';
|
9
9
|
export declare const SystemIdHeader = "System-Id";
|
10
|
+
export declare function normalizePath(path: string): string;
|
10
11
|
export declare function writePageToDisk(systemId: string, event: StormEventPage): Promise<{
|
11
12
|
path: string;
|
12
13
|
}>;
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.writeConversationToFile = exports.readConversationFromFile = exports.readPageFromDisk = exports.readPageFromDiskAsString = exports.resolveReadPath = exports.getSystemBaseDir = exports.hasPageOnDisk = exports.writeImageToDisk = exports.writeAssetToDisk = exports.writePageToDisk = exports.SystemIdHeader = void 0;
|
6
|
+
exports.writeConversationToFile = exports.readConversationFromFile = exports.readPageFromDisk = exports.readPageFromDiskAsString = exports.resolveReadPath = exports.getSystemBaseDir = exports.hasPageOnDisk = exports.writeImageToDisk = exports.writeAssetToDisk = exports.writePageToDisk = exports.normalizePath = exports.SystemIdHeader = void 0;
|
7
7
|
const node_os_1 = __importDefault(require("node:os"));
|
8
8
|
const path_1 = __importDefault(require("path"));
|
9
9
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
@@ -14,6 +14,7 @@ function normalizePath(path) {
|
|
14
14
|
.replace(/:[a-z][a-z_]*\b/gi, '*')
|
15
15
|
.replace(/\{[a-z-.]+}/gi, '*');
|
16
16
|
}
|
17
|
+
exports.normalizePath = normalizePath;
|
17
18
|
async function writePageToDisk(systemId, event) {
|
18
19
|
const baseDir = getSystemBaseDir(systemId);
|
19
20
|
const filePath = getFilePath(event.payload.method);
|
package/package.json
CHANGED
@@ -8,7 +8,7 @@ import { stormClient, UIPagePrompt } from './stormClient';
|
|
8
8
|
import { ReferenceClassification, StormEvent, StormEventPage, StormImage, UIShell } from './events';
|
9
9
|
import { EventEmitter } from 'node:events';
|
10
10
|
import { PromiseQueue } from './PromiseQueue';
|
11
|
-
import { hasPageOnDisk } from './page-utils';
|
11
|
+
import { hasPageOnDisk, normalizePath } from './page-utils';
|
12
12
|
|
13
13
|
export interface ImagePrompt {
|
14
14
|
name: string;
|
@@ -137,7 +137,9 @@ export class PageQueue extends EventEmitter {
|
|
137
137
|
generator.on('page_refs', async ({ event, references }) => {
|
138
138
|
try {
|
139
139
|
const matchesExistingPages = (url: string) => {
|
140
|
-
return [...this.pages.keys()].some((path) =>
|
140
|
+
return [...this.pages.keys()].some((path) =>
|
141
|
+
new RegExp(`^${path.replaceAll('/*', '/[^/]+')}$`).test(url.replace(/\?.*$/gi, ''))
|
142
|
+
);
|
141
143
|
};
|
142
144
|
const initialPrompts: InitialPrompt[] = [];
|
143
145
|
const resourcePromises = references.map(async (reference) => {
|
@@ -161,17 +163,17 @@ export class PageQueue extends EventEmitter {
|
|
161
163
|
case 'javascript':
|
162
164
|
//console.log('Ignoring reference', reference);
|
163
165
|
break;
|
164
|
-
case 'html':
|
165
|
-
|
166
|
-
if (matchesExistingPages(
|
166
|
+
case 'html': {
|
167
|
+
const normalizedPath = normalizePath(reference.url);
|
168
|
+
if (matchesExistingPages(normalizedPath)) {
|
167
169
|
break;
|
168
170
|
}
|
169
|
-
this.pages.set(
|
171
|
+
this.pages.set(normalizedPath, reference.description);
|
170
172
|
|
171
173
|
initialPrompts.push({
|
172
174
|
name: reference.name,
|
173
175
|
title: reference.title,
|
174
|
-
path:
|
176
|
+
path: normalizedPath,
|
175
177
|
method: 'GET',
|
176
178
|
storage_prefix: this.systemId + '_',
|
177
179
|
prompt:
|
@@ -183,6 +185,7 @@ export class PageQueue extends EventEmitter {
|
|
183
185
|
theme: this.theme,
|
184
186
|
});
|
185
187
|
break;
|
188
|
+
}
|
186
189
|
}
|
187
190
|
});
|
188
191
|
|
package/src/storm/page-utils.ts
CHANGED
@@ -15,7 +15,7 @@ import { ImagePrompt } from './PageGenerator';
|
|
15
15
|
|
16
16
|
export const SystemIdHeader = 'System-Id';
|
17
17
|
|
18
|
-
function normalizePath(path: string) {
|
18
|
+
export function normalizePath(path: string) {
|
19
19
|
return path
|
20
20
|
.replace(/\?.*$/gi, '')
|
21
21
|
.replace(/:[a-z][a-z_]*\b/gi, '*')
|