@promptbook/node 0.72.0-13 → 0.72.0-15

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 (107) hide show
  1. package/README.md +1 -1
  2. package/esm/index.es.js +106 -87
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +22 -18
  5. package/esm/typings/src/_packages/node.index.d.ts +2 -0
  6. package/esm/typings/src/_packages/types.index.d.ts +10 -10
  7. package/esm/typings/src/_packages/utils.index.d.ts +2 -2
  8. package/esm/typings/src/collection/PipelineCollection.d.ts +1 -1
  9. package/esm/typings/src/collection/SimplePipelineCollection.d.ts +2 -2
  10. package/esm/typings/src/collection/collectionToJson.d.ts +1 -1
  11. package/esm/typings/src/collection/constructors/createCollectionFromJson.d.ts +1 -1
  12. package/esm/typings/src/collection/constructors/createCollectionFromPromise.d.ts +1 -1
  13. package/esm/typings/src/commands/_common/types/CommandParser.d.ts +5 -5
  14. package/esm/typings/src/config.d.ts +21 -14
  15. package/esm/typings/src/execution/EmbeddingVector.d.ts +1 -1
  16. package/esm/typings/src/execution/Executables.d.ts +18 -0
  17. package/esm/typings/src/execution/ExecutionTools.d.ts +9 -3
  18. package/esm/typings/src/execution/LlmExecutionTools.d.ts +1 -1
  19. package/esm/typings/src/execution/PipelineExecutorResult.d.ts +2 -2
  20. package/esm/typings/src/execution/assertsExecutionSuccessful.d.ts +1 -0
  21. package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorOptions.d.ts +29 -6
  22. package/esm/typings/src/execution/createPipelineExecutor/10-executePipeline.d.ts +2 -11
  23. package/esm/typings/src/execution/createPipelineExecutor/20-executeTemplate.d.ts +4 -13
  24. package/esm/typings/src/execution/createPipelineExecutor/40-executeAttempts.d.ts +9 -14
  25. package/esm/typings/src/execution/translation/automatic-translate/automatic-translators/LindatAutomaticTranslator.d.ts +11 -3
  26. package/esm/typings/src/execution/utils/addUsage.d.ts +1 -1
  27. package/esm/typings/src/execution/utils/forEachAsync.d.ts +1 -1
  28. package/esm/typings/src/formats/_common/FormatDefinition.d.ts +2 -2
  29. package/esm/typings/src/formats/_common/FormatSubvalueDefinition.d.ts +2 -2
  30. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForCli.d.ts +2 -2
  31. package/esm/typings/src/llm-providers/_common/register/LlmToolsConfiguration.d.ts +1 -1
  32. package/esm/typings/src/llm-providers/_common/register/createLlmToolsFromConfiguration.d.ts +7 -0
  33. package/esm/typings/src/llm-providers/_common/utils/cache/CacheLlmToolsOptions.d.ts +4 -1
  34. package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.d.ts +1 -1
  35. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  36. package/esm/typings/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.d.ts +1 -1
  37. package/esm/typings/src/llm-providers/mocked/$fakeTextToExpectations.d.ts +1 -1
  38. package/esm/typings/src/llm-providers/mocked/MockedEchoLlmExecutionTools.d.ts +1 -1
  39. package/esm/typings/src/llm-providers/mocked/MockedFackedLlmExecutionTools.d.ts +1 -1
  40. package/esm/typings/src/llm-providers/multiple/MultipleLlmExecutionTools.d.ts +4 -5
  41. package/esm/typings/src/llm-providers/multiple/joinLlmExecutionTools.d.ts +1 -1
  42. package/esm/typings/src/llm-providers/openai/OpenAiExecutionTools.d.ts +1 -1
  43. package/esm/typings/src/llm-providers/openai/openai-models.d.ts +1 -1
  44. package/esm/typings/src/llm-providers/remote/RemoteLlmExecutionTools.d.ts +1 -1
  45. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_ListModels_Response.d.ts +3 -3
  46. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_Prompt_Response.d.ts +2 -2
  47. package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +4 -23
  48. package/esm/typings/src/prepare/prepareTemplates.d.ts +1 -1
  49. package/esm/typings/src/scrapers/_common/Scraper.d.ts +1 -5
  50. package/esm/typings/src/scrapers/_common/prepareKnowledgePieces.d.ts +1 -1
  51. package/esm/typings/src/scrapers/_common/register/$provideExecutablesForNode.d.ts +12 -0
  52. package/esm/typings/src/scrapers/_common/register/$provideScrapersForBrowser.d.ts +2 -2
  53. package/esm/typings/src/scrapers/_common/register/$provideScrapersForNode.d.ts +2 -2
  54. package/esm/typings/src/scrapers/_common/register/ScraperAndConverterMetadata.d.ts +2 -2
  55. package/esm/typings/src/scrapers/_common/utils/getScraperIntermediateSource.d.ts +2 -2
  56. package/esm/typings/src/scrapers/document/DocumentScraper.d.ts +2 -2
  57. package/esm/typings/src/scrapers/document/createDocumentScraper.d.ts +1 -1
  58. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -1
  59. package/esm/typings/src/scrapers/document-legacy/LegacyDocumentScraper.d.ts +3 -3
  60. package/esm/typings/src/scrapers/document-legacy/createLegacyDocumentScraper.d.ts +1 -1
  61. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -1
  62. package/esm/typings/src/scrapers/markdown/MarkdownScraper.d.ts +1 -1
  63. package/esm/typings/src/scrapers/markdown/createMarkdownScraper.d.ts +1 -1
  64. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -1
  65. package/esm/typings/src/scrapers/pdf/PdfScraper.d.ts +2 -2
  66. package/esm/typings/src/scrapers/pdf/createPdfScraper.d.ts +1 -1
  67. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +1 -1
  68. package/esm/typings/src/scrapers/website/WebsiteScraper.d.ts +6 -3
  69. package/esm/typings/src/scrapers/website/createWebsiteScraper.d.ts +1 -1
  70. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -1
  71. package/esm/typings/src/scrapers/website/utils/createShowdownConverter.d.ts +7 -0
  72. package/esm/typings/src/scripting/javascript/utils/preserve.d.ts +1 -1
  73. package/esm/typings/src/storage/file-cache-storage/utils/nameToSubfolderPath.d.ts +1 -1
  74. package/esm/typings/src/types/Arrayable.d.ts +1 -1
  75. package/esm/typings/src/types/IntermediateFilesStrategy.d.ts +7 -0
  76. package/esm/typings/src/types/PipelineJson/KnowledgePieceJson.d.ts +4 -4
  77. package/esm/typings/src/types/PipelineJson/KnowledgeSourceJson.d.ts +1 -1
  78. package/esm/typings/src/types/PipelineJson/PersonaJson.d.ts +1 -1
  79. package/esm/typings/src/types/PipelineJson/TemplateJsonCommon.d.ts +2 -2
  80. package/esm/typings/src/types/Prompt.d.ts +1 -1
  81. package/esm/typings/src/types/execution-report/ExecutionReportJson.d.ts +1 -1
  82. package/esm/typings/src/utils/$Register.d.ts +1 -1
  83. package/esm/typings/src/utils/FromtoItems.d.ts +1 -1
  84. package/esm/typings/src/utils/arrayableToArray.d.ts +1 -1
  85. package/esm/typings/src/utils/emojis.d.ts +1 -1
  86. package/esm/typings/src/utils/execCommand/$execCommand.d.ts +2 -2
  87. package/esm/typings/src/utils/execCommand/{IExecCommandOptions.d.ts → ExecCommandOptions.d.ts} +2 -6
  88. package/esm/typings/src/utils/execCommand/execCommandNormalizeOptions.d.ts +3 -3
  89. package/esm/typings/src/utils/expectation-counters/countSentences.d.ts +1 -1
  90. package/esm/typings/src/utils/markdown/extractAllBlocksFromMarkdown.d.ts +1 -1
  91. package/esm/typings/src/utils/markdown/splitMarkdownIntoSections.d.ts +1 -1
  92. package/esm/typings/src/utils/normalization/IKeywords.d.ts +2 -2
  93. package/esm/typings/src/utils/normalization/parseKeywords.d.ts +2 -2
  94. package/esm/typings/src/utils/normalization/parseKeywordsFromString.d.ts +2 -2
  95. package/esm/typings/src/utils/normalization/searchKeywords.d.ts +2 -2
  96. package/esm/typings/src/utils/organization/TODO_USE.d.ts +1 -1
  97. package/esm/typings/src/utils/organization/keepUnused.d.ts +1 -1
  98. package/esm/typings/src/utils/random/$randomSeed.d.ts +1 -1
  99. package/esm/typings/src/utils/sets/intersection.d.ts +1 -1
  100. package/esm/typings/src/utils/sets/union.d.ts +1 -1
  101. package/esm/typings/src/utils/unwrapResult.d.ts +4 -4
  102. package/package.json +4 -3
  103. package/umd/index.umd.js +106 -86
  104. package/umd/index.umd.js.map +1 -1
  105. package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorSettings.d.ts +0 -29
  106. package/esm/typings/src/scrapers/website/utils/markdownConverter.d.ts +0 -12
  107. /package/esm/typings/src/scrapers/website/utils/{markdownConverter.test.d.ts → createShowdownConverter.test.d.ts} +0 -0
