@promptbook/core 0.74.0-8 → 0.74.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 (36) hide show
  1. package/README.md +3 -15
  2. package/esm/index.es.js +130 -56
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +5 -1
  5. package/esm/typings/src/_packages/utils.index.d.ts +4 -0
  6. package/esm/typings/src/cli/cli-commands/run.d.ts +1 -1
  7. package/esm/typings/src/cli/main.d.ts +4 -1
  8. package/esm/typings/src/cli/promptbookCli.d.ts +1 -1
  9. package/esm/typings/src/cli/test/ptbk.d.ts +1 -1
  10. package/esm/typings/src/collection/collectionToJson.test.d.ts +1 -1
  11. package/esm/typings/src/collection/constructors/createCollectionFromDirectory.d.ts +1 -1
  12. package/esm/typings/src/commands/BOOK_VERSION/BookVersionCommand.d.ts +1 -1
  13. package/esm/typings/src/commands/FOREACH/foreachCommandParser.d.ts +2 -2
  14. package/esm/typings/src/commands/_BOILERPLATE/boilerplateCommandParser.d.ts +1 -1
  15. package/esm/typings/src/config.d.ts +6 -0
  16. package/esm/typings/src/conversion/pipelineJsonToString.d.ts +3 -3
  17. package/esm/typings/src/conversion/pipelineStringToJson.d.ts +2 -2
  18. package/esm/typings/src/conversion/pipelineStringToJsonSync.d.ts +2 -2
  19. package/esm/typings/src/conversion/utils/stringifyPipelineJson.d.ts +1 -1
  20. package/esm/typings/src/conversion/validation/_importPipeline.d.ts +7 -7
  21. package/esm/typings/src/formats/_common/FormatDefinition.d.ts +1 -1
  22. package/esm/typings/src/formats/_common/FormatSubvalueDefinition.d.ts +1 -1
  23. package/esm/typings/src/storage/blackhole/BlackholeStorage.d.ts +33 -0
  24. package/esm/typings/src/storage/memory/MemoryStorage.d.ts +1 -1
  25. package/esm/typings/src/storage/{memory/utils → utils}/PrefixStorage.d.ts +1 -1
  26. package/esm/typings/src/types/PipelineJson/PipelineJson.d.ts +6 -4
  27. package/esm/typings/src/types/PipelineJson/PreparationJson.d.ts +1 -1
  28. package/esm/typings/src/types/Prompt.d.ts +1 -1
  29. package/esm/typings/src/types/typeAliases.d.ts +2 -2
  30. package/esm/typings/src/utils/expectation-counters/config.d.ts +12 -0
  31. package/esm/typings/src/utils/expectation-counters/countLines.d.ts +2 -0
  32. package/esm/typings/src/utils/expectation-counters/countPages.d.ts +2 -0
  33. package/package.json +1 -1
  34. package/umd/index.umd.js +131 -55
  35. package/umd/index.umd.js.map +1 -1
  36. /package/esm/typings/src/storage/{memory → local-storage}/utils/makePromptbookStorageFromWebStorage.d.ts +0 -0
package/README.md CHANGED
@@ -18,16 +18,13 @@ Build responsible, controlled and transparent applications on top of LLM models!
18
18
 
19
19
  ## ✨ New Features
20
20
 
