@promptbook/node 0.69.0-11 → 0.69.0-12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.es.js CHANGED
@@ -15,7 +15,7 @@ import * as dotenv from 'dotenv';
15
15
  /**
16
16
  * The version of the Promptbook library
17
17
  */
18
- var PROMPTBOOK_VERSION = '0.69.0-10';
18
+ var PROMPTBOOK_VERSION = '0.69.0-11';
19
19
  // TODO: !!!! List here all the versions and annotate + put into script
20
20
 
21
21
  /*! *****************************************************************************
@@ -422,6 +422,19 @@ var RESERVED_PARAMETER_MISSING_VALUE = 'MISSING-' + REPLACING_NONCE;
422
422
  */
423
423
  var RESERVED_PARAMETER_RESTRICTED = 'RESTRICTED-' + REPLACING_NONCE;
424
424
  // <- TODO: [🧜‍♂️]
425
+ /**
426
+ * @@@
427
+ *
428
+ * @public exported from `@promptbook/core`
429
+ */
430
+ var DEFAULT_CSV_SETTINGS = {
431
+ header: true,
432
+ delimiter: ',',
433
+ quoteChar: '"',
434
+ newline: '\n',
435
+ skipEmptyLines: true,
436
+ // encoding: 'utf8'
437
+ };
425
438
  /**
426
439
  * @@@
427
440
  *
@@ -885,7 +898,7 @@ function forEachAsync(array, options, callbackfunction) {
885
898
  });
886
899
  }
887
900
 
888
- var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.ptbk.md",promptbookVersion:"0.69.0-10",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",promptbookVersion:"0.69.0-10",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",promptbookVersion:"0.69.0-10",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",promptbookVersion:"0.69.0-10",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## Sample\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"}];
901
+ var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.ptbk.md",promptbookVersion:"0.69.0-11",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",promptbookVersion:"0.69.0-11",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",promptbookVersion:"0.69.0-11",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",promptbookVersion:"0.69.0-11",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## Sample\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"}];
889
902
 
890
903
  /**
891
904
  * This error indicates that the promptbook in a markdown format cannot be parsed into a valid promptbook object
@@ -2641,41 +2654,36 @@ function TODO_USE() {
2641
2654
  var CsvFormatDefinition = {
2642
2655
  formatName: 'CSV',
2643
2656
  aliases: ['SPREADSHEET', 'TABLE'],
2644
- isValid: function (value, schema) {
2657
+ isValid: function (value, settings, schema) {
2658
+ // TODO: !!!!!! Implement CSV validation
2645
2659
  TODO_USE(value /* <- TODO: Use value here */);
2660
+ TODO_USE(settings /* <- TODO: Use settings here */);
2646
2661
  TODO_USE(schema /* <- TODO: Use schema here */);
2647
2662
  return true;
2648
2663
  },
