@promptbook/core 0.50.0 → 0.51.0

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.
Files changed (45) hide show
  1. package/esm/index.es.js +123 -71
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/_packages/execute-javascript.index.d.ts +44 -1
  4. package/esm/typings/_packages/openai.index.d.ts +2 -1
  5. package/esm/typings/_packages/types.index.d.ts +3 -2
  6. package/esm/typings/_packages/utils.index.d.ts +9 -2
  7. package/esm/typings/conversion/utils/extractParametersFromPromptTemplate.d.ts +13 -0
  8. package/esm/typings/conversion/utils/extractParametersFromPromptTemplate.test.d.ts +1 -0
  9. package/esm/typings/conversion/utils/extractVariables.d.ts +4 -3
  10. package/esm/typings/execution/plugins/llm-execution-tools/openai/computeOpenaiUsage.d.ts +0 -3
  11. package/esm/typings/execution/plugins/llm-execution-tools/openai/computeUsage.d.ts +13 -0
  12. package/esm/typings/execution/plugins/llm-execution-tools/openai/computeUsage.test.d.ts +1 -0
  13. package/esm/typings/execution/plugins/llm-execution-tools/openai/models.d.ts +25 -0
  14. package/esm/typings/types/ModelRequirements.d.ts +1 -0
  15. package/esm/typings/types/PromptbookJson/PromptTemplateJson.d.ts +2 -1
  16. package/esm/typings/utils/extractParameters.d.ts +1 -3
  17. package/esm/typings/utils/sets/difference.d.ts +4 -0
  18. package/esm/typings/utils/sets/difference.test.d.ts +1 -0
  19. package/esm/typings/utils/sets/intersection.d.ts +4 -0
  20. package/esm/typings/utils/sets/intersection.test.d.ts +1 -0
  21. package/esm/typings/utils/sets/union.d.ts +4 -0
  22. package/esm/typings/utils/sets/union.test.d.ts +1 -0
  23. package/package.json +2 -2
  24. package/umd/index.umd.js +123 -71
  25. package/umd/index.umd.js.map +1 -1
  26. package/umd/typings/_packages/execute-javascript.index.d.ts +44 -1
  27. package/umd/typings/_packages/openai.index.d.ts +2 -1
  28. package/umd/typings/_packages/types.index.d.ts +3 -2
  29. package/umd/typings/_packages/utils.index.d.ts +9 -2
  30. package/umd/typings/conversion/utils/extractParametersFromPromptTemplate.d.ts +13 -0
  31. package/umd/typings/conversion/utils/extractParametersFromPromptTemplate.test.d.ts +1 -0
  32. package/umd/typings/conversion/utils/extractVariables.d.ts +4 -3
  33. package/umd/typings/execution/plugins/llm-execution-tools/openai/computeOpenaiUsage.d.ts +0 -3
  34. package/umd/typings/execution/plugins/llm-execution-tools/openai/computeUsage.d.ts +13 -0
  35. package/umd/typings/execution/plugins/llm-execution-tools/openai/computeUsage.test.d.ts +1 -0
  36. package/umd/typings/execution/plugins/llm-execution-tools/openai/models.d.ts +25 -0
  37. package/umd/typings/types/ModelRequirements.d.ts +1 -0
  38. package/umd/typings/types/PromptbookJson/PromptTemplateJson.d.ts +2 -1
  39. package/umd/typings/utils/extractParameters.d.ts +1 -3
  40. package/umd/typings/utils/sets/difference.d.ts +4 -0
  41. package/umd/typings/utils/sets/difference.test.d.ts +1 -0
  42. package/umd/typings/utils/sets/intersection.d.ts +4 -0
  43. package/umd/typings/utils/sets/intersection.test.d.ts +1 -0
  44. package/umd/typings/utils/sets/union.d.ts +4 -0
  45. package/umd/typings/utils/sets/union.test.d.ts +1 -0