21
- - 💙 Working on [the **Book** language v1](https://github.com/webgptorg/book)
21
+ - 💙 Working [the **Book** language v1.0.0](https://github.com/webgptorg/book)
22
+ - 🖤 Run books from CLI - `npx ptbk run path/to/your/book`
22
23
  - 📚 Support of `.docx`, `.doc` and `.pdf` documents
23
24
  - ✨ **Support of [OpenAI o1 model](https://openai.com/o1/)**
24
25
 
25
26
 
26
27
 
27
- <blockquote style="color: #ff8811">
28
- <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>.
29
- </blockquote>
30
-
31
28
  ## 📦 Package `@promptbook/core`
32
29
 
33
30
  - Promptbooks are [divided into several](#-packages) packages, all are published from [single monorepo](https://github.com/webgptorg/promptbook).
@@ -152,7 +149,7 @@ Following is the documentation and blueprint of the Book language.
152
149
 
153
150
  File is designed to be easy to read and write. It is strict subset of markdown. It is designed to be understandable by both humans and machines and without specific knowledge of the language.
154
151
 
155
- It has file with `.ptbk.md` or `.book` extension with `UTF-8` non BOM encoding.
152
+ It has file with `.book.md` or `.book` extension with `UTF-8` non BOM encoding.
156
153
 
157
154
  As it is source code, it can leverage all the features of version control systems like git and does not suffer from the problems of binary formats, proprietary formats, or no-code solutions.
158
155
 
@@ -245,11 +242,6 @@ Or you can install them separately:
245
242
 
246
243
  ## 📚 Dictionary
247
244
 
248
-
249
-
250
-
251
-
252
-
253
245
  ### 📚 Dictionary
254
246
 
255
247
  The following glossary is used to clarify certain concepts:
@@ -265,8 +257,6 @@ The following glossary is used to clarify certain concepts:
265
257
  - **Retrieval-augmented generation** is a machine learning paradigm where a model generates text by retrieving relevant information from a large database of text. This approach combines the benefits of generative models and retrieval models.
266
258
  - **Longtail** refers to non-common or rare events, items, or entities that are not well-represented in the training data of machine learning models. Longtail items are often challenging for models to predict accurately.
267
259
 
268
-
269
-
270
260
  _Note: Thos section is not complete dictionary, more list of general AI / LLM terms that has connection with Promptbook_
271
261
 
272
262
  #### Promptbook core
@@ -327,8 +317,6 @@ _Note: Thos section is not complete dictionary, more list of general AI / LLM te
327
317
  - [👮 Agent adversary expectations](https://github.com/webgptorg/promptbook/discussions/39)
328
318
  - [view more](https://github.com/webgptorg/promptbook/discussions/categories/concepts)
329
319
 
330
-
331
-
332
320
  ### Terms specific to Promptbook TypeScript implementation
333
321
 
334
322
  - Anonymous mode
package/esm/index.es.js CHANGED
@@ -22,7 +22,7 @@ var BOOK_LANGUAGE_VERSION = '1.0.0';
22
22
  *
23
23
  * @see https://github.com/webgptorg/promptbook
24
24
  */
25
- var PROMPTBOOK_ENGINE_VERSION = '0.74.0-7';
25
+ var PROMPTBOOK_ENGINE_VERSION = '0.74.0-13';
26
26
  /**
27
27
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
28
28
  */
@@ -219,13 +219,13 @@ function capitalize(word) {
219
219
  /**
220
220
  * Converts promptbook in JSON format to string format
221
221
  *
222
- * @param pipelineJson Promptbook in JSON format (.ptbk.json)
223
- * @returns Promptbook in string format (.ptbk.md)
222
+ * @param pipelineJson Promptbook in JSON format (.book.json)
223
+ * @returns Promptbook in string format (.book.md)
224
224
  * @public exported from `@promptbook/core`
225
225
  */
226
226
  function pipelineJsonToString(pipelineJson) {
227
227
  var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f;
228
- var title = pipelineJson.title, pipelineUrl = pipelineJson.pipelineUrl, promptbookVersion = pipelineJson.promptbookVersion, description = pipelineJson.description, parameters = pipelineJson.parameters, templates = pipelineJson.templates;
228
+ var title = pipelineJson.title, pipelineUrl = pipelineJson.pipelineUrl, bookVersion = pipelineJson.bookVersion, description = pipelineJson.description, parameters = pipelineJson.parameters, templates = pipelineJson.templates;
229
229
  var pipelineString = "# ".concat(title);
230
230
  if (description) {
231
231
  pipelineString += '\n\n';
@@ -235,8 +235,10 @@ function pipelineJsonToString(pipelineJson) {
235
235
  if (pipelineUrl) {
236
236
  commands.push("PIPELINE URL ".concat(pipelineUrl));
237
237
  }
238
- commands.push("PROMPTBOOK VERSION ".concat(promptbookVersion));
239
- // TODO: [main] !!! This increase size of the bundle and is probbably not necessary
238
+ if (bookVersion !== "undefined") {
239
+ commands.push("BOOK VERSION ".concat(bookVersion));
240
+ }
241
+ // TODO: [main] !!!!! This increases size of the bundle and is probbably not necessary
240
242
  pipelineString = prettifyMarkdown(pipelineString);
241
243
  try {
242
244
  for (var _g = __values(parameters.filter(function (_a) {
@@ -416,7 +418,7 @@ function templateParameterJsonToString(templateParameterJson) {
416
418
  * TODO: [🧠] Is there a way to auto-detect missing features in pipelineJsonToString
417
419
  * TODO: [🏛] Maybe make some markdown builder
418
420
  * TODO: [🏛] Escape all
419
- * TODO: [🧠] Should be in generated .ptbk.md file GENERATOR_WARNING
421
+ * TODO: [🧠] Should be in generated .book.md file GENERATOR_WARNING
420
422
  */
421
423
 
422
424
  /**
@@ -646,6 +648,13 @@ var GENERATOR_WARNING = "\u26A0\uFE0F WARNING: This code has been generated so t
646
648
  * @public exported from `@promptbook/core`
647
649
  */
648
650
  var CLAIM = "Build responsible, controlled and transparent applications on top of LLM models!";
651
+ // <- TODO: [🐊] Pick the best claim
652
+ /**
653
+ * When the title is not provided, the default title is used
654
+ *
655
+ * @public exported from `@promptbook/core`
656
+ */
657
+ var DEFAULT_TITLE = "Untitled";
649
658
  // <- TODO: [🧠] Better system for generator warnings - not always "code" and "by `@promptbook/cli`"
650
659
  /**
651
660
  * The maximum number of iterations for a loops
@@ -985,7 +994,7 @@ function isValidPipelineUrl(url) {
985
994
  if (!url.startsWith('https://')) {
986
995
  return false;
987
996
  }
988
- if (!(url.endsWith('.book.md') || url.endsWith('.book') || url.endsWith('.ptbk.md') || url.endsWith('.ptbk'))) {
997
+ if (!(url.endsWith('.book.md') || url.endsWith('.book') || url.endsWith('.book.md') || url.endsWith('.ptbk'))) {
989
998
  return false;
990
999
  }
991
1000
  if (url.includes('#')) {
@@ -1054,9 +1063,9 @@ function validatePipelineCore(pipeline) {
1054
1063
  // <- Note: [🚲]
1055
1064
  throw new PipelineLogicError(spaceTrim$1(function (block) { return "\n Invalid promptbook URL \"".concat(pipeline.pipelineUrl, "\"\n\n ").concat(block(pipelineIdentification), "\n "); }));
1056
1065
  }
1057
- if (pipeline.promptbookVersion !== undefined && !isValidPromptbookVersion(pipeline.promptbookVersion)) {
1066
+ if (pipeline.bookVersion !== undefined && !isValidPromptbookVersion(pipeline.bookVersion)) {
1058
1067
  // <- Note: [🚲]
1059
- throw new PipelineLogicError(spaceTrim$1(function (block) { return "\n Invalid Promptbook Version \"".concat(pipeline.promptbookVersion, "\"\n\n ").concat(block(pipelineIdentification), "\n "); }));
1068
+ throw new PipelineLogicError(spaceTrim$1(function (block) { return "\n Invalid Promptbook Version \"".concat(pipeline.bookVersion, "\"\n\n ").concat(block(pipelineIdentification), "\n "); }));
1060
1069
  }
1061
1070
  // TODO: [🧠] Maybe do here some propper JSON-schema / ZOD checking
1062
1071
  if (!Array.isArray(pipeline.parameters)) {
@@ -2303,7 +2312,7 @@ function joinLlmExecutionTools() {
2303
2312
  * TODO: [👷‍♂️] @@@ Manual about construction of llmTools
2304
2313
  */
2305
2314
 
2306
- var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.ptbk.md",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-from-markdown.ptbk.md"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.ptbk.md",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-keywords.ptbk.md"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.ptbk.md",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Title should be concise and clear\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-title.ptbk.md"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.ptbk.md",parameters:[{name:"availableModelNames",description:"List of available model names separated by comma (,)",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"make-model-requirements",title:"Make modelRequirements",content:"You are experienced AI engineer, you need to create virtual assistant.\nWrite\n\n## Example\n\n```json\n{\n\"modelName\": \"gpt-4o\",\n\"systemMessage\": \"You are experienced AI engineer and helpfull assistant.\",\n\"temperature\": 0.7\n}\n```\n\n## Instructions\n\n- Your output format is JSON object\n- Write just the JSON object, no other text should be present\n- It contains the following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nPick from the following models:\n\n- {availableModelNames}\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelRequirements",format:"JSON",dependentParameterNames:["availableModelNames","personaDescription"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-persona.ptbk.md"}];
2315
+ var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book.md",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-from-markdown.book.md"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.book.md",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-keywords.book.md"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.book.md",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Title should be concise and clear\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-knowledge-title.book.md"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.book.md",parameters:[{name:"availableModelNames",description:"List of available model names separated by comma (,)",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],templates:[{templateType:"PROMPT_TEMPLATE",name:"make-model-requirements",title:"Make modelRequirements",content:"You are experienced AI engineer, you need to create virtual assistant.\nWrite\n\n## Example\n\n```json\n{\n\"modelName\": \"gpt-4o\",\n\"systemMessage\": \"You are experienced AI engineer and helpfull assistant.\",\n\"temperature\": 0.7\n}\n```\n\n## Instructions\n\n- Your output format is JSON object\n- Write just the JSON object, no other text should be present\n- It contains the following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nPick from the following models:\n\n- {availableModelNames}\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelRequirements",format:"JSON",dependentParameterNames:["availableModelNames","personaDescription"]}],knowledgeSources:[],knowledgePieces:[],personas:[],preparations:[],sourceFile:"./promptbook-collection/prepare-persona.book.md"}];
2307
2316
 
2308
2317
  /**
2309
2318
  * This error indicates that the pipeline collection cannot be propperly loaded
@@ -3306,30 +3315,42 @@ function countCharacters(text) {
3306
3315
  return text.length;
3307
3316
  }
3308
3317
 
3318
+ /**
3319
+ * Number of characters per standard line with 11pt Arial font size.
3320
+ *
3321
+ * @public exported from `@promptbook/utils`
3322
+ */
3323
+ var CHARACTERS_PER_STANDARD_LINE = 63;
3324
+ /**
3325
+ * Number of lines per standard A4 page with 11pt Arial font size and standard margins and spacing.
3326
+ *
3327
+ * @public exported from `@promptbook/utils`
3328
+ */
3329
+ var LINES_PER_STANDARD_PAGE = 44;
3330
+
3309
3331
  /**
3310
3332
  * Counts number of lines in the text
3311
3333
  *
3334
+ * Note: This does not check only for the presence of newlines, but also for the length of the standard line.
3335
+ *
3312
3336
  * @public exported from `@promptbook/utils`
3313
3337
  */
3314
3338
  function countLines(text) {
3315
- if (text === '') {
3316
- return 0;
3317
- }
3318
- return text.split('\n').length;
3339
+ text = text.replace('\r\n', '\n');
3340
+ text = text.replace('\r', '\n');
3341
+ var lines = text.split('\n');
3342
+ return lines.reduce(function (count, line) { return count + Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE); }, 0);
3319
3343
  }
3320
3344
 
3321
3345
  /**
3322
3346
  * Counts number of pages in the text
3323
3347
  *
3348
+ * Note: This does not check only for the count of newlines, but also for the length of the standard line and length of the standard page.
3349
+ *
3324
3350
  * @public exported from `@promptbook/utils`
3325
3351
  */
3326
3352
  function countPages(text) {
3327
- if (text === '') {
3328
- return 0;
3329
- }
3330
- var pagesByLinesCount = Math.ceil(countLines(text) / 44);
3331
- var pagesByCharactersCount = Math.ceil(countCharacters(text) / 2772);
3332
- return Math.max(pagesByLinesCount, pagesByCharactersCount);
3353
+ return Math.ceil(countLines(text) / LINES_PER_STANDARD_PAGE);
3333
3354
  }
3334
3355
 
3335
3356
  /**
@@ -3892,7 +3913,7 @@ function executeAttempts(options) {
3892
3913
  promptTitle: template.title,
3893
3914
  promptMessage: replaceParameters(template.description || '', parameters),
3894
3915
  defaultValue: replaceParameters(preparedContent, parameters),
3895
- // TODO: [🧠] !! Figure out how to define placeholder in .ptbk.md file
3916
+ // TODO: [🧠] !! Figure out how to define placeholder in .book.md file
3896
3917
  placeholder: undefined,
3897
3918
  priority: priority,
3898
3919
  }))];
@@ -4458,7 +4479,7 @@ function executePipeline(options) {
4458
4479
  pipelineUrl: preparedPipeline.pipelineUrl,
4459
4480
  title: preparedPipeline.title,
4460
4481
  promptbookUsedVersion: PROMPTBOOK_ENGINE_VERSION,
4461
- promptbookRequestedVersion: preparedPipeline.promptbookVersion,
4482
+ promptbookRequestedVersion: preparedPipeline.bookVersion,
4462
4483
  description: preparedPipeline.description,
4463
4484
  promptExecutions: [],
4464
4485
  };
@@ -4807,7 +4828,7 @@ function preparePersona(personaDescription, tools, options) {
4807
4828
  collection = createCollectionFromJson.apply(void 0, __spreadArray([], __read(PipelineCollection), false));
4808
4829
  _b = createPipelineExecutor;
4809
4830
  _c = {};
4810
- return [4 /*yield*/, collection.getPipelineByUrl('https://promptbook.studio/promptbook/prepare-persona.ptbk.md')];
4831
+ return [4 /*yield*/, collection.getPipelineByUrl('https://promptbook.studio/promptbook/prepare-persona.book.md')];
4811
4832
  case 1:
4812
4833
  preparePersonaExecutor = _b.apply(void 0, [(_c.pipeline = _d.sent(),
4813
4834
  _c.tools = tools,
@@ -5564,12 +5585,12 @@ TODO: [🧊] This is how it can look in future
5564
5585
  */
5565
5586
  function clonePipeline(pipeline) {
5566
5587
  // Note: Not using spread operator (...) because @@@
5567
- var pipelineUrl = pipeline.pipelineUrl, sourceFile = pipeline.sourceFile, title = pipeline.title, promptbookVersion = pipeline.promptbookVersion, description = pipeline.description, parameters = pipeline.parameters, templates = pipeline.templates, knowledgeSources = pipeline.knowledgeSources, knowledgePieces = pipeline.knowledgePieces, personas = pipeline.personas, preparations = pipeline.preparations;
5588
+ var pipelineUrl = pipeline.pipelineUrl, sourceFile = pipeline.sourceFile, title = pipeline.title, bookVersion = pipeline.bookVersion, description = pipeline.description, parameters = pipeline.parameters, templates = pipeline.templates, knowledgeSources = pipeline.knowledgeSources, knowledgePieces = pipeline.knowledgePieces, personas = pipeline.personas, preparations = pipeline.preparations;
5568
5589
  return {
5569
5590
  pipelineUrl: pipelineUrl,
5570
5591
  sourceFile: sourceFile,
5571
5592
  title: title,
5572
- promptbookVersion: promptbookVersion,
5593
+ bookVersion: bookVersion,
5573
5594
  description: description,
5574
5595
  parameters: parameters,
5575
5596
  templates: templates,
@@ -5781,7 +5802,7 @@ var knowledgeCommandParser = {
5781
5802
  throw new ParseError("Source not valid");
5782
5803
  }
5783
5804
  if (sourceContent.startsWith('../') || sourceContent.startsWith('/') || /^[A-Z]:[\\/]+/i.test(sourceContent)) {
5784
- throw new ParseError("Source cannot be outside of the .ptbk.md folder");
5805
+ throw new ParseError("Source cannot be outside of the .book.md folder");
5785
5806
  }
5786
5807
  return {
5787
5808
  type: 'KNOWLEDGE',
@@ -6413,7 +6434,7 @@ function validateParameterName(parameterName) {
6413
6434
  /**
6414
6435
  * Parses the foreach command
6415
6436
  *
6416
- * Note: @@@ This command is used as foreach for new commands - it should NOT be used in any `.ptbk.md` file
6437
+ * Note: @@@ This command is used as foreach for new commands - it should NOT be used in any `.book.md` file
6417
6438
  *
6418
6439
  * @see `documentationUrl` for more details
6419
6440
  * @private within the commands folder
@@ -6563,7 +6584,7 @@ var foreachCommandParser = {
6563
6584
  },
6564
6585
  };
6565
6586
  /**
6566
- * TODO: [🍭] Make .ptbk.md file with examples of the FOREACH with wrong parsing and logic
6587
+ * TODO: [🍭] Make .book.md file with examples of the FOREACH with wrong parsing and logic
6567
6588
  */
6568
6589
 
6569
6590
  /**
@@ -7197,7 +7218,7 @@ var bookVersionCommandParser = {
7197
7218
  /**
7198
7219
  * Description of the BOOK_VERSION command
7199
7220
  */
7200
- description: "Which version of the Book language is the .ptbk.md using",
7221
+ description: "Which version of the Book language is the .book.md using",
7201
7222
  /**
7202
7223
  * Link to documentation
7203
7224
  */
@@ -7211,19 +7232,19 @@ var bookVersionCommandParser = {
7211
7232
  */
7212
7233
  parse: function (input) {
7213
7234
  var args = input.args;
7214
- var promptbookVersion = args.pop();
7215
- if (promptbookVersion === undefined) {
7235
+ var bookVersion = args.pop();
7236
+ if (bookVersion === undefined) {
7216
7237
  throw new ParseError("Version is required");
7217
7238
  }
7218
- if (!isValidPromptbookVersion(promptbookVersion)) {
7219
- throw new ParseError("Invalid Promptbook version \"".concat(promptbookVersion, "\""));
7239
+ if (!isValidPromptbookVersion(bookVersion)) {
7240
+ throw new ParseError("Invalid Promptbook version \"".concat(bookVersion, "\""));
7220
7241
  }
7221
7242
  if (args.length > 0 && !(((args.length === 1 && args[0]) || '').toUpperCase() === 'VERSION')) {
7222
7243
  throw new ParseError("Can not have more than one Promptbook version");
7223
7244
  }
7224
7245
  return {
7225
7246
  type: 'BOOK_VERSION',
7226
- promptbookVersion: promptbookVersion,
7247
+ bookVersion: bookVersion,
7227
7248
  };
7228
7249
  },
7229
7250
  /**
@@ -7233,7 +7254,7 @@ var bookVersionCommandParser = {
7233
7254
  */
7234
7255
  $applyToPipelineJson: function (command, $pipelineJson) {
7235
7256
  // TODO: Warn if the version is overridden
7236
- $pipelineJson.promptbookVersion = command.promptbookVersion;
7257
+ $pipelineJson.bookVersion = command.bookVersion;
7237
7258
  },
7238
7259
  /**
7239
7260
  * Converts the BOOK_VERSION command back to string
@@ -7286,9 +7307,9 @@ var urlCommandParser = {
7286
7307
  * Example usages of the URL command
7287
7308
  */
7288
7309
  examples: [
7289
- 'PIPELINE URL https://promptbook.studio/library/write-cv.ptbk.md',
7290
- 'URL https://promptbook.studio/library/write-cv.ptbk.md',
7291
- 'https://promptbook.studio/library/write-cv.ptbk.md',
7310
+ 'PIPELINE URL https://promptbook.studio/library/write-cv.book.md',
7311
+ 'URL https://promptbook.studio/library/write-cv.book.md',
7312
+ 'https://promptbook.studio/library/write-cv.book.md',
7292
7313
  ],
7293
7314
  /**
7294
7315
  * Parses the URL command
@@ -7489,7 +7510,7 @@ var instrumentCommandParser = {
7489
7510
  /**
7490
7511
  * Parses the boilerplate command
7491
7512
  *
7492
- * Note: @@@ This command is used as boilerplate for new commands - it should NOT be used in any `.ptbk.md` file
7513
+ * Note: @@@ This command is used as boilerplate for new commands - it should NOT be used in any `.book.md` file
7493
7514
  *
7494
7515
  * @see `documentationUrl` for more details
7495
7516
  * @private within the commands folder
@@ -7543,7 +7564,7 @@ var boilerplateCommandParser = {
7543
7564
  * Note: `$` is used to indicate that this function mutates given `pipelineJson`
7544
7565
  */
7545
7566
  $applyToPipelineJson: function (command, $pipelineJson) {
7546
- throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .ptbk.md file");
7567
+ throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .book.md file");
7547
7568
  },
7548
7569
  /**
7549
7570
  * Apply the BOILERPLATE command to the `pipelineJson`
@@ -7551,7 +7572,7 @@ var boilerplateCommandParser = {
7551
7572
  * Note: `$` is used to indicate that this function mutates given `templateJson`
7552
7573
  */
7553
7574
  $applyToTemplateJson: function (command, $templateJson, $pipelineJson) {
7554
- throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .ptbk.md file");
7575
+ throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .book.md file");
7555
7576
  },
7556
7577
  /**
7557
7578
  * Converts the BOILERPLATE command back to string
@@ -7567,7 +7588,7 @@ var boilerplateCommandParser = {
7567
7588
  * Note: This is used in `pipelineJsonToString` utility
7568
7589
  */
7569
7590
  takeFromPipelineJson: function (pipelineJson) {
7570
- throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .ptbk.md file");
7591
+ throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .book.md file");
7571
7592
  },
7572
7593
  /**
7573
7594
  * Reads the BOILERPLATE command from the `TemplateJson`
@@ -7575,7 +7596,7 @@ var boilerplateCommandParser = {
7575
7596
  * Note: This is used in `pipelineJsonToString` utility
7576
7597
  */
7577
7598
  takeFromTemplateJson: function ($templateJson) {
7578
- throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .ptbk.md file");
7599
+ throw new ParseError("BOILERPLATE command is only for testing purposes and should not be used in the .book.md file");
7579
7600
  },
7580
7601
  };
7581
7602
 
@@ -7904,7 +7925,7 @@ function splitMarkdownIntoSections(markdown) {
7904
7925
  return;
7905
7926
  }
7906
7927
  if (!section.startsWith('#')) {
7907
- section = "# Untitled\n\n".concat(section);
7928
+ section = "# ".concat(DEFAULT_TITLE, "\n\n").concat(section);
7908
7929
  }
7909
7930
  sections.push(section);
7910
7931
  buffer = [];
@@ -7968,7 +7989,7 @@ function flattenMarkdown(markdown) {
7968
7989
  var e_1, _a;
7969
7990
  var sections = splitMarkdownIntoSections(markdown);
7970
7991
  if (sections.length === 0) {
7971
- return '# Untitled';
7992
+ return "# ".concat(DEFAULT_TITLE);
7972
7993
  }
7973
7994
  var flattenedMarkdown = '';
7974
7995
  var parsedSections = sections.map(parseMarkdownSection);
@@ -7979,7 +8000,7 @@ function flattenMarkdown(markdown) {
7979
8000
  }
7980
8001
  else {
7981
8002
  parsedSections.unshift(firstSection);
7982
- flattenedMarkdown += "# Untitled" + "\n\n"; // <- [🧠] Maybe 3 new lines?
8003
+ flattenedMarkdown += "# ".concat(DEFAULT_TITLE) + "\n\n"; // <- [🧠] Maybe 3 new lines?
7983
8004
  }
7984
8005
  try {
7985
8006
  for (var parsedSections_1 = __values(parsedSections), parsedSections_1_1 = parsedSections_1.next(); !parsedSections_1_1.done; parsedSections_1_1 = parsedSections_1.next()) {
@@ -8051,8 +8072,8 @@ function titleToName(value) {
8051
8072
  * Note: This function does not validate logic of the pipeline only the parsing
8052
8073
  * Note: This function acts as compilation process
8053
8074
  *
8054
- * @param pipelineString {Promptbook} in string markdown format (.ptbk.md)
8055
- * @returns {Promptbook} compiled in JSON format (.ptbk.json)
8075
+ * @param pipelineString {Promptbook} in string markdown format (.book.md)
8076
+ * @returns {Promptbook} compiled in JSON format (.book.json)
8056
8077
  * @throws {ParseError} if the promptbook string is not valid
8057
8078
  * @public exported from `@promptbook/core`
8058
8079
  */
@@ -8061,7 +8082,7 @@ function pipelineStringToJsonSync(pipelineString) {
8061
8082
  var $pipelineJson = {
8062
8083
  title: undefined /* <- Note: [🍙] Putting here placeholder to keep `title` on top at final JSON */,
8063
8084
  pipelineUrl: undefined /* <- Note: Putting here placeholder to keep `pipelineUrl` on top at final JSON */,
8064
- promptbookVersion: undefined /* <- Note: By default no explicit version */,
8085
+ bookVersion: undefined /* <- Note: By default no explicit version */,
8065
8086
  description: undefined /* <- Note: [🍙] Putting here placeholder to keep `description` on top at final JSON */,
8066
8087
  parameters: [],
8067
8088
  templates: [],
@@ -8444,10 +8465,10 @@ function pipelineStringToJsonSync(pipelineString) {
8444
8465
  * Note: This function does not validate logic of the pipeline only the parsing
8445
8466
  * Note: This function acts as compilation process
8446
8467
  *
8447
- * @param pipelineString {Promptbook} in string markdown format (.ptbk.md)
8468
+ * @param pipelineString {Promptbook} in string markdown format (.book.md)
8448
8469
  * @param tools - Tools for the preparation and scraping - if not provided together with `llm`, the preparation will be skipped
8449
8470
  * @param options - Options and tools for the compilation
8450
- * @returns {Promptbook} compiled in JSON format (.ptbk.json)
8471
+ * @returns {Promptbook} compiled in JSON format (.book.json)
8451
8472
  * @throws {ParseError} if the promptbook string is not valid
8452
8473
  * @public exported from `@promptbook/core`
8453
8474
  */
@@ -8663,7 +8684,7 @@ function stringifyPipelineJson(pipeline) {
8663
8684
  return pipelineJsonStringified;
8664
8685
  }
8665
8686
  /**
8666
- * TODO: [🐝] Not Working propperly @see https://promptbook.studio/examples/mixed-knowledge.ptbk.md
8687
+ * TODO: [🐝] Not Working propperly @see https://promptbook.studio/examples/mixed-knowledge.book.md
8667
8688
  * TODO: [🧠][0] Maybe rename to `stringifyPipelineJson`, `stringifyIndexedJson`,...
8668
8689
  * TODO: [🧠] Maybe more elegant solution than replacing via regex
8669
8690
  * TODO: [🍙] Make some standard order of json properties
@@ -8937,7 +8958,7 @@ function createLlmToolsFromConfiguration(configuration, options) {
8937
8958
  */
8938
8959
 
8939
8960
  /**
8940
- * Stores
8961
+ * Stores data in memory (HEAP)
8941
8962
  *
8942
8963
  * @public exported from `@promptbook/core`
8943
8964
  */
@@ -9067,13 +9088,18 @@ function cacheLlmTools(llmTools, options) {
9067
9088
  promptResult = _c.sent();
9068
9089
  return [3 /*break*/, 11];
9069
9090
  case 10: throw new PipelineExecutionError("Unknown model variant \"".concat(prompt.modelRequirements.modelVariant, "\""));
9070
- case 11: return [4 /*yield*/, storage.setItem(key, {
9091
+ case 11:
9092
+ // TODO: [🧠] !!!!! How to do timing in mixed cache / non-cache situation
9093
+ // promptResult.timing: FromtoItems
9094
+ return [4 /*yield*/, storage.setItem(key, {
9071
9095
  date: $currentDate(),
9072
9096
  promptbookVersion: PROMPTBOOK_ENGINE_VERSION,
9073
9097
  prompt: prompt,
9074
9098
  promptResult: promptResult,
9075
9099
  })];
9076
9100
  case 12:
9101
+ // TODO: [🧠] !!!!! How to do timing in mixed cache / non-cache situation
9102
+ // promptResult.timing: FromtoItems
9077
9103
  _c.sent();
9078
9104
  return [2 /*return*/, promptResult];
9079
9105
  }
@@ -9449,6 +9475,54 @@ var websiteScraperMetadata = $deepFreeze({
9449
9475
  */
9450
9476
  var _WebsiteScraperMetadataRegistration = $scrapersMetadataRegister.register(websiteScraperMetadata);
9451
9477
 
9478
+ /**
9479
+ * Behaves like a storage but forgets everything you put in it
9480
+ *
9481
+ * @public exported from `@promptbook/core`
9482
+ */
9483
+ var BlackholeStorage = /** @class */ (function () {
9484
+ function BlackholeStorage() {
9485
+ }
9486
+ Object.defineProperty(BlackholeStorage.prototype, "length", {
9487
+ /**
9488
+ * Returns the number of key/value pairs currently present in the list associated with the object.
9489
+ */
9490
+ get: function () {
9491
+ return 0;
9492
+ },
9493
+ enumerable: false,
9494
+ configurable: true
9495
+ });
9496
+ /**
9497
+ * Empties the list associated with the object of all key/value pairs, if there are any.
9498
+ */
9499
+ BlackholeStorage.prototype.clear = function () { };
9500
+ /**
9501
+ * Returns the current value associated with the given key, or null if the given key does not exist in the list associated with the object.
9502
+ * @param key
9503
+ */
9504
+ BlackholeStorage.prototype.getItem = function (key) {
9505
+ return null;
9506
+ };
9507
+ /**
9508
+ * Returns the name of the nth key in the list, or null if n is greater than or equal to the number of key/value pairs in the object.
9509
+ */
9510
+ BlackholeStorage.prototype.key = function (index) {
9511
+ return null;
9512
+ };
9513
+ /**
9514
+ * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
9515
+ */
9516
+ BlackholeStorage.prototype.setItem = function (key, value) {
9517
+ };
9518
+ /**
9519
+ * Removes the key/value pair with the given key from the list associated with the object, if a key/value pair with the given key exists.
9520
+ */
9521
+ BlackholeStorage.prototype.removeItem = function (key) {
9522
+ };
9523
+ return BlackholeStorage;
9524
+ }());
9525
+
9452
9526
  /**
9453
9527
  * This class behaves like LocalStorage but separates keys by prefix
9454
9528
  *
@@ -9799,5 +9873,5 @@ function executionReportJsonToString(executionReportJson, options) {
9799
9873
  * TODO: [🧠] Should be in generated file GENERATOR_WARNING
9800
9874
  */
9801
9875
 
9802
- export { $llmToolsMetadataRegister, $llmToolsRegister, $scrapersMetadataRegister, $scrapersRegister, AbstractFormatError, BOOK_LANGUAGE_VERSION, CLAIM, CallbackInterfaceTools, CollectionError, CsvFormatDefinition, CsvFormatError, DEFAULT_CSV_SETTINGS, DEFAULT_EXECUTIONS_CACHE_DIRNAME, DEFAULT_INTERMEDIATE_FILES_STRATEGY, DEFAULT_IS_AUTO_INSTALLED, DEFAULT_IS_VERBOSE, DEFAULT_MAX_EXECUTION_ATTEMPTS, DEFAULT_MAX_KNOWLEDGE_SOURCES_SCRAPING_DEPTH, DEFAULT_MAX_KNOWLEDGE_SOURCES_SCRAPING_TOTAL, DEFAULT_MAX_PARALLEL_COUNT, DEFAULT_PIPELINE_COLLECTION_BASE_FILENAME, DEFAULT_REMOTE_URL, DEFAULT_REMOTE_URL_PATH, DEFAULT_SCRAPE_CACHE_DIRNAME, ERRORS, EXPECTATION_UNITS, EnvironmentMismatchError, ExecutionReportStringOptionsDefaults, ExpectError, KnowledgeScrapeError, LimitReachedError, MANDATORY_CSV_SETTINGS, MAX_FILENAME_LENGTH, MODEL_VARIANTS, MemoryStorage, MissingToolsError, MultipleLlmExecutionTools, NotFoundError, NotYetImplementedError, PROMPTBOOK_ENGINE_VERSION, ParseError, PipelineExecutionError, PipelineLogicError, PipelineUrlError, PrefixStorage, RESERVED_PARAMETER_NAMES, TemplateTypes, TextFormatDefinition, UNCERTAIN_USAGE, UnexpectedError, ZERO_USAGE, _AnthropicClaudeMetadataRegistration, _AzureOpenAiMetadataRegistration, _DocumentScraperMetadataRegistration, _LegacyDocumentScraperMetadataRegistration, _MarkdownScraperMetadataRegistration, _OpenAiAssistantMetadataRegistration, _OpenAiMetadataRegistration, _PdfScraperMetadataRegistration, _WebsiteScraperMetadataRegistration, addUsage, assertsExecutionSuccessful, cacheLlmTools, collectionToJson, countTotalUsage, createCollectionFromJson, createCollectionFromPromise, createCollectionFromUrl, createLlmToolsFromConfiguration, createPipelineExecutor, createSubcollection, embeddingVectorToString, executionReportJsonToString, isPassingExpectations, isPipelinePrepared, joinLlmExecutionTools, limitTotalUsage, makeKnowledgeSourceHandler, pipelineJsonToString, pipelineStringToJson, pipelineStringToJsonSync, prepareKnowledgePieces, preparePersona, preparePipeline, prepareTemplates, prettifyPipelineString, stringifyPipelineJson, unpreparePipeline, usageToHuman, usageToWorktime, validatePipeline };
9876
+ export { $llmToolsMetadataRegister, $llmToolsRegister, $scrapersMetadataRegister, $scrapersRegister, AbstractFormatError, BOOK_LANGUAGE_VERSION, BlackholeStorage, CLAIM, CallbackInterfaceTools, CollectionError, CsvFormatDefinition, CsvFormatError, DEFAULT_CSV_SETTINGS, DEFAULT_EXECUTIONS_CACHE_DIRNAME, DEFAULT_INTERMEDIATE_FILES_STRATEGY, DEFAULT_IS_AUTO_INSTALLED, DEFAULT_IS_VERBOSE, DEFAULT_MAX_EXECUTION_ATTEMPTS, DEFAULT_MAX_KNOWLEDGE_SOURCES_SCRAPING_DEPTH, DEFAULT_MAX_KNOWLEDGE_SOURCES_SCRAPING_TOTAL, DEFAULT_MAX_PARALLEL_COUNT, DEFAULT_PIPELINE_COLLECTION_BASE_FILENAME, DEFAULT_REMOTE_URL, DEFAULT_REMOTE_URL_PATH, DEFAULT_SCRAPE_CACHE_DIRNAME, DEFAULT_TITLE, ERRORS, EXPECTATION_UNITS, EnvironmentMismatchError, ExecutionReportStringOptionsDefaults, ExpectError, KnowledgeScrapeError, LimitReachedError, MANDATORY_CSV_SETTINGS, MAX_FILENAME_LENGTH, MODEL_VARIANTS, MemoryStorage, MissingToolsError, MultipleLlmExecutionTools, NotFoundError, NotYetImplementedError, PROMPTBOOK_ENGINE_VERSION, ParseError, PipelineExecutionError, PipelineLogicError, PipelineUrlError, PrefixStorage, RESERVED_PARAMETER_NAMES, TemplateTypes, TextFormatDefinition, UNCERTAIN_USAGE, UnexpectedError, ZERO_USAGE, _AnthropicClaudeMetadataRegistration, _AzureOpenAiMetadataRegistration, _DocumentScraperMetadataRegistration, _LegacyDocumentScraperMetadataRegistration, _MarkdownScraperMetadataRegistration, _OpenAiAssistantMetadataRegistration, _OpenAiMetadataRegistration, _PdfScraperMetadataRegistration, _WebsiteScraperMetadataRegistration, addUsage, assertsExecutionSuccessful, cacheLlmTools, collectionToJson, countTotalUsage, createCollectionFromJson, createCollectionFromPromise, createCollectionFromUrl, createLlmToolsFromConfiguration, createPipelineExecutor, createSubcollection, embeddingVectorToString, executionReportJsonToString, isPassingExpectations, isPipelinePrepared, joinLlmExecutionTools, limitTotalUsage, makeKnowledgeSourceHandler, pipelineJsonToString, pipelineStringToJson, pipelineStringToJsonSync, prepareKnowledgePieces, preparePersona, preparePipeline, prepareTemplates, prettifyPipelineString, stringifyPipelineJson, unpreparePipeline, usageToHuman, usageToWorktime, validatePipeline };
9803
9877
  //# sourceMappingURL=index.es.js.map