2649
- canBeValid: function (partialValue, schema) {
2664
+ canBeValid: function (partialValue, settings, schema) {
2650
2665
  TODO_USE(partialValue /* <- TODO: Use partialValue here */);
2666
+ TODO_USE(settings /* <- TODO: Use settings here */);
2651
2667
  TODO_USE(schema /* <- TODO: Use schema here */);
2652
2668
  return true;
2653
2669
  },
2654
- heal: function (value, schema) {
2670
+ heal: function (value, settings, schema) {
2655
2671
  TODO_USE(value /* <- TODO: Use partialValue here */);
2672
+ TODO_USE(settings /* <- TODO: Use settings here */);
2656
2673
  TODO_USE(schema /* <- TODO: Use schema here */);
2657
2674
  throw new Error('Not implemented');
2658
2675
  },
2659
2676
  subvalueDefinitions: [
2660
2677
  {
2661
2678
  subvalueName: 'ROW',
2662
- mapValues: function (value, mapCallback) {
2679
+ mapValues: function (value, settings, mapCallback) {
2663
2680
  return __awaiter(this, void 0, void 0, function () {
2664
2681
  var csv, mappedData;
2665
2682
  var _this = this;
2666
2683
  return __generator(this, function (_a) {
2667
2684
  switch (_a.label) {
2668
2685
  case 0:
2669
- csv = parse(value, {
2670
- header: true,
2671
- delimiter: ',',
2672
- quoteChar: '"',
2673
- newline: '\r\n',
2674
- skipEmptyLines: true,
2675
- // encoding: 'utf8',
2676
- // <- TODO: !!!!!! DEFAULT_CSV_OPTIONS
2677
- // <- TODO: [🧠] How to define parsing options for formats, its different concept than schema
2678
- });
2686
+ csv = parse(value, settings);
2679
2687
  if (csv.errors.length !== 0) {
2680
2688
  throw new ParseError(// <- TODO: !!!!!! Split PipelineParseError and FormatParseError -> CsvParseError
2681
2689
  spaceTrim$1(function (block) { return "\n CSV parsing error\n\n ".concat(block(csv.errors.map(function (error) { return error.message; }).join('\n\n')), "\n "); }));
@@ -2689,25 +2697,18 @@ var CsvFormatDefinition = {
2689
2697
  _a = [__assign({}, row)];
2690
2698
  _b = {};
2691
2699
  // <- TODO: !!!!!! Dynamic new column name and position
2700
+ // <- TODO: !!!!!! Check name collisions
2692
2701
  return [4 /*yield*/, mapCallback(row, index)];
2693
2702
  case 1: return [2 /*return*/, (__assign.apply(void 0, _a.concat([(_b.newColumn =
2694
2703
  // <- TODO: !!!!!! Dynamic new column name and position
2704
+ // <- TODO: !!!!!! Check name collisions
2695
2705
  _c.sent(), _b)])))];
2696
2706
  }
2697
2707
  });
2698
2708
  }); }))];
2699
2709
  case 1:
2700
2710
  mappedData = _a.sent();
2701
- return [2 /*return*/, unparse(mappedData, {
2702
- header: true,
2703
- delimiter: ',',
2704
- quoteChar: '"',
2705
- newline: '\r\n',
2706
- skipEmptyLines: true,
2707
- // encoding: 'utf8',
2708
- // <- TODO: !!!!!! DEFAULT_CSV_OPTIONS
2709
- // <- TODO: [🧠] How to define parsing options for formats, its different concept than schema
2710
- })];
2711
+ return [2 /*return*/, unparse(mappedData, settings)];
2711
2712
  }
2712
2713
  });
2713
2714
  });
@@ -2715,23 +2716,14 @@ var CsvFormatDefinition = {
2715
2716
  },
2716
2717
  {
2717
2718
  subvalueName: 'CELL',
2718
- mapValues: function (value, mapCallback) {
2719
+ mapValues: function (value, settings, mapCallback) {
2719
2720
  return __awaiter(this, void 0, void 0, function () {
2720
2721
  var csv, mappedData;
2721
2722
  var _this = this;
2722
2723
  return __generator(this, function (_a) {
2723
2724
  switch (_a.label) {
2724
2725
  case 0:
2725
- csv = parse(value, {
2726
- header: true,
2727
- delimiter: ',',
2728
- quoteChar: '"',
2729
- newline: '\r\n',
2730
- skipEmptyLines: true,
2731
- // encoding: 'utf8',
2732
- // <- TODO: !!!!!! DEFAULT_CSV_OPTIONS
2733
- // <- TODO: [🧠] How to define parsing options for formats, its different concept than schema
2734
- });
2726
+ csv = parse(value, settings);
2735
2727
  if (csv.errors.length !== 0) {
2736
2728
  throw new ParseError(// <- TODO: !!!!!! Split PipelineParseError and FormatParseError -> CsvParseError
2737
2729
  spaceTrim$1(function (block) { return "\n CSV parsing error\n\n ".concat(block(csv.errors.map(function (error) { return error.message; }).join('\n\n')), "\n "); }));
@@ -2754,16 +2746,7 @@ var CsvFormatDefinition = {
2754
2746
  }); }))];
2755
2747
  case 1:
2756
2748
  mappedData = _a.sent();
2757
- return [2 /*return*/, unparse(mappedData, {
2758
- header: true,
2759
- delimiter: ',',
2760
- quoteChar: '"',
2761
- newline: '\r\n',
2762
- skipEmptyLines: true,
2763
- // encoding: 'utf8',
2764
- // <- TODO: !!!!!! DEFAULT_CSV_OPTIONS
2765
- // <- TODO: [🧠] How to define parsing options for formats, its different concept than schema
2766
- })];
2749
+ return [2 /*return*/, unparse(mappedData, settings)];
2767
2750
  }
2768
2751
  });
2769
2752
  });