package/esm/index.es.js CHANGED
@@ -141,37 +141,6 @@ var PromptbookSyntaxError = /** @class */ (function (_super) {
141
141
  */
142
142
  var SUPPORTED_SCRIPT_LANGUAGES = ['javascript', 'typescript', 'python'];
143
143
 
144
- /**
145
- * Parses the template and returns the list of all parameter names
146
- *
147
- * @param template the template with parameters in {curly} braces
148
- * @returns the list of parameter names
149
- *
150
- * @private within the library
151
- */
152
- function extractParameters(template) {
153
- var e_1, _a;
154
- var matches = template.matchAll(/{\w+}/g);
155
- var parameterNames = [];
156
- try {
157
- for (var matches_1 = __values(matches), matches_1_1 = matches_1.next(); !matches_1_1.done; matches_1_1 = matches_1.next()) {
158
- var match = matches_1_1.value;
159
- var parameterName = match[0].slice(1, -1);
160
- if (!parameterNames.includes(parameterName)) {
161
- parameterNames.push(parameterName);
162
- }
163
- }
164
- }
165
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
166
- finally {
167
- try {
168
- if (matches_1_1 && !matches_1_1.done && (_a = matches_1.return)) _a.call(matches_1);
169
- }
170
- finally { if (e_1) throw e_1.error; }
171
- }
172
- return parameterNames;
173
- }
174
-
175
144
  /**
176
145
  * Computes the deepness of the markdown structure.
177
146
  *
@@ -437,10 +406,75 @@ function removeContentComments(content) {
437
406
  return spaceTrim(content.replace(/<!--(.*?)-->/gs, ''));
438
407
  }
439
408
 
409
+ /**
410
+ * Creates a new set with all elements that are present in either set
411
+ */
412
+ function union() {
413
+ var e_1, _a, e_2, _b;
414
+ var sets = [];
415
+ for (var _i = 0; _i < arguments.length; _i++) {
416
+ sets[_i] = arguments[_i];
417
+ }
418
+ var union = new Set();
419
+ try {
420
+ for (var sets_1 = __values(sets), sets_1_1 = sets_1.next(); !sets_1_1.done; sets_1_1 = sets_1.next()) {
421
+ var set = sets_1_1.value;
422
+ try {
423
+ for (var _c = (e_2 = void 0, __values(Array.from(set))), _d = _c.next(); !_d.done; _d = _c.next()) {
424
+ var item = _d.value;
425
+ union.add(item);
426
+ }
427
+ }
428
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
429
+ finally {
430
+ try {
431
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
432
+ }
433
+ finally { if (e_2) throw e_2.error; }
434
+ }
435
+ }
436
+ }
437
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
438
+ finally {
439
+ try {
440
+ if (sets_1_1 && !sets_1_1.done && (_a = sets_1.return)) _a.call(sets_1);
441
+ }
442
+ finally { if (e_1) throw e_1.error; }
443
+ }
444
+ return union;
445
+ }
446
+
440
447
  /**
441
448
  * The version of the Promptbook library
442
449
  */
443
- var PROMPTBOOK_VERSION = '0.50.0-10';
450
+ var PROMPTBOOK_VERSION = '0.50.0-19';
451
+
452
+ /**
453
+ * Parses the template and returns the list of all parameter names
454
+ *
455
+ * @param template the template with parameters in {curly} braces
456
+ * @returns the list of parameter names
457
+ */
458
+ function extractParameters(template) {
459
+ var e_1, _a;
460
+ var matches = template.matchAll(/{\w+}/g);
461
+ var parameterNames = new Set();
462
+ try {
463
+ for (var matches_1 = __values(matches), matches_1_1 = matches_1.next(); !matches_1_1.done; matches_1_1 = matches_1.next()) {
464
+ var match = matches_1_1.value;
465
+ var parameterName = match[0].slice(1, -1);
466
+ parameterNames.add(parameterName);
467
+ }
468
+ }
469
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
470
+ finally {
471
+ try {
472
+ if (matches_1_1 && !matches_1_1.done && (_a = matches_1.return)) _a.call(matches_1);
473
+ }
474
+ finally { if (e_1) throw e_1.error; }
475
+ }
476
+ return parameterNames;
477
+ }
444
478
 
445
479
  /**
446
480
  * Parses the given script and returns the list of all used variables that are not defined in the script
@@ -448,11 +482,9 @@ var PROMPTBOOK_VERSION = '0.50.0-10';
448
482
  * @param script from which to extract the variables
449
483
  * @returns the list of variable names
450
484
  * @throws {PromptbookSyntaxError} if the script is invalid
451
- *
452
- * @private within the promptbookStringToJson
453
485
  */
454
486
  function extractVariables(script) {
455
- var variables = [];
487
+ var variables = new Set();
456
488
  script = "(()=>{".concat(script, "})()");
457
489
  try {
458
490
  for (var i = 0; i < 100 /* <- TODO: This limit to configuration */; i++)
@@ -476,7 +508,7 @@ function extractVariables(script) {
476
508
  script = "const ".concat(undefinedName, " = ()=>'';") + script;
477
509
  }
478
510
  else {
479
- variables.push(undefinedName);
511
+ variables.add(undefinedName);
480
512
  script = "const ".concat(undefinedName, " = '';") + script;
481
513
  }
482
514
  }
@@ -489,6 +521,53 @@ function extractVariables(script) {
489
521
  }
490
522
  return variables;
491
523
  }
524
+ /**
525
+ * TODO: [🔣] Support for multiple languages - python, java,...
526
+ */
527
+
528
+ /**
529
+ * Parses the prompt template and returns the set of all used parameters
530
+ *
531
+ * @param promptTemplate the template with used parameters
532
+ * @returns the set of parameter names
533
+ * @throws {PromptbookSyntaxError} if the script is invalid
534
+ */
535
+ function extractParametersFromPromptTemplate(promptTemplate) {
536
+ var e_1, _a, e_2, _b;
537
+ var parameterNames = new Set();
538
+ try {
539
+ for (var _c = __values(__spreadArray(__spreadArray(__spreadArray([], __read(extractParameters(promptTemplate.title)), false), __read(extractParameters(promptTemplate.description || '')), false), __read(extractParameters(promptTemplate.content)), false)), _d = _c.next(); !_d.done; _d = _c.next()) {
540
+ var parameterName = _d.value;
541
+ parameterNames.add(parameterName);
542
+ }
543
+ }
544
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
545
+ finally {
546
+ try {
547
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
548
+ }
549
+ finally { if (e_1) throw e_1.error; }
550
+ }
551
+ if (promptTemplate.executionType === 'SCRIPT') {
552
+ try {
553
+ for (var _e = __values(extractVariables(promptTemplate.content)), _f = _e.next(); !_f.done; _f = _e.next()) {
554
+ var parameterName = _f.value;
555
+ parameterNames.add(parameterName);
556
+ }
557
+ }
558
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
559
+ finally {
560
+ try {
561
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
562
+ }
563
+ finally { if (e_2) throw e_2.error; }
564
+ }
565
+ }
566
+ return parameterNames;
567
+ }
568
+ /**
569
+ * TODO: [🔣] If script require contentLanguage
570
+ */
492
571
 
493
572
  /**
494
573
  * Prettify the html code
@@ -1267,10 +1346,11 @@ var ExecutionTypes = [
1267
1346
  /**
1268
1347
  * Units of text measurement
1269
1348
  */
1270
- var EXPECTATION_UNITS = ['CHARACTERS', 'WORDS', 'SENTENCES', 'PARAGRAPHS', 'LINES', 'PAGES'];
1349
+ var EXPECTATION_UNITS = ['CHARACTERS', 'WORDS', 'SENTENCES', 'LINES', 'PARAGRAPHS', 'PAGES'];
1271
1350
  /**
1272
1351
  * TODO: [💝] Unite object for expecting amount and format - remove expectFormat
1273
1352
  * TODO: use one helper type> (string_prompt | string_javascript | string_markdown) & string_template
1353
+ * TODO: [👙][🧠] Just selecting gpt3 or gpt4 level of model
1274
1354
  */
1275
1355
 
1276
1356
  /**
@@ -1618,11 +1698,11 @@ function promptbookStringToJson(promptbookString) {
1618
1698
  finally { if (e_1) throw e_1.error; }
1619
1699
  }
1620
1700
  var _loop_1 = function (section) {
1621
- var e_3, _e, e_4, _f, e_5, _g;
1701
+ var e_3, _e;
1622
1702
  // TODO: Parse prompt template description (the content out of the codeblock and lists)
1623
1703
  var templateModelRequirements = __assign({}, defaultModelRequirements);
1624
1704
  var listItems_3 = extractAllListItemsFromMarkdown(section.content);
1625
- var dependentParameterNames = [];
1705
+ var dependentParameterNames = new Set();
1626
1706
  var executionType = 'PROMPT_TEMPLATE';
1627
1707
  var jokers = [];
1628
1708
  var postprocessing = [];
@@ -1636,7 +1716,7 @@ function promptbookStringToJson(promptbookString) {
1636
1716
  switch (command.type) {
1637
1717
  case 'JOKER':
1638
1718
  jokers.push(command.parameterName);
1639
- dependentParameterNames.push(command.parameterName);
1719
+ dependentParameterNames.add(command.parameterName);
1640
1720
  break;
1641
1721
  case 'EXECUTE':
1642
1722
  if (isExecutionTypeChanged) {
@@ -1690,7 +1770,7 @@ function promptbookStringToJson(promptbookString) {
1690
1770
  }
1691
1771
  finally { if (e_3) throw e_3.error; }
1692
1772
  }
1693
- var _h = extractOneBlockFromMarkdown(section.content), language = _h.language, content = _h.content;
1773
+ var _f = extractOneBlockFromMarkdown(section.content), language = _f.language, content = _f.content;
1694
1774
  if (executionType === 'SCRIPT') {
1695
1775
  if (!language) {
1696
1776
  throw new PromptbookSyntaxError('You must specify the language of the script in the prompt template');
@@ -1729,40 +1809,12 @@ function promptbookStringToJson(promptbookString) {
1729
1809
  if (Object.keys(postprocessing).length === 0) {
1730
1810
  postprocessing = undefined;
1731
1811
  }
1732
- try {
1733
- for (var _j = (e_4 = void 0, __values(__spreadArray(__spreadArray(__spreadArray([], __read(extractParameters(section.title)), false), __read(extractParameters(description_1 || '')), false), __read(extractParameters(content)), false))), _k = _j.next(); !_k.done; _k = _j.next()) {
1734
- var parameterName = _k.value;
1735
- dependentParameterNames.push(parameterName);
1736
- }
1737
- }
1738
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
1739
- finally {
1740
- try {
1741
- if (_k && !_k.done && (_f = _j.return)) _f.call(_j);
1742
- }
1743
- finally { if (e_4) throw e_4.error; }
1744
- }
1745
- if (executionType === 'SCRIPT') {
1746
- try {
1747
- for (var _l = (e_5 = void 0, __values(extractVariables(content))), _m = _l.next(); !_m.done; _m = _l.next()) {
1748
- var parameterName = _m.value;
1749
- dependentParameterNames.push(parameterName);
1750
- }
1751
- }
1752
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
1753
- finally {
1754
- try {
1755
- if (_m && !_m.done && (_g = _l.return)) _g.call(_l);
1756
- }
1757
- finally { if (e_5) throw e_5.error; }
1758
- }
1759
- }
1760
- dependentParameterNames = __spreadArray([], __read(new Set(dependentParameterNames)), false);
1812
+ dependentParameterNames = union(dependentParameterNames, extractParametersFromPromptTemplate(__assign(__assign({}, section), { description: description_1, executionType: executionType, content: content })));
1761
1813
  promptbookJson.promptTemplates.push({
1762
1814
  name: titleToName(section.title),
1763
1815
  title: section.title,
1764
1816
  description: description_1,
1765
- dependentParameterNames: dependentParameterNames,
1817
+ dependentParameterNames: Array.from(dependentParameterNames),
1766
1818
  executionType: executionType,
1767
1819
  jokers: jokers,
1768
1820
  postprocessing: postprocessing,