@promptbook/cli 0.75.3 → 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/cli",
3
- "version": "0.75.3",
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,
package/umd/index.umd.js CHANGED
@@ -49,7 +49,7 @@
49
49
  *
50
50
  * @see https://github.com/webgptorg/promptbook
51
51
  */
52
- var PROMPTBOOK_ENGINE_VERSION = '0.75.2';
52
+ var PROMPTBOOK_ENGINE_VERSION = '0.75.3';
53
53
  /**
54
54
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
55
55
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -4967,8 +4967,8 @@
4967
4967
  *
4968
4968
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
4969
4969
  */
4970
- function $registeredScrapersMessage() {
4971
- var e_1, _a, e_2, _b;
4970
+ function $registeredScrapersMessage(availableScrapers) {
4971
+ var e_1, _a, e_2, _b, e_3, _c;
4972
4972
  /**
4973
4973
  * Mixes registered scrapers from $scrapersMetadataRegister and $scrapersRegister
4974
4974
  */
@@ -4980,15 +4980,15 @@
4980
4980
  all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
4981
4981
  };
4982
4982
  try {
4983
- for (var _c = __values($scrapersMetadataRegister.list()), _d = _c.next(); !_d.done; _d = _c.next()) {
4984
- var _e = _d.value, packageName = _e.packageName, className = _e.className, mimeTypes = _e.mimeTypes, documentationUrl = _e.documentationUrl, isAvilableInBrowser = _e.isAvilableInBrowser;
4983
+ for (var _d = __values($scrapersMetadataRegister.list()), _e = _d.next(); !_e.done; _e = _d.next()) {
4984
+ var _f = _e.value, packageName = _f.packageName, className = _f.className, mimeTypes = _f.mimeTypes, documentationUrl = _f.documentationUrl, isAvilableInBrowser = _f.isAvilableInBrowser;
4985
4985
  _loop_1(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
4986
4986
  }
4987
4987
  }
4988
4988
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
4989
4989
  finally {
4990
4990
  try {
4991
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
4991
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
4992
4992
  }
4993
4993
  finally { if (e_1) throw e_1.error; }
4994
4994
  }
@@ -4999,18 +4999,31 @@
4999
4999
  all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
5000
5000
  };
5001
5001
  try {
5002
- for (var _f = __values($scrapersRegister.list()), _g = _f.next(); !_g.done; _g = _f.next()) {
5003
- var _h = _g.value, packageName = _h.packageName, className = _h.className, mimeTypes = _h.mimeTypes, documentationUrl = _h.documentationUrl, isAvilableInBrowser = _h.isAvilableInBrowser;
5002
+ for (var _g = __values($scrapersRegister.list()), _h = _g.next(); !_h.done; _h = _g.next()) {
5003
+ var _j = _h.value, packageName = _j.packageName, className = _j.className, mimeTypes = _j.mimeTypes, documentationUrl = _j.documentationUrl, isAvilableInBrowser = _j.isAvilableInBrowser;
5004
5004
  _loop_2(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
5005
5005
  }
5006
5006
  }
5007
5007
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
5008
5008
  finally {
5009
5009
  try {
5010
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
5010
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
5011
5011
  }
5012
5012
  finally { if (e_2) throw e_2.error; }
5013
5013
  }
5014
+ try {
5015
+ for (var availableScrapers_1 = __values(availableScrapers), availableScrapers_1_1 = availableScrapers_1.next(); !availableScrapers_1_1.done; availableScrapers_1_1 = availableScrapers_1.next()) {
5016
+ var metadata_1 = availableScrapers_1_1.value.metadata;
5017
+ all.push(metadata_1);
5018
+ }
5019
+ }
5020
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
5021
+ finally {
5022
+ try {
5023
+ if (availableScrapers_1_1 && !availableScrapers_1_1.done && (_c = availableScrapers_1.return)) _c.call(availableScrapers_1);
5024
+ }
5025
+ finally { if (e_3) throw e_3.error; }
5026
+ }
5014
5027
  var metadata = all.map(function (metadata) {
5015
5028
  var isMetadataAviailable = $scrapersMetadataRegister
5016
5029
  .list()
@@ -5024,42 +5037,44 @@
5024
5037
  var packageName = _a.packageName, className = _a.className;
5025
5038
  return metadata.packageName === packageName && metadata.className === className;
5026
5039
  });
5027
- return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled });
5040
+ var isAvilableInTools = availableScrapers.some(function (_a) {
5041
+ var _b = _a.metadata, packageName = _b.packageName, className = _b.className;
5042
+ return metadata.packageName === packageName && metadata.className === className;
5043
+ });
5044
+ return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled, isAvilableInTools: isAvilableInTools });
5028
5045
  });