@@ -2808,17 +2791,20 @@ function isValidJsonString(value /* <- [👨‍⚖️] */) {
2808
2791
  var JsonFormatDefinition = {
2809
2792
  formatName: 'JSON',
2810
2793
  mimeType: 'application/json',
2811
- isValid: function (value, schema) {
2794
+ isValid: function (value, settings, schema) {
2812
2795
  TODO_USE(schema /* <- TODO: Use schema here */);
2796
+ TODO_USE(settings /* <- TODO: Use settings here */);
2813
2797
  return isValidJsonString(value);
2814
2798
  },
2815
- canBeValid: function (partialValue, schema) {
2799
+ canBeValid: function (partialValue, settings, schema) {
2816
2800
  TODO_USE(partialValue /* <- TODO: Use partialValue here */);
2801
+ TODO_USE(settings /* <- TODO: Use settings here */);
2817
2802
  TODO_USE(schema /* <- TODO: Use schema here */);
2818
2803
  return true;
2819
2804
  },
2820
- heal: function (value, schema) {
2805
+ heal: function (value, settings, schema) {
2821
2806
  TODO_USE(value /* <- TODO: Use partialValue here */);
2807
+ TODO_USE(settings /* <- TODO: Use settings here */);
2822
2808
  TODO_USE(schema /* <- TODO: Use schema here */);
2823
2809
  throw new Error('Not implemented');
2824
2810
  },
@@ -2827,7 +2813,7 @@ var JsonFormatDefinition = {
2827
2813
  /**
2828
2814
  * TODO: [🧠] Maybe propper instance of object
2829
2815
  * TODO: [0] Make string_serialized_json
2830
- * TODO: [1] Make type for JSON Schema
2816
+ * TODO: [1] Make type for JSON Settings and Schema
2831
2817
  * TODO: [🧠] What to use for validating JSONs - JSON Schema, ZoD, typescript types/interfaces,...?
2832
2818
  * TODO: [🍓] In `JsonFormatDefinition` implement simple `isValid`
2833
2819
  * TODO: [🍓] In `JsonFormatDefinition` implement partial `canBeValid`
@@ -2857,7 +2843,7 @@ var TextFormatDefinition = {
2857
2843
  subvalueDefinitions: [
2858
2844
  {
2859
2845
  subvalueName: 'LINE',
2860
- mapValues: function (value, mapCallback) {
2846
+ mapValues: function (value, settings, mapCallback) {
2861
2847
  return __awaiter(this, void 0, void 0, function () {
2862
2848
  var lines, mappedLines;
2863
2849
  return __generator(this, function (_a) {
@@ -2883,6 +2869,7 @@ var TextFormatDefinition = {
2883
2869
  ],
2884
2870
  };
2885
2871
  /**
2872
+ * TODO: [1] Make type for XML Text and Schema
2886
2873
  * TODO: [🧠][🤠] Here should be all words, characters, lines, paragraphs, pages aviable as subvalues
2887
2874
  * TODO: [🍓] In `TextFormatDefinition` implement simple `isValid`
2888
2875
  * TODO: [🍓] In `TextFormatDefinition` implement partial `canBeValid`
@@ -2899,18 +2886,21 @@ var TextFormatDefinition = {
2899
2886
  var XmlFormatDefinition = {
2900
2887
  formatName: 'XML',
2901
2888
  mimeType: 'application/xml',
2902
- isValid: function (value, schema) {
2889
+ isValid: function (value, settings, schema) {
2903
2890
  TODO_USE(value /* <- TODO: Use value here */);
2891
+ TODO_USE(settings /* <- TODO: Use settings here */);
2904
2892
  TODO_USE(schema /* <- TODO: Use schema here */);
2905
2893
  return true;
2906
2894
  },
2907
- canBeValid: function (partialValue, schema) {
2895
+ canBeValid: function (partialValue, settings, schema) {
2908
2896
  TODO_USE(partialValue /* <- TODO: Use partialValue here */);
2897
+ TODO_USE(settings /* <- TODO: Use settings here */);
2909
2898
  TODO_USE(schema /* <- TODO: Use schema here */);
2910
2899
  return true;
2911
2900
  },
2912
- heal: function (value, schema) {
2901
+ heal: function (value, settings, schema) {
2913
2902
  TODO_USE(value /* <- TODO: Use partialValue here */);
2903
+ TODO_USE(settings /* <- TODO: Use settings here */);
2914
2904
  TODO_USE(schema /* <- TODO: Use schema here */);
2915
2905
  throw new Error('Not implemented');
2916
2906
  },
@@ -2919,7 +2909,7 @@ var XmlFormatDefinition = {
2919
2909
  /**
2920
2910
  * TODO: [🧠] Maybe propper instance of object
2921
2911
  * TODO: [0] Make string_serialized_xml
2922
- * TODO: [1] Make type for XML Schema
2912
+ * TODO: [1] Make type for XML Settings and Schema
2923
2913
  * TODO: [🧠] What to use for validating XMLs - XSD,...
2924
2914
  * TODO: [🍓] In `XmlFormatDefinition` implement simple `isValid`
2925
2915
  * TODO: [🍓] In `XmlFormatDefinition` implement partial `canBeValid`
@@ -3737,12 +3727,12 @@ function executeAttempts(options) {
3737
3727
  */
3738
3728
  function executeFormatCells(options) {
3739
3729
  return __awaiter(this, void 0, void 0, function () {
3740
- var template, jokerParameterNames, parameters, priority, pipelineIdentification, parameterValue, formatDefinition, subvalueDefinition, resultString;
3730
+ var template, jokerParameterNames, parameters, priority, pipelineIdentification, settings, parameterValue, formatDefinition, subvalueDefinition, formatSettings, resultString;
3741
3731
  var _this = this;
3742
3732
  return __generator(this, function (_a) {
3743
3733
  switch (_a.label) {
3744
3734
  case 0:
3745
- template = options.template, jokerParameterNames = options.jokerParameterNames, parameters = options.parameters, priority = options.priority, pipelineIdentification = options.pipelineIdentification;
3735
+ template = options.template, jokerParameterNames = options.jokerParameterNames, parameters = options.parameters, priority = options.priority, pipelineIdentification = options.pipelineIdentification, settings = options.settings;
3746
3736
  if (template.foreach === undefined) {
3747
3737
  return [2 /*return*/, /* not await */ executeAttempts(options)];
3748
3738
  }
@@ -3771,7 +3761,11 @@ function executeFormatCells(options) {
3771
3761
  .map(function (subvalueName) { return "- ".concat(subvalueName); })
3772
3762
  .join('\n')), "\n\n [\u26F7] This should never happen because cell name should be validated during parsing\n\n ").concat(block(pipelineIdentification), "\n "); }));
3773
3763
  }
3774
- return [4 /*yield*/, subvalueDefinition.mapValues(parameterValue, function (subparameters, index) { return __awaiter(_this, void 0, void 0, function () {
3764
+ if (formatDefinition.formatName === 'CSV') {
3765
+ formatSettings = settings.csvSettings;
3766
+ // <- TODO: !!!!!! More universal, make simmilar pattern for other formats for example \n vs \r\n in text
3767
+ }
3768
+ return [4 /*yield*/, subvalueDefinition.mapValues(parameterValue, formatSettings, function (subparameters, index) { return __awaiter(_this, void 0, void 0, function () {
3775
3769
  var mappedParameters, allSubparameters, subresultString;
3776
3770
  return __generator(this, function (_a) {
3777
3771
  switch (_a.label) {
@@ -4406,7 +4400,7 @@ function executePipeline(options) {
4406
4400
  function createPipelineExecutor(options) {
4407
4401
  var _this = this;
4408
4402
  var pipeline = options.pipeline, tools = options.tools, _a = options.settings, settings = _a === void 0 ? {} : _a;
4409
- var _b = settings.maxExecutionAttempts, maxExecutionAttempts = _b === void 0 ? MAX_EXECUTION_ATTEMPTS : _b, _c = settings.maxParallelCount, maxParallelCount = _c === void 0 ? MAX_PARALLEL_COUNT : _c, _d = settings.isVerbose, isVerbose = _d === void 0 ? IS_VERBOSE : _d, _e = settings.isNotPreparedWarningSupressed, isNotPreparedWarningSupressed = _e === void 0 ? false : _e;
4403
+ var _b = settings.maxExecutionAttempts, maxExecutionAttempts = _b === void 0 ? MAX_EXECUTION_ATTEMPTS : _b, _c = settings.maxParallelCount, maxParallelCount = _c === void 0 ? MAX_PARALLEL_COUNT : _c, _d = settings.csvSettings, csvSettings = _d === void 0 ? DEFAULT_CSV_SETTINGS : _d, _e = settings.isVerbose, isVerbose = _e === void 0 ? IS_VERBOSE : _e, _f = settings.isNotPreparedWarningSupressed, isNotPreparedWarningSupressed = _f === void 0 ? false : _f;
4410
4404
  validatePipeline(pipeline);
4411
4405
  var pipelineIdentification = (function () {
4412
4406
  // Note: This is a 😐 implementation of [🚞]
@@ -4441,6 +4435,7 @@ function createPipelineExecutor(options) {
4441
4435
  settings: {
4442
4436
  maxExecutionAttempts: maxExecutionAttempts,
4443
4437
  maxParallelCount: maxParallelCount,
4438
+ csvSettings: csvSettings,
4444
4439
  isVerbose: isVerbose,
4445
4440
  isNotPreparedWarningSupressed: isNotPreparedWarningSupressed,
4446
4441
  },