package/umd/index.umd.js CHANGED
@@ -35,7 +35,7 @@
35
35
  /**
36
36
  * The version of the Promptbook library
37
37
  */
38
- var PROMPTBOOK_VERSION = '0.72.0-12';
38
+ var PROMPTBOOK_VERSION = '0.72.0-14';
39
39
  // TODO: [main] !!!! List here all the versions and annotate + put into script
40
40
 
41
41
  /*! *****************************************************************************
@@ -384,29 +384,30 @@
384
384
  */
385
385
  var IMMEDIATE_TIME = 10;
386
386
  /**
387
- * The maximum number of (LLM) tasks running in parallel
387
+ * The maximum length of the (generated) filename
388
388
  *
389
389
  * @public exported from `@promptbook/core`
390
390
  */
391
- var MAX_PARALLEL_COUNT = 5; // <- TODO: [🤹‍♂️]
391
+ var MAX_FILENAME_LENGTH = 30;
392
+ // <- TODO: [😡] Change to 'VISIBLE'
392
393
  /**
393
- * The maximum number of attempts to execute LLM task before giving up
394
+ * The maximum number of (LLM) tasks running in parallel
394
395
  *
395
396
  * @public exported from `@promptbook/core`
396
397
  */
397
- var MAX_EXECUTION_ATTEMPTS = 3; // <- TODO: [🤹‍♂️]
398
+ var DEFAULT_MAX_PARALLEL_COUNT = 5; // <- TODO: [🤹‍♂️]
398
399
  /**
399
- * The maximum length of the (generated) filename
400
+ * The maximum number of attempts to execute LLM task before giving up
400
401
  *
401
402
  * @public exported from `@promptbook/core`
402
403
  */
403
- var MAX_FILENAME_LENGTH = 30;
404
+ var DEFAULT_MAX_EXECUTION_ATTEMPTS = 3; // <- TODO: [🤹‍♂️]
404
405
  /**
405
406
  * The name of the builded pipeline collection made by CLI `ptbk make` and for lookup in `createCollectionFromDirectory`
406
407
  *
407
408
  * @public exported from `@promptbook/core`
408
409
  */
409
- var PIPELINE_COLLECTION_BASE_FILENAME = "index";
410
+ var DEFAULT_PIPELINE_COLLECTION_BASE_FILENAME = "index";
410
411
  /**
411
412
  * Nonce which is used for replacing things in strings
412
413
  *
@@ -458,13 +459,13 @@
458
459
  *
459
460
  * @public exported from `@promptbook/core`
460
461
  */
461
- var IS_VERBOSE = false;
462
+ var DEFAULT_IS_VERBOSE = false;
462
463
  /**
463
464
  * @@@
464
465
  *
465
466
  * @public exported from `@promptbook/core`
466
467
  */
