@promptbook/legacy-documents 0.75.2 → 0.75.4

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.
@@ -24,6 +24,7 @@ import { DEFAULT_REMOTE_URL } from '../config';
24
24
  import { DEFAULT_REMOTE_URL_PATH } from '../config';
25
25
  import { DEFAULT_CSV_SETTINGS } from '../config';
26
26
  import { DEFAULT_IS_VERBOSE } from '../config';
27
+ import { SET_IS_VERBOSE } from '../config';
27
28
  import { DEFAULT_IS_AUTO_INSTALLED } from '../config';
28
29
  import { pipelineJsonToString } from '../conversion/pipelineJsonToString';
29
30
  import { pipelineStringToJson } from '../conversion/pipelineStringToJson';
@@ -136,6 +137,7 @@ export { DEFAULT_REMOTE_URL };
136
137
  export { DEFAULT_REMOTE_URL_PATH };
137
138
  export { DEFAULT_CSV_SETTINGS };
138
139
  export { DEFAULT_IS_VERBOSE };
140
+ export { SET_IS_VERBOSE };
139
141
  export { DEFAULT_IS_AUTO_INSTALLED };
140
142
  export { pipelineJsonToString };
141
143
  export { pipelineStringToJson };
@@ -204,7 +204,15 @@ export declare const DEFAULT_CSV_SETTINGS: CsvSettings;
204
204
  *
205
205
  * @public exported from `@promptbook/core`
206
206
  */
207
- export declare const DEFAULT_IS_VERBOSE = false;
207
+ export declare let DEFAULT_IS_VERBOSE: boolean;
208
+ /**
209
+ * @@@
210
+ *
211
+ * Note: This is experimental feature
212
+ *
213
+ * @public exported from `@promptbook/core`
214
+ */
215
+ export declare function SET_IS_VERBOSE(isVerbose: boolean): void;
208
216
  /**
209
217
  * @@@
210
218
  *
@@ -1,4 +1,5 @@
1
1
  import type { string_markdown } from '../../../types/typeAliases';
2
+ import type { Scraper } from '../Scraper';
2
3
  /**
3
4
  * Creates a message with all registered scrapers
4
5
  *
@@ -6,7 +7,7 @@ import type { string_markdown } from '../../../types/typeAliases';
6
7
  *
7
8
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
8
9
  */
9
- export declare function $registeredScrapersMessage(): string_markdown;
10
+ export declare function $registeredScrapersMessage(availableScrapers: ReadonlyArray<Scraper>): string_markdown;
10
11
  /**
11
12
  * TODO: [®] DRY Register logic
12
13
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/legacy-documents",
3
- "version": "0.75.2",
3
+ "version": "0.75.4",
4
4
  "description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
5
5
  "--note-0": " <- [🐊]",
6
6
  "private": false,
@@ -54,7 +54,7 @@
54
54
  "module": "./esm/index.es.js",
55
55
  "typings": "./esm/typings/src/_packages/legacy-documents.index.d.ts",
56
56
  "peerDependencies": {
57
- "@promptbook/core": "0.75.2"
57
+ "@promptbook/core": "0.75.4"
58
58
  },
59
59
  "dependencies": {
60
60
  "colors": "1.4.0",
package/umd/index.umd.js CHANGED
@@ -23,7 +23,7 @@
23
23
  *
24
24
  * @see https://github.com/webgptorg/promptbook
25
25
  */
26
- var PROMPTBOOK_ENGINE_VERSION = '0.75.1';
26
+ var PROMPTBOOK_ENGINE_VERSION = '0.75.3';
27
27
  /**
28
28
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
29
29
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -3161,50 +3161,63 @@
3161
3161
  *
3162
3162
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
3163
3163
  */
