@promptbook/utils 0.81.0-9 → 0.81.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 (93) hide show
  1. package/README.md +26 -9
  2. package/esm/index.es.js +57 -17
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/books/index.d.ts +38 -0
  5. package/esm/typings/src/_packages/core.index.d.ts +12 -4
  6. package/esm/typings/src/_packages/markdown-utils.index.d.ts +2 -2
  7. package/esm/typings/src/_packages/node.index.d.ts +0 -2
  8. package/esm/typings/src/_packages/templates.index.d.ts +2 -2
  9. package/esm/typings/src/_packages/types.index.d.ts +2 -0
  10. package/esm/typings/src/_packages/utils.index.d.ts +2 -0
  11. package/esm/typings/src/_packages/wizzard.index.d.ts +44 -0
  12. package/esm/typings/src/cli/cli-commands/make.d.ts +1 -1
  13. package/esm/typings/src/cli/cli-commands/run.d.ts +2 -2
  14. package/esm/typings/src/collection/constructors/createCollectionFromDirectory.d.ts +11 -0
  15. package/esm/typings/src/collection/constructors/createCollectionFromUrl.d.ts +1 -1
  16. package/esm/typings/src/commands/index.d.ts +1 -1
  17. package/esm/typings/src/config.d.ts +3 -3
  18. package/esm/typings/src/conversion/compilePipeline.d.ts +1 -4
  19. package/esm/typings/src/conversion/{precompilePipeline.d.ts → parsePipeline.d.ts} +3 -3
  20. package/esm/typings/src/conversion/prettify/renderPipelineMermaidOptions.d.ts +3 -3
  21. package/esm/typings/src/conversion/validation/validatePipeline.d.ts +7 -7
  22. package/esm/typings/src/errors/utils/getErrorReportUrl.d.ts +1 -1
  23. package/esm/typings/src/formfactors/generator/GeneratorFormfactorDefinition.d.ts +9 -4
  24. package/esm/typings/src/formfactors/image-generator/ImageGeneratorFormfactorDefinition.d.ts +24 -0
  25. package/esm/typings/src/formfactors/index.d.ts +31 -9
  26. package/esm/typings/src/high-level-abstractions/_common/HighLevelAbstraction.d.ts +1 -1
  27. package/esm/typings/src/high-level-abstractions/index.d.ts +3 -3
  28. package/esm/typings/src/high-level-abstractions/quick-chatbot/QuickChatbotHla.d.ts +3 -0
  29. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsConfigurationFromEnv.d.ts +1 -1
  30. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForTestingAndScriptsAndPlayground.d.ts +1 -1
  31. package/esm/typings/src/llm-providers/_common/register/{$provideLlmToolsForCli.d.ts → $provideLlmToolsForWizzardOrCli.d.ts} +2 -2
  32. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsFromEnv.d.ts +1 -1
  33. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  34. package/esm/typings/src/llm-providers/anthropic-claude/createAnthropicClaudeExecutionTools.d.ts +2 -2
  35. package/esm/typings/src/llm-providers/anthropic-claude/playground/playground.d.ts +2 -2
  36. package/esm/typings/src/llm-providers/anthropic-claude/register-configuration.d.ts +1 -0
  37. package/esm/typings/src/llm-providers/anthropic-claude/register-constructor.d.ts +2 -0
  38. package/esm/typings/src/llm-providers/azure-openai/register-configuration.d.ts +1 -0
  39. package/esm/typings/src/llm-providers/azure-openai/register-constructor.d.ts +1 -0
  40. package/esm/typings/src/llm-providers/google/register-configuration.d.ts +1 -0
  41. package/esm/typings/src/llm-providers/google/register-constructor.d.ts +1 -0
  42. package/esm/typings/src/llm-providers/openai/playground/playground.d.ts +1 -1
  43. package/esm/typings/src/llm-providers/openai/register-configuration.d.ts +2 -0
  44. package/esm/typings/src/llm-providers/openai/register-constructor.d.ts +2 -0
  45. package/esm/typings/src/llm-providers/vercel/playground/playground.d.ts +1 -1
  46. package/esm/typings/src/other/templates/getBookTemplates.d.ts +22 -0
  47. package/esm/typings/src/personas/preparePersona.d.ts +4 -4
  48. package/esm/typings/src/pipeline/PipelineString.d.ts +0 -3
  49. package/esm/typings/src/pipeline/book-notation.d.ts +14 -0
  50. package/esm/typings/src/pipeline/isValidPipelineString.d.ts +13 -0
  51. package/esm/typings/src/pipeline/isValidPipelineString.test.d.ts +4 -0
  52. package/esm/typings/src/pipeline/validatePipelineString.d.ts +14 -0
  53. package/esm/typings/src/prepare/isPipelinePrepared.d.ts +3 -1
  54. package/esm/typings/src/prepare/preparePipeline.d.ts +2 -0
  55. package/esm/typings/src/prepare/prepareTasks.d.ts +1 -1
  56. package/esm/typings/src/scrapers/_common/Converter.d.ts +1 -0
  57. package/esm/typings/src/scrapers/_common/Scraper.d.ts +1 -1
  58. package/esm/typings/src/scrapers/_common/ScraperIntermediateSource.d.ts +3 -0
  59. package/esm/typings/src/scrapers/_common/register/ScraperAndConverterMetadata.d.ts +2 -0
  60. package/esm/typings/src/scrapers/_common/utils/scraperFetch.d.ts +3 -0
  61. package/esm/typings/src/scrapers/document/register-constructor.d.ts +1 -0
  62. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -0
  63. package/esm/typings/src/scrapers/document-legacy/register-constructor.d.ts +1 -0
  64. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -0
  65. package/esm/typings/src/scrapers/markdown/register-constructor.d.ts +1 -0
  66. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -0
  67. package/esm/typings/src/scrapers/pdf/PdfScraper.d.ts +1 -0
  68. package/esm/typings/src/scrapers/pdf/createPdfScraper.d.ts +1 -1
  69. package/esm/typings/src/scrapers/pdf/register-constructor.d.ts +1 -0
  70. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +2 -1
  71. package/esm/typings/src/scrapers/website/createWebsiteScraper.d.ts +3 -1
  72. package/esm/typings/src/scrapers/website/register-constructor.d.ts +1 -0
  73. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -0
  74. package/esm/typings/src/scripting/javascript/JavascriptEvalExecutionTools.test.d.ts +1 -1
  75. package/esm/typings/src/scripting/javascript/utils/preserve.d.ts +2 -1
  76. package/esm/typings/src/types/typeAliases.d.ts +8 -2
  77. package/esm/typings/src/utils/markdown/flattenMarkdown.d.ts +1 -1
  78. package/esm/typings/src/utils/markdown/{removeContentComments.d.ts → removeMarkdownComments.d.ts} +2 -2
  79. package/esm/typings/src/utils/organization/$sideEffect.d.ts +9 -0
  80. package/esm/typings/src/utils/serialization/checkSerializableAsJson.d.ts +1 -1
  81. package/esm/typings/src/utils/serialization/isSerializableAsJson.d.ts +2 -2
  82. package/esm/typings/src/utils/validators/filePath/isRootPath.d.ts +12 -0
  83. package/esm/typings/src/utils/validators/filePath/isRootPath.test.d.ts +4 -0
  84. package/esm/typings/src/utils/validators/filePath/isValidFilePath.d.ts +3 -0
  85. package/esm/typings/src/wizzard/$getCompiledBook.d.ts +16 -0
  86. package/esm/typings/src/wizzard/wizzard.d.ts +51 -7
  87. package/package.json +1 -1
  88. package/umd/index.umd.js +57 -16
  89. package/umd/index.umd.js.map +1 -1
  90. package/esm/typings/src/other/templates/getBookTemplate.d.ts +0 -21
  91. package/esm/typings/src/scripting/javascript/utils/unknownToString.d.ts +0 -8
  92. /package/esm/typings/src/conversion/{precompilePipeline.test.d.ts → parsePipeline.test.d.ts} +0 -0
  93. /package/esm/typings/src/utils/markdown/{removeContentComments.test.d.ts → removeMarkdownComments.test.d.ts} +0 -0