467
- var IS_AUTO_INSTALLED = false;
468
+ var DEFAULT_IS_AUTO_INSTALLED = false;
468
469
  /**
469
470
  * @@@
470
471
  *
@@ -536,7 +537,6 @@
536
537
  pipelineString += '\n\n';
537
538
  pipelineString += description;
538
539
  }
539
- // TODO:> const commands: Array<Command>
540
540
  var commands = [];
541
541
  if (pipelineUrl) {
542
542
  commands.push("PIPELINE URL ".concat(pipelineUrl));
@@ -592,7 +592,6 @@
592
592
  pipelineString += '\n\n';
593
593
  pipelineString += description_1;
594
594
  }
595
- // TODO:> const commands: Array<Command>
596
595
  var commands_1 = [];
597
596
  var contentLanguage = 'text';
598
597
  if (templateType === 'PROMPT_TEMPLATE') {
@@ -891,8 +890,7 @@
891
890
  * Multiple LLM Execution Tools is a proxy server that uses multiple execution tools internally and exposes the executor interface externally.
892
891
  *
893
892
  * Note: Internal utility of `joinLlmExecutionTools` but exposed type
894
- * @public exported from `@promptbook/types`
895
- * TODO: !!!!!! Export as runtime class not just type
893
+ * @public exported from `@promptbook/core`
896
894
  */
