@promptbook/pdf 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.
package/esm/index.es.js CHANGED
@@ -20,7 +20,7 @@ var BOOK_LANGUAGE_VERSION = '1.0.0';
20
20
  *
21
21
  * @see https://github.com/webgptorg/promptbook
22
22
  */
23
- var PROMPTBOOK_ENGINE_VERSION = '0.75.1';
23
+ var PROMPTBOOK_ENGINE_VERSION = '0.75.3';
24
24
  /**
25
25
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
26
26
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -2860,50 +2860,63 @@ var $scrapersRegister = new $Register('scraper_constructors');
2860
2860
  *
2861
2861
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
2862
2862
  */
2863
- function $registeredScrapersMessage() {
2864
- var e_1, _a, e_2, _b;
2863
+ function $registeredScrapersMessage(availableScrapers) {
2864
+ var e_1, _a, e_2, _b, e_3, _c;
2865
2865
  /**
2866
2866
  * Mixes registered scrapers from $scrapersMetadataRegister and $scrapersRegister
2867
2867
  */
2868
2868
  var all = [];
2869
- var _loop_1 = function (packageName, className) {
2869
+ var _loop_1 = function (packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser) {
2870
2870
  if (all.some(function (item) { return item.packageName === packageName && item.className === className; })) {
2871
2871
  return "continue";
2872
2872
  }
2873
- all.push({ packageName: packageName, className: className });
2873
+ all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
2874
2874
  };
2875
2875
  try {
2876
- for (var _c = __values($scrapersMetadataRegister.list()), _d = _c.next(); !_d.done; _d = _c.next()) {
2877
- var _e = _d.value, packageName = _e.packageName, className = _e.className;
2878
- _loop_1(packageName, className);
2876
+ for (var _d = __values($scrapersMetadataRegister.list()), _e = _d.next(); !_e.done; _e = _d.next()) {
2877
+ var _f = _e.value, packageName = _f.packageName, className = _f.className, mimeTypes = _f.mimeTypes, documentationUrl = _f.documentationUrl, isAvilableInBrowser = _f.isAvilableInBrowser;
2878
+ _loop_1(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
2879
2879
  }
2880
2880
  }
2881
2881
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
2882
2882
  finally {
2883
2883
  try {
2884
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
2884
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
2885
2885
  }
2886
2886
  finally { if (e_1) throw e_1.error; }
2887
2887
  }
2888
- var _loop_2 = function (packageName, className) {
2888
+ var _loop_2 = function (packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser) {
2889
2889
  if (all.some(function (item) { return item.packageName === packageName && item.className === className; })) {
2890
2890
  return "continue";
2891
2891
  }
2892
- all.push({ packageName: packageName, className: className });
2892
+ all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
2893
2893
  };
2894
2894
  try {
2895
- for (var _f = __values($scrapersRegister.list()), _g = _f.next(); !_g.done; _g = _f.next()) {
2896
- var _h = _g.value, packageName = _h.packageName, className = _h.className;
2897
- _loop_2(packageName, className);
2895
+ for (var _g = __values($scrapersRegister.list()), _h = _g.next(); !_h.done; _h = _g.next()) {
2896
+ var _j = _h.value, packageName = _j.packageName, className = _j.className, mimeTypes = _j.mimeTypes, documentationUrl = _j.documentationUrl, isAvilableInBrowser = _j.isAvilableInBrowser;
2897
+ _loop_2(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
2898
2898
  }
2899
2899
  }
2900
2900
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
2901
2901
  finally {
2902
2902
  try {
2903
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
2903
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
2904
2904
  }
2905
2905
  finally { if (e_2) throw e_2.error; }
2906
2906
  }
2907
+ try {
2908
+ for (var availableScrapers_1 = __values(availableScrapers), availableScrapers_1_1 = availableScrapers_1.next(); !availableScrapers_1_1.done; availableScrapers_1_1 = availableScrapers_1.next()) {
2909
+ var metadata_1 = availableScrapers_1_1.value.metadata;
2910
+ all.push(metadata_1);
2911
+ }
2912
+ }
2913
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
2914
+ finally {
2915
+ try {
2916
+ if (availableScrapers_1_1 && !availableScrapers_1_1.done && (_c = availableScrapers_1.return)) _c.call(availableScrapers_1);
2917
+ }
2918
+ finally { if (e_3) throw e_3.error; }
2919
+ }
2907
2920
  var metadata = all.map(function (metadata) {
2908
2921
  var isMetadataAviailable = $scrapersMetadataRegister
2909
2922
  .list()
@@ -2917,38 +2930,44 @@ function $registeredScrapersMessage() {
2917
2930
  var packageName = _a.packageName, className = _a.className;
2918
2931
  return metadata.packageName === packageName && metadata.className === className;
2919
2932
  });
2920
- return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled });
2933
+ var isAvilableInTools = availableScrapers.some(function (_a) {
2934
+ var _b = _a.metadata, packageName = _b.packageName, className = _b.className;
2935
+ return metadata.packageName === packageName && metadata.className === className;
2936
+ });
2937
+ return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled, isAvilableInTools: isAvilableInTools });
2921
2938
  });
2922
2939
  if (metadata.length === 0) {
2923
- return "No scrapers are available";
2940
+ return spaceTrim$1("\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 ");
2924
2941
  }
2925
2942
  return spaceTrim$1(function (block) { return "\n Available scrapers are:\n ".concat(block(metadata
2926
2943
  .map(function (_a, i) {
2927
- var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled;
2928
- var more;
2929
- if (just(false)) {
2930
- more = '';
2931
- }
2932
- else if (!isMetadataAviailable && !isInstalled) {
2933
- // TODO: [�][�] Maybe do allow to do auto-install if package not registered and not found
2934
- more = "(not installed and no metadata, looks like a unexpected behavior)";
2935
- }
2936
- else if (isMetadataAviailable && !isInstalled) {
2937
- // TODO: [�][�]
2938
- more = "(not installed)";
2939
- }
2940
- else if (!isMetadataAviailable && isInstalled) {
2941
- more = "(no metadata, looks like a unexpected behavior)";
2942
- }
2943
- else if (isMetadataAviailable && isInstalled) {
2944
- more = "(installed)";
2945
- }
2946
- else {
2947
- more = "(unknown state, looks like a unexpected behavior)";
2944
+ var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser, isAvilableInTools = _a.isAvilableInTools;
2945
+ var more = [];
2946
+ // TODO: [🧠] Maybe use `documentationUrl`
2947
+ if (isMetadataAviailable) {
2948
+ more.push("\u2B1C Metadata registered");
2949
+ } // not else
2950
+ if (isInstalled) {
2951
+ more.push("\uD83D\uDFE9 Installed");
2952
+ } // not else
2953
+ if (isAvilableInTools) {
2954
+ more.push("\uD83D\uDFE6 Available in tools");
2955
+ } // not else
2956
+ if (!isMetadataAviailable && isInstalled) {
2957
+ more.push("When no metadata registered but scraper is installed, it is an unexpected behavior");
2958
+ } // not else
2959
+ if (!isInstalled && isAvilableInTools) {
2960
+ more.push("When the scraper is not installed but available in tools, it is an unexpected compatibility behavior");
2961
+ } // not else
2962
+ if (!isAvilableInBrowser) {
2963
+ more.push("Not usable in browser");
2948
2964
  }
2949
- return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` ").concat(more);
2965
+ var moreText = more.length === 0 ? '' : " *(".concat(more.join('; '), ")*");
2966
+ return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes
2967
+ .map(function (mimeType) { return "\"".concat(mimeType, "\""); })
2968
+ .join(', ')).concat(moreText);
2950
2969
  })
2951
- .join('\n')), "\n "); });
2970
+ .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 "); });
2952
2971
  }
2953
2972
  /**
2954
2973
  * TODO: [®] DRY Register logic
@@ -3196,54 +3215,75 @@ function prepareKnowledgePieces(knowledgeSources, tools, options) {
3196
3215
  _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;
3197
3216
  knowledgePreparedUnflatten = new Array(knowledgeSources.length);
3198
3217
  return [4 /*yield*/, forEachAsync(knowledgeSources, { maxParallelCount: maxParallelCount }, function (knowledgeSource, index) { return __awaiter(_this, void 0, void 0, function () {
3199
- var partialPieces, sourceHandler, _a, _b, scraper, partialPiecesUnchecked, e_1_1, pieces;
3200
- var e_1, _c;
3201
- return __generator(this, function (_d) {
3202
- switch (_d.label) {
3218
+ var partialPieces, sourceHandler, scrapers, _loop_1, scrapers_1, scrapers_1_1, scraper, state_1, e_1_1, pieces;
3219
+ var e_1, _a;
3220
+ return __generator(this, function (_b) {
3221
+ switch (_b.label) {
3203
3222
  case 0:
3204
3223
  partialPieces = null;
3205
3224
  return [4 /*yield*/, makeKnowledgeSourceHandler(knowledgeSource, tools, { rootDirname: rootDirname, isVerbose: isVerbose })];
3206
3225
  case 1:
3207
- sourceHandler = _d.sent();
3208
- _d.label = 2;
3226
+ sourceHandler = _b.sent();
3227
+ scrapers = arrayableToArray(tools.scrapers);
3228
+ _loop_1 = function (scraper) {
3229
+ var partialPiecesUnchecked;
3230
+ return __generator(this, function (_c) {
3231
+ switch (_c.label) {
3232
+ case 0:
3233
+ if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3234
+ // <- TODO: [🦔] Implement mime-type wildcards
3235
+ ) {
3236
+ return [2 /*return*/, "continue"];
3237
+ }
3238
+ return [4 /*yield*/, scraper.scrape(sourceHandler)];
3239
+ case 1:
3240
+ partialPiecesUnchecked = _c.sent();
3241
+ if (partialPiecesUnchecked !== null) {
3242
+ partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3243
+ return [2 /*return*/, "break"];
3244
+ }
3245
+ console.warn(spaceTrim$1(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
3246
+ .split('\n')
3247
+ .map(function (line) { return "> ".concat(line); })
3248
+ .join('\n')), "\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3249
+ return [2 /*return*/];
3250
+ }
3251
+ });
3252
+ };
3253
+ _b.label = 2;
3209
3254
  case 2:
3210
- _d.trys.push([2, 7, 8, 9]);
3211
- _a = __values(arrayableToArray(tools.scrapers)), _b = _a.next();
3212
- _d.label = 3;
3255
+ _b.trys.push([2, 7, 8, 9]);
3256
+ scrapers_1 = __values(scrapers), scrapers_1_1 = scrapers_1.next();
3257
+ _b.label = 3;
3213
3258
  case 3:
3214
- if (!!_b.done) return [3 /*break*/, 6];
3215
- scraper = _b.value;
3216
- if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3217
- // <- TODO: [🦔] Implement mime-type wildcards
3218
- ) {
3219
- return [3 /*break*/, 5];
3220
- }
3221
- return [4 /*yield*/, scraper.scrape(sourceHandler)];
3259
+ if (!!scrapers_1_1.done) return [3 /*break*/, 6];
3260
+ scraper = scrapers_1_1.value;
3261
+ return [5 /*yield**/, _loop_1(scraper)];
3222
3262
  case 4:
3223
- partialPiecesUnchecked = _d.sent();
3224
- if (partialPiecesUnchecked !== null) {
3225
- partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3226
- // <- TODO: [🪓] Here should be no need for spreading new array, just `partialPieces = partialPiecesUnchecked`
3263
+ state_1 = _b.sent();
3264
+ if (state_1 === "break")
3227
3265
  return [3 /*break*/, 6];
3228
- }
3229
- _d.label = 5;
3266
+ _b.label = 5;
3230
3267
  case 5:
3231
- _b = _a.next();
3268
+ scrapers_1_1 = scrapers_1.next();
3232
3269
  return [3 /*break*/, 3];
3233
3270
  case 6: return [3 /*break*/, 9];
3234
3271
  case 7:
3235
- e_1_1 = _d.sent();
3272
+ e_1_1 = _b.sent();
3236
3273
  e_1 = { error: e_1_1 };
3237
3274
  return [3 /*break*/, 9];
3238
3275
  case 8:
3239
3276
  try {
3240
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
3277
+ if (scrapers_1_1 && !scrapers_1_1.done && (_a = scrapers_1.return)) _a.call(scrapers_1);
3241
3278
  }
3242
3279
  finally { if (e_1) throw e_1.error; }
3243
3280
  return [7 /*endfinally*/];
3244
3281
  case 9:
3245
3282
  if (partialPieces === null) {
3246
- throw new KnowledgeScrapeError(spaceTrim$1(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 "); }));
3283
+ throw new KnowledgeScrapeError(spaceTrim$1(function (block) { return "\n Cannot scrape knowledge\n \n The source:\n > ".concat(block(knowledgeSource.sourceContent
3284
+ .split('\n')
3285
+ .map(function (line) { return "> ".concat(line); })
3286
+ .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3247
3287
  }
3248
3288
  pieces = partialPieces.map(function (partialPiece) { return (__assign(__assign({}, partialPiece), { sources: [
3249
3289
  {