package/README.md CHANGED
@@ -23,10 +23,6 @@
23
23
 
24
24
 
25
25
 
26
- <blockquote style="color: #ff8811">
27
- <b>⚠ Warning:</b> This is a pre-release version of the library. It is not yet ready for production use. Please look at <a href="https://www.npmjs.com/package/@promptbook/core?activeTab=versions">latest stable release</a>.
28
- </blockquote>
29
-
30
26
  ## 📦 Package `@promptbook/utils`
31
27
 
32
28
  - Promptbooks are [divided into several](#-packages) packages, all are published from [single monorepo](https://github.com/webgptorg/promptbook).
@@ -56,7 +52,7 @@ Sometimes you need to postprocess the output of the LLM model, every postprocess
56
52
  - `extractBlock`
57
53
  - `extractOneBlockFromMarkdown `_<- Note: Exported from [`@promptbook/markdown-utils`](https://www.npmjs.com/package/@promptbook/markdown-utils)_
58
54
  - `prettifyPipelineString`
59
- - `removeContentComments`
55
+ - `removeMarkdownComments`
60
56
  - `removeEmojis`
61
57
  - `removeMarkdownFormatting` _<- Note: Exported from [`@promptbook/markdown-utils`](https://www.npmjs.com/package/@promptbook/markdown-utils)_
62
58
  - `removeQuotes`
@@ -247,11 +243,31 @@ Promptbook project is ecosystem of multiple projects and tools, following is a l
247
243
  </tbody>
248
244
  </table>
249
245
 
250
- Also we have a community of developers and users:
246
+ We also have a community of developers and users of **Promptbook**:
251
247
 
252
- - [Discord](https://discord.gg/x3QWNaa89N)
253
- - [Landing page](https://ptbk.io)
248
+ - [Discord community](https://discord.gg/x3QWNaa89N)
249
+ - [Landing page `ptbk.io`](https://ptbk.io)
254
250
  - [Github discussions](https://github.com/webgptorg/promptbook/discussions)
251
+ - [LinkedIn `Promptbook`](https://linkedin.com/company/promptbook)
252
+ - [Facebook `Promptbook`](https://www.facebook.com/61560776453536)
253
+
254
+ And **Promptbook.studio** branded socials:
255
+
256
+ - [Instagram `@promptbook.studio`](https://www.instagram.com/promptbook.studio/)
257
+
258
+ And **Promptujeme** sub-brand:
259
+
260
+ _/Subbrand for Czech clients/_
261
+
262
+ - [Promptujeme.cz](https://www.promptujeme.cz/)
263
+ - [Facebook `Promptujeme`](https://www.facebook.com/promptujeme/)
264
+
265
+ And **Promptbook.city** branded socials:
266
+
267
+ _/Sub-brand for images and graphics generated via Promptbook prompting/_
268
+
269
+ - [Instagram `@promptbook.city`](https://www.instagram.com/promptbook.city/)
270
+ - [Facebook `Promptbook City`](https://www.facebook.com/61565718625569)
255
271
 
256
272
 
257
273
 
@@ -352,6 +368,7 @@ Or you can install them separately:
352
368
 
353
369
  - ⭐ **[ptbk](https://www.npmjs.com/package/ptbk)** - Bundle of all packages, when you want to install everything and you don't care about the size
354
370
  - **[promptbook](https://www.npmjs.com/package/promptbook)** - Same as `ptbk`
371
+ - ⭐🧙‍♂️ **[@promptbook/wizzard](https://www.npmjs.com/package/@promptbook/wizzard)** - Wizzard to just run the books in node without any struggle
355
372
  - **[@promptbook/core](https://www.npmjs.com/package/@promptbook/core)** - Core of the library, it contains the main logic for promptbooks
356
373
  - **[@promptbook/node](https://www.npmjs.com/package/@promptbook/node)** - Core of the library for Node.js environment
357
374
  - **[@promptbook/browser](https://www.npmjs.com/package/@promptbook/browser)** - Core of the library for browser environment
@@ -375,7 +392,7 @@ Or you can install them separately:
375
392
  - **[@promptbook/editable](https://www.npmjs.com/package/@promptbook/editable)** - Editable book as native javascript object with imperative object API
376
393
  - **[@promptbook/templates](https://www.npmjs.com/package/@promptbook/templates)** - Usefull templates and examples of books which can be used as a starting point
377
394
  - **[@promptbook/types](https://www.npmjs.com/package/@promptbook/types)** - Just typescript types used in the library
378
- - **[@promptbook/cli](https://www.npmjs.com/package/@promptbook/cli)** - Command line interface utilities for promptbooks
395
+ - **[@promptbook/cli](https://www.npmjs.com/package/@promptbook/cli)** - Command line interface utilities for promptbooks
379
396
 
380
397
 
381
398
 
package/esm/index.es.js CHANGED
@@ -15,7 +15,7 @@ var BOOK_LANGUAGE_VERSION = '1.0.0';
15
15
  * @generated
16
16
  * @see https://github.com/webgptorg/promptbook
17
17
  */
18
- var PROMPTBOOK_ENGINE_VERSION = '0.81.0-8';
18
+ var PROMPTBOOK_ENGINE_VERSION = '0.81.0-24';
19
19
  /**
20
20
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
21
21
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -207,7 +207,7 @@ function __spreadArray(to, from, pack) {
207
207
  /**
208
208
  * Make error report URL for the given error
209
209
  *
210
- * @private !!!!!!
210
+ * @private private within the repository
211
211
  */
212
212
  function getErrorReportUrl(error) {
213
213
  var report = {
@@ -328,21 +328,44 @@ function isValidFilePath(filename) {
328
328
  if (typeof filename !== 'string') {
329
329
  return false;
330
330
  }
331
+ if (filename.split('\n').length > 1) {
332
+ return false;
333
+ }
334
+ if (filename.split(' ').length >
335
+ 5 /* <- TODO: [🧠][🈷] Make some better non-arbitrary way how to distinct filenames from informational texts */) {
336
+ return false;
337
+ }
331
338
  var filenameSlashes = filename.split('\\').join('/');
332
339
  // Absolute Unix path: /hello.txt
333
340
  if (/^(\/)/i.test(filenameSlashes)) {
341
+ // console.log(filename, 'Absolute Unix path: /hello.txt');
334
342
  return true;
335
343
  }
336
344
  // Absolute Windows path: /hello.txt
337
345
  if (/^([A-Z]{1,2}:\/?)\//i.test(filenameSlashes)) {
346
+ // console.log(filename, 'Absolute Windows path: /hello.txt');
338
347
  return true;
339
348
  }
340
349
  // Relative path: ./hello.txt
341
350
  if (/^(\.\.?\/)+/i.test(filenameSlashes)) {
351
+ // console.log(filename, 'Relative path: ./hello.txt');
352
+ return true;
353
+ }
354
+ // Allow paths like foo/hello
355
+ if (/^[^/]+\/[^/]+/i.test(filenameSlashes)) {
356
+ // console.log(filename, 'Allow paths like foo/hello');
357
+ return true;
358
+ }
359
+ // Allow paths like hello.book
360
+ if (/^[^/]+\.[^/]+$/i.test(filenameSlashes)) {
361
+ // console.log(filename, 'Allow paths like hello.book');
342
362
  return true;
343
363
  }
344
364
  return false;
345
365
  }
366
+ /**
367
+ * TODO: [🍏] Implement for MacOs
368
+ */
346
369
 
347
370
  /**
348
371
  * Tests if given string is valid URL.
@@ -733,7 +756,7 @@ function renderPromptbookMermaid(pipelineJson, options) {
733
756
  var parameter = pipelineJson.parameters.find(function (parameter) { return parameter.name === parameterName; });
734
757
  if (!parameter) {
735
758
  throw new UnexpectedError("Could not find {".concat(parameterName, "}"));
736
- // <- TODO: !!!!!! This causes problems when {knowledge} and other reserved parameters are used
759
+ // <- TODO: !!6 This causes problems when {knowledge} and other reserved parameters are used
737
760
  }
738
761
  if (parameter.isInput) {
739
762
  return 'input';
@@ -777,9 +800,9 @@ function renderPromptbookMermaid(pipelineJson, options) {
777
800
  return promptbookMermaid;
778
801
  }
779
802
  /**
780
- * TODO: [🧠] !! FOREACH in mermaid graph
781
- * TODO: [🧠] !! Knowledge in mermaid graph
782
- * TODO: [🧠] !! Personas in mermaid graph
803
+ * TODO: [🧠] FOREACH in mermaid graph
804
+ * TODO: [🧠] Knowledge in mermaid graph
805
+ * TODO: [🧠] Personas in mermaid graph
783
806
  * TODO: Maybe use some Mermaid package instead of string templating
784
807
  * TODO: [🕌] When more than 2 functionalities, split into separate functions
785
808
  */
@@ -857,7 +880,7 @@ function extractVariablesFromScript(script) {
857
880
  if (!(error instanceof Error)) {
858
881
  throw error;
859
882
  }
860
- throw new ParseError(spaceTrim$2(function (block) { return "\n Can not extract variables from the script\n\n ".concat(block(error.toString()), "}\n\n\n Found variables:\n\n ").concat(Array.from(variables)
883
+ throw new ParseError(spaceTrim$2(function (block) { return "\n Can not extract variables from the script\n ".concat(block(error.stack || error.message), "\n\n Found variables:\n ").concat(Array.from(variables)
861
884
  .map(function (variableName, i) { return "".concat(i + 1, ") ").concat(variableName); })
862
885
  .join('\n'), "\n\n\n The script:\n\n ```javascript\n ").concat(block(originalScript), "\n ```\n "); }));
863
886
  }
@@ -1881,7 +1904,7 @@ function checkSerializableAsJson(options) {
1881
1904
  if (!(error instanceof Error)) {
1882
1905
  throw error;
1883
1906
  }
1884
- throw new UnexpectedError(spaceTrim$1(function (block) { return "\n `".concat(name, "` is not serializable\n\n ").concat(block(error.toString()), "\n\n Additional message for `").concat(name, "`:\n ").concat(block(message || '(nothing)'), "\n "); }));
1907
+ throw new UnexpectedError(spaceTrim$1(function (block) { return "\n `".concat(name, "` is not serializable\n\n ").concat(block(error.stack || error.message), "\n\n Additional message for `").concat(name, "`:\n ").concat(block(message || '(nothing)'), "\n "); }));
1885
1908
  }
1886
1909
  /*
1887
1910
  TODO: [0] Is there some more elegant way to check circular references?
@@ -1911,7 +1934,7 @@ function checkSerializableAsJson(options) {
1911
1934
  }
1912
1935
  /**
1913
1936
  * TODO: Can be return type more type-safe? like `asserts options.value is JsonValue`
1914
- * TODO: [🧠][main] !!! In-memory cache of same values to prevent multiple checks
1937
+ * TODO: [🧠][main] !!3 In-memory cache of same values to prevent multiple checks
1915
1938
  * Note: [🐠] This is how `checkSerializableAsJson` + `isSerializableAsJson` together can just retun true/false or rich error message
1916
1939
  */
1917
1940
 
@@ -1923,7 +1946,6 @@ function checkSerializableAsJson(options) {
1923
1946
  function deepClone(objectValue) {
1924
1947
  return JSON.parse(JSON.stringify(objectValue));
1925
1948
  /*
1926
- !!!!!!!!
1927
1949
  TODO: [🧠] Is there a better implementation?
1928
1950
  > const propertyNames = Object.getOwnPropertyNames(objectValue);
1929
1951
  > for (const propertyName of propertyNames) {
@@ -2118,6 +2140,8 @@ function templateParameters(template, parameters) {
2118
2140
  throw new PipelineExecutionError("Parameter `{".concat(parameterName, "}` is not defined"));
2119
2141
  }
2120
2142
  parameterValue = valueToString(parameterValue);
2143
+ // Escape curly braces in parameter values to prevent prompt-injection
2144
+ parameterValue = parameterValue.replace(/[{}]/g, '\\$&');
2121
2145
  if (parameterValue.includes('\n') && /^\s*\W{0,3}\s*$/.test(precol)) {
2122
2146
  parameterValue = parameterValue
2123
2147
  .split('\n')
@@ -2277,7 +2301,7 @@ function clonePipeline(pipeline) {
2277
2301
  * TODO: [🍙] Make some standard order of json properties
2278
2302
  */
2279
2303
 
2280
- // <- TODO: !!!!!!! Auto convert to type `import { ... } from 'type-fest';`
2304
+ // <- TODO: Auto convert to type `import { ... } from 'type-fest';`
2281
2305
  /**
2282
2306
  * Tests if the value is [🚉] serializable as JSON
2283
2307
  *
@@ -2307,7 +2331,7 @@ function isSerializableAsJson(value) {
2307
2331
  }
2308
2332
  }
2309
2333
  /**
2310
- * TODO: [🧠][main] !!! In-memory cache of same values to prevent multiple checks
2334
+ * TODO: [🧠][main] !!3 In-memory cache of same values to prevent multiple checks
2311
2335
  * TODO: [🧠][💺] Can be done this on type-level?
2312
2336
  */
2313
2337
 
@@ -2544,6 +2568,25 @@ function isValidEmail(email) {
2544
2568
  return /^.+@.+\..+$/.test(email);
2545
2569
  }
2546
2570
 
2571
+ /**
2572
+ * Determines if the given path is a root path.
2573
+ *
2574
+ * Note: This does not check if the file exists only if the path is valid
2575
+ * @public exported from `@promptbook/utils`
2576
+ */
2577
+ function isRootPath(value) {
2578
+ if (value === '/') {
2579
+ return true;
2580
+ }
2581
+ if (/^[A-Z]:\\$/i.test(value)) {
2582
+ return true;
2583
+ }
2584
+ return false;
2585
+ }
2586
+ /**
2587
+ * TODO: [🍏] Make for MacOS paths
2588
+ */
2589
+
2547
2590
  /**
2548
2591
  * @@@
2549
2592
  *
@@ -2596,7 +2639,7 @@ function isValidPromptbookVersion(version) {
2596
2639
  if ( /* version === '1.0.0' || */version === '2.0.0' || version === '3.0.0') {
2597
2640
  return false;
2598
2641
  }
2599
- // <- TODO: [main] !!! Check isValidPromptbookVersion against PROMPTBOOK_ENGINE_VERSIONS
2642
+ // <- TODO: [main] !!3 Check isValidPromptbookVersion against PROMPTBOOK_ENGINE_VERSIONS
2600
2643
  return true;
2601
2644
  }
2602
2645
 
@@ -2667,9 +2710,6 @@ function isValidPipelineUrl(url) {
2667
2710
  if (!url.startsWith('https://')) {
2668
2711
  return false;
2669
2712
  }
2670
- if (!(url.endsWith('.book.md') || url.endsWith('.book') || url.endsWith('.book.md') || url.endsWith('.ptbk'))) {
2671
- return false;
2672
- }
2673
2713
  if (url.includes('#')) {
2674
2714
  // TODO: [🐠]
2675
2715
  return false;
@@ -2695,5 +2735,5 @@ function isValidUuid(value) {
2695
2735
  return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i.test(value);
2696
2736
  }
2697
2737
 
2698
- export { $deepFreeze, $getCurrentDate, $isRunningInBrowser, $isRunningInJest, $isRunningInNode, $isRunningInWebWorker, $randomSeed, BOOK_LANGUAGE_VERSION, CHARACTERS_PER_STANDARD_LINE, CountUtils, DIACRITIC_VARIANTS_LETTERS, LINES_PER_STANDARD_PAGE, PROMPTBOOK_ENGINE_VERSION, SMALL_NUMBER, VALUE_STRINGS, capitalize, checkSerializableAsJson, clonePipeline, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, decapitalize, deepClone, deserializeError, difference, exportJson, extractParameterNames, extractVariablesFromScript, forEachAsync, intersection, isHostnameOnPrivateNetwork, isSerializableAsJson, isUrlOnPrivateNetwork, isValidEmail, isValidFilePath, isValidJavascriptName, isValidJsonString, isValidKeyword, isValidPipelineUrl, isValidPromptbookVersion, isValidSemanticVersion, isValidUrl, isValidUuid, nameToUriPart, nameToUriParts, normalizeToKebabCase, normalizeTo_PascalCase, normalizeTo_SCREAMING_CASE, normalizeTo_camelCase, normalizeTo_snake_case, normalizeWhitespaces, numberToString, orderJson, parseKeywords, parseKeywordsFromString, parseNumber, removeDiacritics, removeEmojis, removeQuotes, renderPromptbookMermaid, searchKeywords, serializeError, spaceTrim, splitIntoSentences, templateParameters, titleToName, trimCodeBlock, trimEndOfCodeBlock, union, unwrapResult, valueToString };
2738
+ export { $deepFreeze, $getCurrentDate, $isRunningInBrowser, $isRunningInJest, $isRunningInNode, $isRunningInWebWorker, $randomSeed, BOOK_LANGUAGE_VERSION, CHARACTERS_PER_STANDARD_LINE, CountUtils, DIACRITIC_VARIANTS_LETTERS, LINES_PER_STANDARD_PAGE, PROMPTBOOK_ENGINE_VERSION, SMALL_NUMBER, VALUE_STRINGS, capitalize, checkSerializableAsJson, clonePipeline, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, decapitalize, deepClone, deserializeError, difference, exportJson, extractParameterNames, extractVariablesFromScript, forEachAsync, intersection, isHostnameOnPrivateNetwork, isRootPath, isSerializableAsJson, isUrlOnPrivateNetwork, isValidEmail, isValidFilePath, isValidJavascriptName, isValidJsonString, isValidKeyword, isValidPipelineUrl, isValidPromptbookVersion, isValidSemanticVersion, isValidUrl, isValidUuid, nameToUriPart, nameToUriParts, normalizeToKebabCase, normalizeTo_PascalCase, normalizeTo_SCREAMING_CASE, normalizeTo_camelCase, normalizeTo_snake_case, normalizeWhitespaces, numberToString, orderJson, parseKeywords, parseKeywordsFromString, parseNumber, removeDiacritics, removeEmojis, removeQuotes, renderPromptbookMermaid, searchKeywords, serializeError, spaceTrim, splitIntoSentences, templateParameters, titleToName, trimCodeBlock, trimEndOfCodeBlock, union, unwrapResult, valueToString };
2699
2739
  //# sourceMappingURL=index.es.js.map