897
895
  var MultipleLlmExecutionTools = /** @class */ (function () {
898
896
  /**
@@ -2144,6 +2142,7 @@
2144
2142
  }
2145
2143
  }
2146
2144
  /**
2145
+ * TODO: [🐚] This function should be removed OR changed OR be completely rewritten
2147
2146
  * TODO: [🧠] Can this return type be better typed than void
2148
2147
  */
2149
2148
 
@@ -3450,12 +3449,11 @@
3450
3449
  */
3451
3450
  function executeAttempts(options) {
3452
3451
  return __awaiter(this, void 0, void 0, function () {
3453
- var jokerParameterNames, priority, maxAttempts, preparedContent, parameters, template, preparedPipeline, tools, settings, $executionReport, pipelineIdentification, maxExecutionAttempts, $ongoingTemplateResult, _llms, llmTools, _loop_1, attempt, state_1;
3452
+ var jokerParameterNames, priority, maxAttempts, preparedContent, parameters, template, preparedPipeline, tools, $executionReport, pipelineIdentification, maxExecutionAttempts, $ongoingTemplateResult, _llms, llmTools, _loop_1, attempt, state_1;
3454
3453
  return __generator(this, function (_a) {
3455
3454
  switch (_a.label) {
3456
3455
  case 0:
3457
- jokerParameterNames = options.jokerParameterNames, priority = options.priority, maxAttempts = options.maxAttempts, preparedContent = options.preparedContent, parameters = options.parameters, template = options.template, preparedPipeline = options.preparedPipeline, tools = options.tools, settings = options.settings, $executionReport = options.$executionReport, pipelineIdentification = options.pipelineIdentification;
3458
- maxExecutionAttempts = settings.maxExecutionAttempts;
3456
+ jokerParameterNames = options.jokerParameterNames, priority = options.priority, maxAttempts = options.maxAttempts, preparedContent = options.preparedContent, parameters = options.parameters, template = options.template, preparedPipeline = options.preparedPipeline, tools = options.tools, $executionReport = options.$executionReport, pipelineIdentification = options.pipelineIdentification, maxExecutionAttempts = options.maxExecutionAttempts;
3459
3457
  $ongoingTemplateResult = {
3460
3458
  $result: null,
3461
3459
  $resultString: null,
@@ -3821,12 +3819,12 @@
3821
3819
  */
3822
3820
  function executeFormatSubvalues(options) {
3823
3821
  return __awaiter(this, void 0, void 0, function () {
3824
- var template, jokerParameterNames, parameters, priority, pipelineIdentification, settings, parameterValue, formatDefinition, subvalueDefinition, formatSettings, resultString;
3822
+ var template, jokerParameterNames, parameters, priority, csvSettings, pipelineIdentification, parameterValue, formatDefinition, subvalueDefinition, formatSettings, resultString;
3825
3823
  var _this = this;
3826
3824
  return __generator(this, function (_a) {
3827
3825
  switch (_a.label) {
3828
3826
  case 0:
3829
- template = options.template, jokerParameterNames = options.jokerParameterNames, parameters = options.parameters, priority = options.priority, pipelineIdentification = options.pipelineIdentification, settings = options.settings;
3827
+ template = options.template, jokerParameterNames = options.jokerParameterNames, parameters = options.parameters, priority = options.priority, csvSettings = options.csvSettings, pipelineIdentification = options.pipelineIdentification;
3830
3828
  if (template.foreach === undefined) {
3831
3829
  return [2 /*return*/, /* not await */ executeAttempts(options)];
3832
3830
  }
@@ -3856,7 +3854,7 @@
3856
3854
  .join('\n')), "\n\n [\u26F7] This should never happen because subformat name should be validated during parsing\n\n ").concat(block(pipelineIdentification), "\n "); }));
3857
3855
  }
3858
3856
  if (formatDefinition.formatName === 'CSV') {
3859
- formatSettings = settings.csvSettings;
3857
+ formatSettings = csvSettings;
3860
3858
  // <- TODO: [🤹‍♂️] More universal, make simmilar pattern for other formats for example \n vs \r\n in text
3861
3859
  }
3862
3860
  return [4 /*yield*/, subvalueDefinition.mapValues(parameterValue, template.foreach.outputSubparameterName, formatSettings, function (subparameters, index) { return __awaiter(_this, void 0, void 0, function () {
@@ -4009,13 +4007,12 @@
4009
4007
  */
4010
4008
  function executeTemplate(options) {
4011
4009
  return __awaiter(this, void 0, void 0, function () {
4012
- var currentTemplate, preparedPipeline, parametersToPass, tools, onProgress, settings, $executionReport, pipelineIdentification, maxExecutionAttempts, name, title, priority, usedParameterNames, dependentParameterNames, definedParameters, _a, _b, _c, definedParameterNames, parameters, _loop_1, _d, _e, parameterName, maxAttempts, jokerParameterNames, preparedContent, resultString;
4013
- var e_1, _f, _g;
4014
- return __generator(this, function (_h) {
4015
- switch (_h.label) {
4010
+ var currentTemplate, preparedPipeline, parametersToPass, tools, onProgress, $executionReport, pipelineIdentification, _a, maxExecutionAttempts, name, title, priority, usedParameterNames, dependentParameterNames, definedParameters, _b, _c, _d, definedParameterNames, parameters, _loop_1, _e, _f, parameterName, maxAttempts, jokerParameterNames, preparedContent, resultString;
4011
+ var e_1, _g, _h;
4012
+ return __generator(this, function (_j) {
4013
+ switch (_j.label) {
4016
4014
  case 0:
4017
- currentTemplate = options.currentTemplate, preparedPipeline = options.preparedPipeline, parametersToPass = options.parametersToPass, tools = options.tools, onProgress = options.onProgress, settings = options.settings, $executionReport = options.$executionReport, pipelineIdentification = options.pipelineIdentification;
4018
- maxExecutionAttempts = settings.maxExecutionAttempts;
4015
+ currentTemplate = options.currentTemplate, preparedPipeline = options.preparedPipeline, parametersToPass = options.parametersToPass, tools = options.tools, onProgress = options.onProgress, $executionReport = options.$executionReport, pipelineIdentification = options.pipelineIdentification, _a = options.maxExecutionAttempts, maxExecutionAttempts = _a === void 0 ? DEFAULT_MAX_EXECUTION_ATTEMPTS : _a;
4019
4016
  name = "pipeline-executor-frame-".concat(currentTemplate.name);
4020
4017
  title = currentTemplate.title;
4021
4018
  priority = preparedPipeline.templates.length - preparedPipeline.templates.indexOf(currentTemplate);
@@ -4030,7 +4027,7 @@
4030
4027
  // <- [🍸]
4031
4028
  })];
4032
4029
  case 1:
4033
- _h.sent();
4030
+ _j.sent();
4034
4031
  usedParameterNames = extractParameterNamesFromTemplate(currentTemplate);
4035
4032
  dependentParameterNames = new Set(currentTemplate.dependentParameterNames);
4036
4033
  // TODO: [👩🏾‍🤝‍👩🏻] Use here `mapAvailableToExpectedParameters`
@@ -4041,15 +4038,15 @@
4041
4038
  .map(function (name) { return "{".concat(name, "}"); })
4042
4039
  .join(', '), "\n\n ").concat(block(pipelineIdentification), "\n\n "); }));
4043
4040
  }
4044
- _b = (_a = Object).freeze;
4045
- _c = [{}];
4041
+ _c = (_b = Object).freeze;
4042
+ _d = [{}];
4046
4043
  return [4 /*yield*/, getReservedParametersForTemplate({
4047
4044
  preparedPipeline: preparedPipeline,
4048
4045
  template: currentTemplate,
4049
4046
  pipelineIdentification: pipelineIdentification,
4050
4047
  })];
4051
4048
  case 2:
4052
- definedParameters = _b.apply(_a, [__assign.apply(void 0, [__assign.apply(void 0, _c.concat([(_h.sent())])), parametersToPass])]);
4049
+ definedParameters = _c.apply(_b, [__assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), parametersToPass])]);
4053
4050
  definedParameterNames = new Set(Object.keys(definedParameters));
4054
4051
  parameters = {};
4055
4052
  _loop_1 = function (parameterName) {
@@ -4069,15 +4066,15 @@
4069
4066
  try {
4070
4067
  // Note: [2] Check that all used parameters are defined and removing unused parameters for this template
4071
4068
  // TODO: [👩🏾‍🤝‍👩🏻] Use here `mapAvailableToExpectedParameters`
4072
- for (_d = __values(Array.from(union(definedParameterNames, usedParameterNames, dependentParameterNames))), _e = _d.next(); !_e.done; _e = _d.next()) {
4073
- parameterName = _e.value;
4069
+ for (_e = __values(Array.from(union(definedParameterNames, usedParameterNames, dependentParameterNames))), _f = _e.next(); !_f.done; _f = _e.next()) {
4070
+ parameterName = _f.value;
4074
4071
  _loop_1(parameterName);
4075
4072
  }
4076
4073
  }
4077
4074
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
4078
4075
  finally {
4079
4076
  try {
4080
- if (_e && !_e.done && (_f = _d.return)) _f.call(_d);
4077
+ if (_f && !_f.done && (_g = _e.return)) _g.call(_e);
4081
4078
  }
4082
4079
  finally { if (e_1) throw e_1.error; }
4083
4080
  }
@@ -4097,12 +4094,11 @@
4097
4094
  template: currentTemplate,
4098
4095
  preparedPipeline: preparedPipeline,
4099
4096
  tools: tools,
4100
- settings: settings,
4101
4097
  $executionReport: $executionReport,
4102
4098
  pipelineIdentification: pipelineIdentification,
4103
4099
  })];
4104
4100
  case 3:
4105
- resultString = _h.sent();
4101
+ resultString = _j.sent();
4106
4102
  return [4 /*yield*/, onProgress({
4107
4103
  name: name,
4108
4104
  title: title,
@@ -4114,12 +4110,12 @@
4114
4110
  // <- [🍸]
4115
4111
  })];
4116
4112
  case 4:
4117
- _h.sent();
4118
- return [2 /*return*/, Object.freeze((_g = {},
4119
- _g[currentTemplate.resultingParameterName] =
4113
+ _j.sent();
4114
+ return [2 /*return*/, Object.freeze((_h = {},
4115
+ _h[currentTemplate.resultingParameterName] =
4120
4116
  // <- Note: [👩‍👩‍👧] No need to detect parameter collision here because pipeline checks logic consistency during construction
4121
4117
  resultString,
4122
- _g))];
4118
+ _h))];
4123
4119
  }
4124
4120
  });
4125
4121
  });
@@ -4178,13 +4174,12 @@
4178
4174
  */
4179
4175
  function executePipeline(options) {
4180
4176
  return __awaiter(this, void 0, void 0, function () {
4181
- var inputParameters, tools, onProgress, pipeline, setPreparedPipeline, pipelineIdentification, settings, maxParallelCount, rootDirname, _a, isVerbose, preparedPipeline, errors, warnings, executionReport, isReturned, _b, _c, parameter, e_1_1, _loop_1, _d, _e, parameterName, state_1, e_2_1, parametersToPass, resovedParameterNames_1, unresovedTemplates_1, resolving_1, loopLimit, _loop_2, error_1, usage_1, outputParameters_1, usage, outputParameters;
4177
+ var inputParameters, tools, onProgress, pipeline, setPreparedPipeline, pipelineIdentification, maxParallelCount, rootDirname, _a, isVerbose, preparedPipeline, errors, warnings, executionReport, isReturned, _b, _c, parameter, e_1_1, _loop_1, _d, _e, parameterName, state_1, e_2_1, parametersToPass, resovedParameterNames_1, unresovedTemplates_1, resolving_1, loopLimit, _loop_2, error_1, usage_1, outputParameters_1, usage, outputParameters;
4182
4178
  var e_1, _f, e_2, _g;
4183
4179
  return __generator(this, function (_h) {
4184
4180
  switch (_h.label) {
4185
4181
  case 0:
4186
- inputParameters = options.inputParameters, tools = options.tools, onProgress = options.onProgress, pipeline = options.pipeline, setPreparedPipeline = options.setPreparedPipeline, pipelineIdentification = options.pipelineIdentification, settings = options.settings;
4187
- maxParallelCount = settings.maxParallelCount, rootDirname = settings.rootDirname, _a = settings.isVerbose, isVerbose = _a === void 0 ? IS_VERBOSE : _a;
4182
+ inputParameters = options.inputParameters, tools = options.tools, onProgress = options.onProgress, pipeline = options.pipeline, setPreparedPipeline = options.setPreparedPipeline, pipelineIdentification = options.pipelineIdentification, maxParallelCount = options.maxParallelCount, rootDirname = options.rootDirname, _a = options.isVerbose, isVerbose = _a === void 0 ? DEFAULT_IS_VERBOSE : _a;
4188
4183
  preparedPipeline = options.preparedPipeline;
4189
4184
  if (!(preparedPipeline === undefined)) return [3 /*break*/, 2];
4190
4185
  return [4 /*yield*/, preparePipeline(pipeline, tools, {
@@ -4369,12 +4364,7 @@
4369
4364
  return [3 /*break*/, 4];
4370
4365
  case 3:
4371
4366
  unresovedTemplates_1 = unresovedTemplates_1.filter(function (template) { return template !== currentTemplate; });
4372
- work_1 = executeTemplate({
4373
- currentTemplate: currentTemplate,
4374
- preparedPipeline: preparedPipeline,
4375
- parametersToPass: parametersToPass,
4376
- tools: tools,
4377
- onProgress: function (progress) {
4367
+ work_1 = executeTemplate(__assign(__assign({}, options), { currentTemplate: currentTemplate, preparedPipeline: preparedPipeline, parametersToPass: parametersToPass, tools: tools, onProgress: function (progress) {
4378
4368
  if (isReturned) {
4379
4369
  throw new UnexpectedError(spaceTrim.spaceTrim(function (block) { return "\n Can not call `onProgress` after pipeline execution is finished\n\n ".concat(block(pipelineIdentification), "\n\n ").concat(block(JSON.stringify(progress, null, 4)
4380
4370
  .split('\n')
@@ -4384,11 +4374,7 @@
4384
4374
  if (onProgress) {
4385
4375
  onProgress(progress);
4386
4376
  }
4387
- },
4388
- settings: settings,
4389
- $executionReport: executionReport,
4390
- pipelineIdentification: spaceTrim.spaceTrim(function (block) { return "\n ".concat(block(pipelineIdentification), "\n Template name: ").concat(currentTemplate.name, "\n Template title: ").concat(currentTemplate.title, "\n "); }),
4391
- })
4377
+ }, $executionReport: executionReport, pipelineIdentification: spaceTrim.spaceTrim(function (block) { return "\n ".concat(block(pipelineIdentification), "\n Template name: ").concat(currentTemplate.name, "\n Template title: ").concat(currentTemplate.title, "\n "); }) }))
4392
4378
  .then(function (newParametersToPass) {
4393
4379
  parametersToPass = __assign(__assign({}, newParametersToPass), parametersToPass);
4394
4380
  resovedParameterNames_1 = __spreadArray(__spreadArray([], __read(resovedParameterNames_1), false), [currentTemplate.resultingParameterName], false);
@@ -4492,8 +4478,7 @@
4492
4478
  */
4493
4479
  function createPipelineExecutor(options) {
4494
4480
  var _this = this;
4495
- var pipeline = options.pipeline, tools = options.tools, _a = options.settings, settings = _a === void 0 ? {} : _a;
4496
- 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, _g = settings.rootDirname, rootDirname = _g === void 0 ? null : _g;
4481
+ var pipeline = options.pipeline, tools = options.tools, _a = options.maxExecutionAttempts, maxExecutionAttempts = _a === void 0 ? DEFAULT_MAX_EXECUTION_ATTEMPTS : _a, _b = options.maxParallelCount, maxParallelCount = _b === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _b, _c = options.csvSettings, csvSettings = _c === void 0 ? DEFAULT_CSV_SETTINGS : _c, _d = options.isVerbose, isVerbose = _d === void 0 ? DEFAULT_IS_VERBOSE : _d, _e = options.isNotPreparedWarningSupressed, isNotPreparedWarningSupressed = _e === void 0 ? false : _e, _f = options.rootDirname, rootDirname = _f === void 0 ? null : _f;
4497
4482
  validatePipeline(pipeline);
4498
4483
  var pipelineIdentification = (function () {
4499
4484
  // Note: This is a 😐 implementation of [🚞]
@@ -4527,14 +4512,12 @@
4527
4512
  tools: tools,
4528
4513
  onProgress: onProgress,
4529
4514
  pipelineIdentification: spaceTrim.spaceTrim(function (block) { return "\n ".concat(block(pipelineIdentification), "\n ").concat(runCount === 1 ? '' : "Run #".concat(runCount), "\n "); }),
4530
- settings: {
4531
- maxExecutionAttempts: maxExecutionAttempts,
4532
- maxParallelCount: maxParallelCount,
4533
- csvSettings: csvSettings,
4534
- isVerbose: isVerbose,
4535
- isNotPreparedWarningSupressed: isNotPreparedWarningSupressed,
4536
- rootDirname: rootDirname,
4537
- },
4515
+ maxExecutionAttempts: maxExecutionAttempts,
4516
+ maxParallelCount: maxParallelCount,
4517
+ csvSettings: csvSettings,
4518
+ isVerbose: isVerbose,
4519
+ isNotPreparedWarningSupressed: isNotPreparedWarningSupressed,
4520
+ rootDirname: rootDirname,
4538
4521
  })];
4539
4522
  });
4540
4523
  }); };
@@ -4557,7 +4540,7 @@
4557
4540
  return __generator(this, function (_d) {
4558
4541
  switch (_d.label) {
4559
4542
  case 0:
4560
- _a = options.isVerbose, isVerbose = _a === void 0 ? IS_VERBOSE : _a;
4543
+ _a = options.isVerbose, isVerbose = _a === void 0 ? DEFAULT_IS_VERBOSE : _a;
4561
4544
  if (tools === undefined || tools.llm === undefined) {
4562
4545
  throw new MissingToolsError('LLM tools are required for preparing persona');
4563
4546
  }
@@ -4739,7 +4722,7 @@
4739
4722
  this.storage = globalScope[storageName];
4740
4723
  }
4741
4724
  $Register.prototype.list = function () {
4742
- // <- TODO: ReadonlyDeep<Array<TRegistered>>
4725
+ // <- TODO: ReadonlyDeep<ReadonlyArray<TRegistered>>
4743
4726
  return this.storage;
4744
4727
  };
4745
4728
  $Register.prototype.register = function (registered) {
@@ -4791,7 +4774,7 @@
4791
4774
  * TODO: [®] DRY Register logic
4792
4775
  */
4793
4776
 
4794
- // TODO: !!!!!! Maybe delete this function
4777
+ // TODO: !!!!!!last - Maybe delete this function
4795
4778
  /**
4796
4779
  * Creates a message with all registered scrapers
4797
4780
  *
@@ -4958,7 +4941,6 @@
4958
4941
  * @private within the repository
4959
4942
  */
4960
4943
  function sourceContentToName(sourceContent) {
4961
- // TODO: !!!!!! Better name for source than gibberish hash
4962
4944
  var hash = cryptoJs.SHA256(hexEncoder__default["default"].parse(JSON.stringify(sourceContent)))
4963
4945
  // <- TODO: [🥬] Encapsulate sha256 to some private utility function
4964
4946
  .toString( /* hex */)
@@ -5071,7 +5053,7 @@
5071
5053
  case 0:
5072
5054
  sourceContent = knowledgeSource.sourceContent;
5073
5055
  name = knowledgeSource.name;
5074
- _b = options || {}, _c = _b.rootDirname, rootDirname = _c === void 0 ? null : _c, _d = _b.isVerbose, isVerbose = _d === void 0 ? IS_VERBOSE : _d;
5056
+ _b = options || {}, _c = _b.rootDirname, rootDirname = _c === void 0 ? null : _c, _d = _b.isVerbose, isVerbose = _d === void 0 ? DEFAULT_IS_VERBOSE : _d;
5075
5057
  TODO_USE(isVerbose);
5076
5058
  if (!name) {
5077
5059
  name = sourceContentToName(sourceContent);
@@ -5161,7 +5143,7 @@
5161
5143
  content = _a.sent();
5162
5144
  return [2 /*return*/, new Blob([
5163
5145
  content,
5164
- // <- TODO: !!!!!! Maybe not working
5146
+ // <- TODO: !!!!!! Test that this is working
5165
5147
  ], { type: mimeType_1 })];
5166
5148
  }
5167
5149
  });
@@ -5224,7 +5206,7 @@
5224
5206
  return __generator(this, function (_c) {
5225
5207
  switch (_c.label) {
5226
5208
  case 0:
5227
- _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? MAX_PARALLEL_COUNT : _a, rootDirname = options.rootDirname, _b = options.isVerbose, isVerbose = _b === void 0 ? IS_VERBOSE : _b;
5209
+ _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _a, rootDirname = options.rootDirname, _b = options.isVerbose, isVerbose = _b === void 0 ? DEFAULT_IS_VERBOSE : _b;
5228
5210
  knowledgePreparedUnflatten = new Array(knowledgeSources.length);
5229
5211
  return [4 /*yield*/, forEachAsync(knowledgeSources, { maxParallelCount: maxParallelCount }, function (knowledgeSource, index) { return __awaiter(_this, void 0, void 0, function () {
5230
5212
  var partialPieces, sourceHandler, _a, _b, scraper, partialPiecesUnchecked, e_1_1, pieces;
@@ -5253,7 +5235,8 @@
5253
5235
  case 4:
5254
5236
  partialPiecesUnchecked = _d.sent();
5255
5237
  if (partialPiecesUnchecked !== null) {
5256
- partialPieces = partialPiecesUnchecked;
5238
+ partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
5239
+ // <- TODO: [🪓] Here should be no need for spreading new array, just `partialPieces = partialPiecesUnchecked`
5257
5240
  return [3 /*break*/, 6];
5258
5241
  }
5259
5242
  _d.label = 5;
@@ -5301,7 +5284,7 @@
5301
5284
  > /**
5302
5285
  > * Unprepared knowledge
5303
5286
  > * /
5304
- > readonly knowledgeSources: Array<KnowledgeSourceJson>;
5287
+ > readonly knowledgeSources: ReadonlyArray<KnowledgeSourceJson>;
5305
5288
  > };
5306
5289
  >
5307
5290
  > export async function prepareKnowledgePieces(
@@ -5359,7 +5342,7 @@
5359
5342
  return __generator(this, function (_b) {
5360
5343
  switch (_b.label) {
5361
5344
  case 0:
5362
- _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? MAX_PARALLEL_COUNT : _a;
5345
+ _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _a;
5363
5346
  templates = pipeline.templates, parameters = pipeline.parameters, knowledgePiecesCount = pipeline.knowledgePiecesCount;
5364
5347
  // TODO: [main] !!!!! Apply samples to each template (if missing and is for the template defined)
5365
5348
  TODO_USE(parameters);
@@ -5421,7 +5404,7 @@
5421
5404
  if (isPipelinePrepared(pipeline)) {
5422
5405
  return [2 /*return*/, pipeline];
5423
5406
  }
5424
- rootDirname = options.rootDirname, _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? MAX_PARALLEL_COUNT : _a, _b = options.isVerbose, isVerbose = _b === void 0 ? IS_VERBOSE : _b;
5407
+ rootDirname = options.rootDirname, _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _a, _b = options.isVerbose, isVerbose = _b === void 0 ? DEFAULT_IS_VERBOSE : _b;
5425
5408
  parameters = pipeline.parameters, templates = pipeline.templates, knowledgeSources = pipeline.knowledgeSources, personas = pipeline.personas;
5426
5409
  if (tools === undefined || tools.llm === undefined) {
5427
5410
  throw new MissingToolsError('LLM tools are required for preparing the pipeline');
@@ -5479,7 +5462,9 @@
5479
5462
  // ----- /Templates preparation -----
5480
5463
  // Note: Count total usage
5481
5464
  currentPreparation.usage = llmToolsWithUsage.getTotalUsage();
5482
- return [2 /*return*/, $asDeeplyFrozenSerializableJson('Prepared PipelineJson', __assign(__assign({}, clonePipeline(pipeline)), { templates: templatesPrepared, knowledgeSources: knowledgeSourcesPrepared, knowledgePieces: knowledgePiecesPrepared, personas: preparedPersonas, preparations: preparations }))];
5465
+ return [2 /*return*/, $asDeeplyFrozenSerializableJson('Prepared PipelineJson', __assign(__assign({}, clonePipeline(pipeline)), { templates: __spreadArray([], __read(templatesPrepared), false),
5466
+ // <- TODO: [🪓] Here should be no need for spreading new array, just ` templates: templatesPrepared`
5467
+ knowledgeSources: knowledgeSourcesPrepared, knowledgePieces: knowledgePiecesPrepared, personas: preparedPersonas, preparations: __spreadArray([], __read(preparations), false) }))];
5483
5468
  }
5484
5469
  });
5485
5470
  });
@@ -8412,7 +8397,7 @@
8412
8397
  */
8413
8398
  function createLlmToolsFromConfiguration(configuration, options) {
8414
8399
  if (options === void 0) { options = {}; }
8415
- var _a = options.isVerbose, isVerbose = _a === void 0 ? IS_VERBOSE : _a;
8400
+ var _a = options.isVerbose, isVerbose = _a === void 0 ? DEFAULT_IS_VERBOSE : _a, userId = options.userId;
8416
8401
  var llmTools = configuration.map(function (llmConfiguration) {
8417
8402
  var registeredItem = $llmToolsRegister
8418
8403
  .list()
@@ -8423,7 +8408,7 @@
8423
8408
  if (registeredItem === undefined) {
8424
8409
  throw new Error(spaceTrim__default["default"](function (block) { return "\n There is no constructor for LLM provider `".concat(llmConfiguration.className, "` from `").concat(llmConfiguration.packageName, "`\n\n You have probably forgotten install and import the provider package.\n To fix this issue, you can:\n\n Install:\n\n > npm install ").concat(llmConfiguration.packageName, "\n\n And import:\n\n > import '").concat(llmConfiguration.packageName, "';\n\n\n ").concat(block($registeredLlmToolsMessage()), "\n "); }));
8425
8410
  }
8426
- return registeredItem(__assign({ isVerbose: isVerbose }, llmConfiguration.options));
8411
+ return registeredItem(__assign({ isVerbose: isVerbose, userId: userId }, llmConfiguration.options));
8427
8412
  });
8428
8413
  return joinLlmExecutionTools.apply(void 0, __spreadArray([], __read(llmTools), false));
8429
8414
  }
@@ -8473,6 +8458,34 @@
8473
8458
  * TODO: [®] DRY Register logic
8474
8459
  */
8475
8460
 
8461
+ /**
8462
+ * @@@
8463
+ *
8464
+ * @public exported from `@promptbook/node`
8465
+ */
8466
+ function $provideExecutablesForNode(options) {
8467
+ return __awaiter(this, void 0, void 0, function () {
8468
+ var _a, _b, isAutoInstalled, _c, isVerbose;
8469
+ return __generator(this, function (_d) {
8470
+ if (!$isRunningInNode()) {
8471
+ throw new EnvironmentMismatchError('Function `$getScrapersForNode` works only in Node.js environment');
8472
+ }
8473
+ _a = options || {}, _b = _a.isAutoInstalled, isAutoInstalled = _b === void 0 ? DEFAULT_IS_AUTO_INSTALLED : _b, _c = _a.isVerbose, isVerbose = _c === void 0 ? DEFAULT_IS_VERBOSE : _c;
8474
+ TODO_USE(isAutoInstalled);
8475
+ TODO_USE(isVerbose);
8476
+ return [2 /*return*/, {
8477
+ // TODO: !!!!!! use `locate-app` library here
8478
+ pandocPath: 'C:/Users/me/AppData/Local/Pandoc/pandoc.exe',
8479
+ libreOfficePath: 'C:/Program Files/LibreOffice/program/swriter.exe',
8480
+ }];
8481
+ });
8482
+ });
8483
+ }
8484
+ /**
8485
+ * TODO: [🧠] THis should be maybe in different folder
8486
+ * Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
8487
+ */
8488
+
8476
8489
  /**
8477
8490
  * @@@
8478
8491
  *
@@ -8482,7 +8495,7 @@
8482
8495
  if (!$isRunningInNode()) {
8483
8496
  throw new EnvironmentMismatchError('Function `$provideFilesystemForNode` works only in Node.js environment');
8484
8497
  }
8485
- var _a = (options || {}).isVerbose, isVerbose = _a === void 0 ? IS_VERBOSE : _a;
8498
+ var _a = (options || {}).isVerbose, isVerbose = _a === void 0 ? DEFAULT_IS_VERBOSE : _a;
8486
8499
  TODO_USE(isVerbose);
8487
8500
  return {
8488
8501
  stat: promises.stat,
@@ -8497,7 +8510,7 @@
8497
8510
  */
8498
8511
 
8499
8512
  /**
8500
- * !!!!!!
8513
+ * @@@
8501
8514
  *
8502
8515
  * 1) @@@
8503
8516
  * 2) @@@
@@ -8514,7 +8527,7 @@
8514
8527
  if (!$isRunningInNode()) {
8515
8528
  throw new EnvironmentMismatchError('Function `$getScrapersForNode` works only in Node.js environment');
8516
8529
  }
8517
- _a = options || {}, _b = _a.isAutoInstalled, isAutoInstalled = _b === void 0 ? IS_AUTO_INSTALLED : _b, _c = _a.isVerbose, isVerbose = _c === void 0 ? IS_VERBOSE : _c;
8530
+ _a = options || {}, _b = _a.isAutoInstalled, isAutoInstalled = _b === void 0 ? DEFAULT_IS_AUTO_INSTALLED : _b, _c = _a.isVerbose, isVerbose = _c === void 0 ? DEFAULT_IS_VERBOSE : _c;
8518
8531
  TODO_USE(isAutoInstalled);
8519
8532
  TODO_USE(isVerbose);
8520
8533
  scrapers = [];
@@ -9008,7 +9021,7 @@
9008
9021
  */
9009
9022
  function $provideExecutionToolsForNode(options) {
9010
9023
  return __awaiter(this, void 0, void 0, function () {
9011
- var fs, llm, tools;
9024
+ var fs, llm, executables, tools;
9012
9025
  var _a;
9013
9026
  return __generator(this, function (_b) {
9014
9027
  switch (_b.label) {
@@ -9018,12 +9031,16 @@
9018
9031
  }
9019
9032
  fs = $provideFilesystemForNode();
9020
9033
  llm = $provideLlmToolsFromEnv(options);
9034
+ return [4 /*yield*/, $provideExecutablesForNode(options)];
9035
+ case 1:
9036
+ executables = _b.sent();
9021
9037
  _a = {
9022
9038
  llm: llm,
9023
- fs: fs
9039
+ fs: fs,
9040
+ executables: executables
9024
9041
  };
9025
- return [4 /*yield*/, $provideScrapersForNode({ fs: fs, llm: llm }, options)];
9026
- case 1:
9042
+ return [4 /*yield*/, $provideScrapersForNode({ fs: fs, llm: llm, executables: executables }, options)];
9043
+ case 2:
9027
9044
  tools = (_a.scrapers = _b.sent(),
9028
9045
  _a.script = [new JavascriptExecutionTools(options)],
9029
9046
  _a);
@@ -9261,7 +9278,9 @@
9261
9278
  throw new EnvironmentMismatchError('Can not create collection without filesystem tools');
9262
9279
  // <- TODO: [🧠] What is the best error type here`
9263
9280
  }
9264
- makedLibraryFilePath = path.join(path$1, "".concat(PIPELINE_COLLECTION_BASE_FILENAME, ".json"));
9281
+ makedLibraryFilePath = path.join(path$1, "".concat(DEFAULT_PIPELINE_COLLECTION_BASE_FILENAME
9282
+ // <- TODO: [🦒] Allow to override (pass different value into the function)
9283
+ , ".json"));
9265
9284
  return [4 /*yield*/, isFileExisting(makedLibraryFilePath, tools.fs)];
9266
9285
  case 3:
9267
9286
  if (!(_f.sent())) {
@@ -9272,7 +9291,7 @@
9272
9291
  // TODO: !! Implement;
9273
9292
  // TODO: [🌗]
9274
9293
  }
9275
- _a = options || {}, _b = _a.isRecursive, isRecursive = _b === void 0 ? true : _b, _c = _a.isVerbose, isVerbose = _c === void 0 ? IS_VERBOSE : _c, _d = _a.isLazyLoaded, isLazyLoaded = _d === void 0 ? false : _d, _e = _a.isCrashedOnError, isCrashedOnError = _e === void 0 ? true : _e;
9294
+ _a = options || {}, _b = _a.isRecursive, isRecursive = _b === void 0 ? true : _b, _c = _a.isVerbose, isVerbose = _c === void 0 ? DEFAULT_IS_VERBOSE : _c, _d = _a.isLazyLoaded, isLazyLoaded = _d === void 0 ? false : _d, _e = _a.isCrashedOnError, isCrashedOnError = _e === void 0 ? true : _e;
9276
9295
  collection = createCollectionFromPromise(function () { return __awaiter(_this, void 0, void 0, function () {
9277
9296
  var fileNames, collection, _loop_1, fileNames_1, fileNames_1_1, fileName, e_1_1;
9278
9297
  var e_1, _a;
@@ -9804,6 +9823,7 @@
9804
9823
 
9805
9824
  exports.$execCommand = $execCommand;
9806
9825
  exports.$execCommands = $execCommands;
9826
+ exports.$provideExecutablesForNode = $provideExecutablesForNode;
9807
9827
  exports.$provideExecutionToolsForNode = $provideExecutionToolsForNode;
9808
9828
  exports.$provideFilesystemForNode = $provideFilesystemForNode;
9809
9829
  exports.$provideLlmToolsConfigurationFromEnv = $provideLlmToolsConfigurationFromEnv;