3164
- function $registeredScrapersMessage() {
3165
- var e_1, _a, e_2, _b;
3164
+ function $registeredScrapersMessage(availableScrapers) {
3165
+ var e_1, _a, e_2, _b, e_3, _c;
3166
3166
  /**
3167
3167
  * Mixes registered scrapers from $scrapersMetadataRegister and $scrapersRegister
3168
3168
  */
3169
3169
  var all = [];
3170
- var _loop_1 = function (packageName, className) {
3170
+ var _loop_1 = function (packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser) {
3171
3171
  if (all.some(function (item) { return item.packageName === packageName && item.className === className; })) {
3172
3172
  return "continue";
3173
3173
  }
3174
- all.push({ packageName: packageName, className: className });
3174
+ all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
3175
3175
  };
3176
3176
  try {
3177
- for (var _c = __values($scrapersMetadataRegister.list()), _d = _c.next(); !_d.done; _d = _c.next()) {
3178
- var _e = _d.value, packageName = _e.packageName, className = _e.className;
3179
- _loop_1(packageName, className);
3177
+ for (var _d = __values($scrapersMetadataRegister.list()), _e = _d.next(); !_e.done; _e = _d.next()) {
3178
+ var _f = _e.value, packageName = _f.packageName, className = _f.className, mimeTypes = _f.mimeTypes, documentationUrl = _f.documentationUrl, isAvilableInBrowser = _f.isAvilableInBrowser;
3179
+ _loop_1(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
3180
3180
  }
3181
3181
  }
3182
3182
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
3183
3183
  finally {
3184
3184
  try {
3185
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
3185
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
3186
3186
  }
3187
3187
  finally { if (e_1) throw e_1.error; }
3188
3188
  }
3189
- var _loop_2 = function (packageName, className) {
3189
+ var _loop_2 = function (packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser) {
3190
3190
  if (all.some(function (item) { return item.packageName === packageName && item.className === className; })) {
3191
3191
  return "continue";
3192
3192
  }
3193
- all.push({ packageName: packageName, className: className });
3193
+ all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
3194
3194
  };
3195
3195
  try {
3196
- for (var _f = __values($scrapersRegister.list()), _g = _f.next(); !_g.done; _g = _f.next()) {
3197
- var _h = _g.value, packageName = _h.packageName, className = _h.className;
3198
- _loop_2(packageName, className);
3196
+ for (var _g = __values($scrapersRegister.list()), _h = _g.next(); !_h.done; _h = _g.next()) {
3197
+ var _j = _h.value, packageName = _j.packageName, className = _j.className, mimeTypes = _j.mimeTypes, documentationUrl = _j.documentationUrl, isAvilableInBrowser = _j.isAvilableInBrowser;
3198
+ _loop_2(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
3199
3199
  }
3200
3200
  }
3201
3201
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
3202
3202
  finally {
3203
3203
  try {
3204
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
3204
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
3205
3205
  }
3206
3206
  finally { if (e_2) throw e_2.error; }
3207
3207
  }
3208
+ try {
3209
+ for (var availableScrapers_1 = __values(availableScrapers), availableScrapers_1_1 = availableScrapers_1.next(); !availableScrapers_1_1.done; availableScrapers_1_1 = availableScrapers_1.next()) {
3210
+ var metadata_1 = availableScrapers_1_1.value.metadata;
3211
+ all.push(metadata_1);
3212
+ }
3213
+ }
3214
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
3215
+ finally {
3216
+ try {
3217
+ if (availableScrapers_1_1 && !availableScrapers_1_1.done && (_c = availableScrapers_1.return)) _c.call(availableScrapers_1);
3218
+ }
3219
+ finally { if (e_3) throw e_3.error; }
3220
+ }
3208
3221
  var metadata = all.map(function (metadata) {
3209
3222
  var isMetadataAviailable = $scrapersMetadataRegister
3210
3223
  .list()
@@ -3218,38 +3231,44 @@
3218
3231
  var packageName = _a.packageName, className = _a.className;
3219
3232
  return metadata.packageName === packageName && metadata.className === className;
3220
3233
  });
3221
- return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled });
3234
+ var isAvilableInTools = availableScrapers.some(function (_a) {
3235
+ var _b = _a.metadata, packageName = _b.packageName, className = _b.className;
3236
+ return metadata.packageName === packageName && metadata.className === className;
3237
+ });
3238
+ return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled, isAvilableInTools: isAvilableInTools });
3222
3239
  });
3223
3240
  if (metadata.length === 0) {
3224
- return "No scrapers are available";
3241
+ return spaceTrim__default["default"]("\n **No scrapers are available**\n\n This is a unexpected behavior, you are probably using some broken version of Promptbook\n At least there should be available the metadata of the scrapers\n ");
3225
3242
  }
3226
3243
  return spaceTrim__default["default"](function (block) { return "\n Available scrapers are:\n ".concat(block(metadata
3227
3244
  .map(function (_a, i) {
3228
- var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled;
3229
- var more;
3230
- if (just(false)) {
3231
- more = '';
3232
- }
3233
- else if (!isMetadataAviailable && !isInstalled) {
3234
- // TODO: [�][�] Maybe do allow to do auto-install if package not registered and not found
3235
- more = "(not installed and no metadata, looks like a unexpected behavior)";
3236
- }
3237
- else if (isMetadataAviailable && !isInstalled) {
3238
- // TODO: [�][�]
3239
- more = "(not installed)";
3240
- }
3241
- else if (!isMetadataAviailable && isInstalled) {
3242
- more = "(no metadata, looks like a unexpected behavior)";
3243
- }
3244
- else if (isMetadataAviailable && isInstalled) {
3245
- more = "(installed)";
3246
- }
3247
- else {
3248
- more = "(unknown state, looks like a unexpected behavior)";
3245
+ var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser, isAvilableInTools = _a.isAvilableInTools;
3246
+ var more = [];
3247
+ // TODO: [🧠] Maybe use `documentationUrl`
3248
+ if (isMetadataAviailable) {
3249
+ more.push("\u2B1C Metadata registered");
3250
+ } // not else
3251
+ if (isInstalled) {
3252
+ more.push("\uD83D\uDFE9 Installed");
3253
+ } // not else
3254
+ if (isAvilableInTools) {
3255
+ more.push("\uD83D\uDFE6 Available in tools");
3256
+ } // not else
3257
+ if (!isMetadataAviailable && isInstalled) {
3258
+ more.push("When no metadata registered but scraper is installed, it is an unexpected behavior");
3259
+ } // not else
3260
+ if (!isInstalled && isAvilableInTools) {
3261
+ more.push("When the scraper is not installed but available in tools, it is an unexpected compatibility behavior");
3262
+ } // not else
3263
+ if (!isAvilableInBrowser) {
3264
+ more.push("Not usable in browser");
3249
3265
  }
3250
- return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` ").concat(more);
3266
+ var moreText = more.length === 0 ? '' : " *(".concat(more.join('; '), ")*");
3267
+ return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes
3268
+ .map(function (mimeType) { return "\"".concat(mimeType, "\""); })
3269
+ .join(', ')).concat(moreText);
3251
3270
  })
3252
- .join('\n')), "\n "); });
3271
+ .join('\n')), "\n\n Legend:\n - \u2B1C **Metadata registered** means that Promptbook knows about the scraper, it is similar to registration in some registry\n - \uD83D\uDFE9 **Installed** means that you have imported package with particular scraper\n - \uD83D\uDFE6 **Available in tools** means that you have passed scraper as dependency into prepare or execution process\n\n "); });
3253
3272
  }
3254
3273
  /**
3255
3274
  * TODO: [®] DRY Register logic
@@ -3451,54 +3470,75 @@
3451
3470
  _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _a, rootDirname = options.rootDirname, _b = options.isVerbose, isVerbose = _b === void 0 ? DEFAULT_IS_VERBOSE : _b;
3452
3471
  knowledgePreparedUnflatten = new Array(knowledgeSources.length);
3453
3472
  return [4 /*yield*/, forEachAsync(knowledgeSources, { maxParallelCount: maxParallelCount }, function (knowledgeSource, index) { return __awaiter(_this, void 0, void 0, function () {
3454
- var partialPieces, sourceHandler, _a, _b, scraper, partialPiecesUnchecked, e_1_1, pieces;
3455
- var e_1, _c;
3456
- return __generator(this, function (_d) {
3457
- switch (_d.label) {
3473
+ var partialPieces, sourceHandler, scrapers, _loop_1, scrapers_1, scrapers_1_1, scraper, state_1, e_1_1, pieces;
3474
+ var e_1, _a;
3475
+ return __generator(this, function (_b) {
3476
+ switch (_b.label) {
3458
3477
  case 0:
3459
3478
  partialPieces = null;
3460
3479
  return [4 /*yield*/, makeKnowledgeSourceHandler(knowledgeSource, tools, { rootDirname: rootDirname, isVerbose: isVerbose })];
3461
3480
  case 1:
3462
- sourceHandler = _d.sent();
3463
- _d.label = 2;
3481
+ sourceHandler = _b.sent();
3482
+ scrapers = arrayableToArray(tools.scrapers);
3483
+ _loop_1 = function (scraper) {
3484
+ var partialPiecesUnchecked;
3485
+ return __generator(this, function (_c) {
3486
+ switch (_c.label) {
3487
+ case 0:
3488
+ if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3489
+ // <- TODO: [🦔] Implement mime-type wildcards
3490
+ ) {
3491
+ return [2 /*return*/, "continue"];
3492
+ }
3493
+ return [4 /*yield*/, scraper.scrape(sourceHandler)];
3494
+ case 1:
3495
+ partialPiecesUnchecked = _c.sent();
3496
+ if (partialPiecesUnchecked !== null) {
3497
+ partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3498
+ return [2 /*return*/, "break"];
3499
+ }
3500
+ console.warn(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge from source despite the scraper `".concat(scraper.metadata.className, "` supports the mime type \"").concat(sourceHandler.mimeType, "\".\n \n The source:\n > ").concat(block(knowledgeSource.sourceContent
3501
+ .split('\n')
3502
+ .map(function (line) { return "> ".concat(line); })
3503
+ .join('\n')), "\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3504
+ return [2 /*return*/];
3505
+ }
3506
+ });
3507
+ };
3508
+ _b.label = 2;
3464
3509
  case 2:
3465
- _d.trys.push([2, 7, 8, 9]);
3466
- _a = __values(arrayableToArray(tools.scrapers)), _b = _a.next();
3467
- _d.label = 3;
3510
+ _b.trys.push([2, 7, 8, 9]);
3511
+ scrapers_1 = __values(scrapers), scrapers_1_1 = scrapers_1.next();
3512
+ _b.label = 3;
3468
3513
  case 3:
3469
- if (!!_b.done) return [3 /*break*/, 6];
3470
- scraper = _b.value;
3471
- if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3472
- // <- TODO: [🦔] Implement mime-type wildcards
3473
- ) {
3474
- return [3 /*break*/, 5];
3475
- }
3476
- return [4 /*yield*/, scraper.scrape(sourceHandler)];
3514
+ if (!!scrapers_1_1.done) return [3 /*break*/, 6];
3515
+ scraper = scrapers_1_1.value;
3516
+ return [5 /*yield**/, _loop_1(scraper)];
3477
3517
  case 4:
3478
- partialPiecesUnchecked = _d.sent();
3479
- if (partialPiecesUnchecked !== null) {
3480
- partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3481
- // <- TODO: [🪓] Here should be no need for spreading new array, just `partialPieces = partialPiecesUnchecked`
3518
+ state_1 = _b.sent();
3519
+ if (state_1 === "break")
3482
3520
  return [3 /*break*/, 6];
3483
- }
3484
- _d.label = 5;
3521
+ _b.label = 5;
3485
3522
  case 5:
3486
- _b = _a.next();
3523
+ scrapers_1_1 = scrapers_1.next();
3487
3524
  return [3 /*break*/, 3];
3488
3525
  case 6: return [3 /*break*/, 9];
3489
3526
  case 7:
3490
- e_1_1 = _d.sent();
3527
+ e_1_1 = _b.sent();
3491
3528
  e_1 = { error: e_1_1 };
3492
3529
  return [3 /*break*/, 9];
3493
3530
  case 8:
3494
3531
  try {
3495
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
3532
+ if (scrapers_1_1 && !scrapers_1_1.done && (_a = scrapers_1.return)) _a.call(scrapers_1);
3496
3533
  }
3497
3534
  finally { if (e_1) throw e_1.error; }
3498
3535
  return [7 /*endfinally*/];
3499
3536
  case 9:
3500
3537
  if (partialPieces === null) {
3501
- throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge from source: ".concat(knowledgeSource.sourceContent, "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage()), "\n\n\n "); }));
3538
+ throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge\n \n The source:\n > ".concat(block(knowledgeSource.sourceContent
3539
+ .split('\n')
3540
+ .map(function (line) { return "> ".concat(line); })
3541
+ .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3502
3542
  }
3503
3543
  pieces = partialPieces.map(function (partialPiece) { return (__assign(__assign({}, partialPiece), { sources: [
3504
3544
  {