5029
5046
  if (metadata.length === 0) {
5030
- return "No scrapers are available";
5047
+ 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 ");
5031
5048
  }
5032
5049
  return spaceTrim__default["default"](function (block) { return "\n Available scrapers are:\n ".concat(block(metadata
5033
5050
  .map(function (_a, i) {
5034
- var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser;
5035
- var more;
5036
- // TODO: Use documentationUrl
5037
- if (just(false)) {
5038
- more = '';
5039
- }
5040
- else if (!isMetadataAviailable && !isInstalled) {
5041
- // TODO: [�][�] Maybe do allow to do auto-install if package not registered and not found
5042
- more = "*(not installed and no metadata, looks like a unexpected behavior)*";
5043
- }
5044
- else if (isMetadataAviailable && !isInstalled) {
5045
- // TODO: [�][�]
5046
- more = "*(not installed)*";
5047
- }
5048
- else if (!isMetadataAviailable && isInstalled) {
5049
- more = "*(no metadata, looks like a unexpected behavior)*";
5050
- }
5051
- else if (isMetadataAviailable && isInstalled) {
5052
- more = "(installed)";
5053
- }
5054
- else {
5055
- more = "*(unknown state, looks like a unexpected behavior)*";
5056
- }
5051
+ var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser, isAvilableInTools = _a.isAvilableInTools;
5052
+ var more = [];
5053
+ // TODO: [🧠] Maybe use `documentationUrl`
5054
+ if (isMetadataAviailable) {
5055
+ more.push("\u2B1C Metadata registered");
5056
+ } // not else
5057
+ if (isInstalled) {
5058
+ more.push("\uD83D\uDFE9 Installed");
5059
+ } // not else
5060
+ if (isAvilableInTools) {
5061
+ more.push("\uD83D\uDFE6 Available in tools");
5062
+ } // not else
5063
+ if (!isMetadataAviailable && isInstalled) {
5064
+ more.push("When no metadata registered but scraper is installed, it is an unexpected behavior");
5065
+ } // not else
5066
+ if (!isInstalled && isAvilableInTools) {
5067
+ more.push("When the scraper is not installed but available in tools, it is an unexpected compatibility behavior");
5068
+ } // not else
5057
5069
  if (!isAvilableInBrowser) {
5058
- more += " *(not available in browser)*";
5070
+ more.push("Not usable in browser");
5059
5071
  }
5060
- return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes.join(', '), " ").concat(more);
5072
+ var moreText = more.length === 0 ? '' : " *(".concat(more.join('; '), ")*");
5073
+ return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes
5074
+ .map(function (mimeType) { return "\"".concat(mimeType, "\""); })
5075
+ .join(', ')).concat(moreText);
5061
5076
  })
5062
- .join('\n')), "\n "); });
5077
+ .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 "); });
5063
5078
  }
5064
5079
  /**
5065
5080
  * TODO: [®] DRY Register logic
@@ -5395,57 +5410,75 @@
5395
5410
  _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;
5396
5411
  knowledgePreparedUnflatten = new Array(knowledgeSources.length);
5397
5412
  return [4 /*yield*/, forEachAsync(knowledgeSources, { maxParallelCount: maxParallelCount }, function (knowledgeSource, index) { return __awaiter(_this, void 0, void 0, function () {
5398
- var partialPieces, sourceHandler, _a, _b, scraper, partialPiecesUnchecked, e_1_1, pieces;
5399
- var e_1, _c;
5400
- return __generator(this, function (_d) {
5401
- switch (_d.label) {
5413
+ var partialPieces, sourceHandler, scrapers, _loop_1, scrapers_1, scrapers_1_1, scraper, state_1, e_1_1, pieces;
5414
+ var e_1, _a;
5415
+ return __generator(this, function (_b) {
5416
+ switch (_b.label) {
5402
5417
  case 0:
5403
5418
  partialPieces = null;
5404
5419
  return [4 /*yield*/, makeKnowledgeSourceHandler(knowledgeSource, tools, { rootDirname: rootDirname, isVerbose: isVerbose })];
5405
5420
  case 1:
5406
- sourceHandler = _d.sent();
5407
- _d.label = 2;
5421
+ sourceHandler = _b.sent();
5422
+ scrapers = arrayableToArray(tools.scrapers);
5423
+ _loop_1 = function (scraper) {
5424
+ var partialPiecesUnchecked;
5425
+ return __generator(this, function (_c) {
5426
+ switch (_c.label) {
5427
+ case 0:
5428
+ if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
5429
+ // <- TODO: [🦔] Implement mime-type wildcards
5430
+ ) {
5431
+ return [2 /*return*/, "continue"];
5432
+ }
5433
+ return [4 /*yield*/, scraper.scrape(sourceHandler)];
5434
+ case 1:
5435
+ partialPiecesUnchecked = _c.sent();
5436
+ if (partialPiecesUnchecked !== null) {
5437
+ partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
5438
+ return [2 /*return*/, "break"];
5439
+ }
5440
+ 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
5441
+ .split('\n')
5442
+ .map(function (line) { return "> ".concat(line); })
5443
+ .join('\n')), "\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
5444
+ return [2 /*return*/];
5445
+ }
5446
+ });
5447
+ };
5448
+ _b.label = 2;
5408
5449
  case 2:
5409
- _d.trys.push([2, 7, 8, 9]);
5410
- _a = __values(arrayableToArray(tools.scrapers)), _b = _a.next();
5411
- _d.label = 3;
5450
+ _b.trys.push([2, 7, 8, 9]);
5451
+ scrapers_1 = __values(scrapers), scrapers_1_1 = scrapers_1.next();
5452
+ _b.label = 3;
5412
5453
  case 3:
5413
- if (!!_b.done) return [3 /*break*/, 6];
5414
- scraper = _b.value;
5415
- if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
5416
- // <- TODO: [🦔] Implement mime-type wildcards
5417
- ) {
5418
- return [3 /*break*/, 5];
5419
- }
5420
- return [4 /*yield*/, scraper.scrape(sourceHandler)];
5454
+ if (!!scrapers_1_1.done) return [3 /*break*/, 6];
5455
+ scraper = scrapers_1_1.value;
5456
+ return [5 /*yield**/, _loop_1(scraper)];
5421
5457
  case 4:
5422
- partialPiecesUnchecked = _d.sent();
5423
- if (partialPiecesUnchecked !== null) {
5424
- partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
5425
- // <- TODO: [🪓] Here should be no need for spreading new array, just `partialPieces = partialPiecesUnchecked`
5458
+ state_1 = _b.sent();
5459
+ if (state_1 === "break")
5426
5460
  return [3 /*break*/, 6];
5427
- }
5428
- _d.label = 5;
5461
+ _b.label = 5;
5429
5462
  case 5:
5430
- _b = _a.next();
5463
+ scrapers_1_1 = scrapers_1.next();
5431
5464
  return [3 /*break*/, 3];
5432
5465
  case 6: return [3 /*break*/, 9];
5433
5466
  case 7:
5434
- e_1_1 = _d.sent();
5467
+ e_1_1 = _b.sent();
5435
5468
  e_1 = { error: e_1_1 };
5436
5469
  return [3 /*break*/, 9];
5437
5470
  case 8:
5438
5471
  try {
5439
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
5472
+ if (scrapers_1_1 && !scrapers_1_1.done && (_a = scrapers_1.return)) _a.call(scrapers_1);
5440
5473
  }
5441
5474
  finally { if (e_1) throw e_1.error; }
5442
5475
  return [7 /*endfinally*/];
5443
5476
  case 9:
5444
5477
  if (partialPieces === null) {
5445
- throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge from source:\n \n > ".concat(block(knowledgeSource.sourceContent
5478
+ throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge\n \n The source:\n > ".concat(block(knowledgeSource.sourceContent
5446
5479
  .split('\n')
5447
5480
  .map(function (line) { return "> ".concat(line); })
5448
- .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage()), "\n\n\n "); }));
5481
+ .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
5449
5482
  }
5450
5483
  pieces = partialPieces.map(function (partialPiece) { return (__assign(__assign({}, partialPiece), { sources: [
5451
5484
  {