@promptbook/markitdown 0.103.0-42 → 0.103.0-44

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 (92) hide show
  1. package/README.md +6 -18
  2. package/esm/index.es.js +47 -114
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +6 -0
  5. package/esm/typings/src/_packages/node.index.d.ts +0 -2
  6. package/esm/typings/src/_packages/types.index.d.ts +22 -0
  7. package/esm/typings/src/_packages/utils.index.d.ts +2 -0
  8. package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +2 -4
  9. package/esm/typings/src/book-2.0/agent-source/padBook.d.ts +1 -1
  10. package/esm/typings/src/book-2.0/agent-source/string_book.d.ts +1 -0
  11. package/esm/typings/src/book-components/AvatarProfile/AvatarProfile/AvatarProfile.d.ts +6 -1
  12. package/esm/typings/src/book-components/BookEditor/BookEditor.d.ts +1 -1
  13. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +1 -1
  14. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  15. package/esm/typings/src/book-components/Qr/BrandedQrCode.d.ts +1 -1
  16. package/esm/typings/src/book-components/Qr/useQrCode.d.ts +1 -1
  17. package/esm/typings/src/cli/cli-commands/_boilerplate.d.ts +1 -1
  18. package/esm/typings/src/cli/cli-commands/about.d.ts +1 -1
  19. package/esm/typings/src/cli/cli-commands/hello.d.ts +1 -1
  20. package/esm/typings/src/cli/cli-commands/list-models.d.ts +1 -1
  21. package/esm/typings/src/cli/cli-commands/list-scrapers.d.ts +1 -1
  22. package/esm/typings/src/cli/cli-commands/login.d.ts +1 -1
  23. package/esm/typings/src/cli/cli-commands/make.d.ts +1 -1
  24. package/esm/typings/src/cli/cli-commands/prettify.d.ts +1 -1
  25. package/esm/typings/src/cli/cli-commands/run.d.ts +1 -1
  26. package/esm/typings/src/cli/cli-commands/start-agents-server.d.ts +1 -1
  27. package/esm/typings/src/cli/cli-commands/start-pipelines-server.d.ts +1 -1
  28. package/esm/typings/src/cli/cli-commands/test-command.d.ts +1 -1
  29. package/esm/typings/src/cli/common/$addGlobalOptionsToCommand.d.ts +1 -1
  30. package/esm/typings/src/collection/agent-collection/AgentCollection.d.ts +2 -29
  31. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +107 -0
  32. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentsDatabaseSchema.d.ts +129 -0
  33. package/esm/typings/src/commands/_common/types/CommandParser.d.ts +1 -1
  34. package/esm/typings/src/config.d.ts +1 -1
  35. package/esm/typings/src/errors/0-index.d.ts +3 -0
  36. package/esm/typings/src/errors/DatabaseError.d.ts +12 -0
  37. package/esm/typings/src/execution/createPipelineExecutor/40-executeAttempts.d.ts +1 -1
  38. package/esm/typings/src/high-level-abstractions/_common/HighLevelAbstraction.d.ts +1 -1
  39. package/esm/typings/src/llm-providers/_common/register/$registeredLlmToolsMessage.d.ts +1 -1
  40. package/esm/typings/src/llm-providers/_common/register/LlmToolsMetadata.d.ts +1 -1
  41. package/esm/typings/src/llm-providers/_multiple/getSingleLlmExecutionTools.d.ts +1 -0
  42. package/esm/typings/src/llm-providers/_multiple/joinLlmExecutionTools.d.ts +1 -0
  43. package/esm/typings/src/llm-providers/agent/Agent.d.ts +5 -2
  44. package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +1 -1
  45. package/esm/typings/src/llm-providers/agent/AgentOptions.d.ts +4 -2
  46. package/esm/typings/src/llm-providers/agent/CreateAgentLlmExecutionToolsOptions.d.ts +4 -3
  47. package/esm/typings/src/llm-providers/agent/createAgentLlmExecutionTools.d.ts +1 -1
  48. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  49. package/esm/typings/src/llm-providers/google/google-models.d.ts +1 -1
  50. package/esm/typings/src/llm-providers/openai/openai-models.d.ts +1 -1
  51. package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +1 -0
  52. package/esm/typings/src/remote-server/startAgentServer.d.ts +2 -2
  53. package/esm/typings/src/remote-server/types/RemoteServerOptions.d.ts +0 -19
  54. package/esm/typings/src/storage/env-storage/$EnvStorage.d.ts +1 -1
  55. package/esm/typings/src/transpilers/_common/BookTranspiler.d.ts +5 -1
  56. package/esm/typings/src/transpilers/_common/BookTranspilerOptions.d.ts +1 -1
  57. package/esm/typings/src/transpilers/_common/register/$bookTranspilersRegister.d.ts +1 -1
  58. package/esm/typings/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.d.ts +4 -1
  59. package/esm/typings/src/transpilers/formatted-book-in-markdown/register.d.ts +1 -1
  60. package/esm/typings/src/transpilers/openai-sdk/OpenAiSdkTranspiler.d.ts +4 -1
  61. package/esm/typings/src/transpilers/openai-sdk/register.d.ts +1 -1
  62. package/esm/typings/src/types/typeAliases.d.ts +19 -1
  63. package/esm/typings/src/utils/color/$randomColor.d.ts +1 -0
  64. package/esm/typings/src/utils/color/operators/darken.d.ts +1 -1
  65. package/esm/typings/src/utils/color/operators/grayscale.d.ts +1 -1
  66. package/esm/typings/src/utils/color/operators/lighten.d.ts +1 -1
  67. package/esm/typings/src/utils/color/operators/mixWithColor.d.ts +1 -1
  68. package/esm/typings/src/utils/color/operators/saturate.d.ts +1 -1
  69. package/esm/typings/src/utils/environment/$detectRuntimeEnvironment.d.ts +16 -0
  70. package/esm/typings/src/utils/execCommand/$execCommand.d.ts +1 -1
  71. package/esm/typings/src/utils/execCommand/$execCommands.d.ts +1 -1
  72. package/esm/typings/src/utils/files/$induceBookDownload.d.ts +2 -2
  73. package/esm/typings/src/utils/files/$induceFileDownload.d.ts +2 -2
  74. package/esm/typings/src/utils/files/ObjectUrl.d.ts +1 -1
  75. package/esm/typings/src/utils/misc/aboutPromptbookInformation.d.ts +6 -0
  76. package/esm/typings/src/utils/organization/$side_effect.d.ts +1 -1
  77. package/esm/typings/src/utils/random/$generateBookBoilerplate.d.ts +25 -0
  78. package/esm/typings/src/utils/random/$randomAgentPersona.d.ts +9 -0
  79. package/esm/typings/src/utils/random/$randomFullnameWithColor.d.ts +13 -0
  80. package/esm/typings/src/utils/random/$randomItem.d.ts +9 -0
  81. package/esm/typings/src/utils/random/$randomSeed.d.ts +3 -0
  82. package/esm/typings/src/utils/random/$randomToken.d.ts +2 -0
  83. package/esm/typings/src/utils/serialization/$deepFreeze.d.ts +1 -1
  84. package/esm/typings/src/utils/serialization/serializeToPromptbookJavascript.d.ts +2 -2
  85. package/esm/typings/src/version.d.ts +1 -1
  86. package/package.json +2 -2
  87. package/umd/index.umd.js +47 -114
  88. package/umd/index.umd.js.map +1 -1
  89. package/esm/typings/src/collection/agent-collection/constructors/AgentCollectionInDirectory.d.ts +0 -89
  90. package/esm/typings/src/collection/agent-collection/constructors/AgentCollectionInDirectory.test.d.ts +0 -1
  91. package/esm/typings/src/commands/_common/parseCommand.test.d.ts +0 -1
  92. package/esm/typings/src/execution/utils/logLlmCall.d.ts +0 -8
package/README.md CHANGED
@@ -9,8 +9,8 @@ Turn your company's scattered knowledge into AI ready Books
9
9
 
10
10
 
11
11
 
12
- [![NPM Version of ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
- [![Quality of package ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
12
+ [![NPM Version of ![Promptbook logo](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
+ [![Quality of package ![Promptbook logo](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
14
14
  [![Known Vulnerabilities](https://snyk.io/test/github/webgptorg/promptbook/badge.svg)](https://snyk.io/test/github/webgptorg/promptbook)
15
15
  [![🧪 Test Books](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml)
16
16
  [![🧪 Test build](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml)
@@ -23,11 +23,7 @@ Turn your company's scattered knowledge into AI ready Books
23
23
 
24
24
  ## 🌟 New Features
25
25
 
26
- - 🚀 **GPT-5 Support** - Now includes OpenAI's most advanced language model with unprecedented reasoning capabilities and 200K context window
27
- - 💡 VS Code support for `.book` files with syntax highlighting and IntelliSense
28
- - 🐳 Official Docker image (`hejny/promptbook`) for seamless containerized usage
29
- - 🔥 Native support for OpenAI `o3-mini`, GPT-4 and other leading LLMs
30
- - 🔍 DeepSeek integration for advanced knowledge search
26
+ - **Gemini 3 Support**
31
27
 
32
28
 
33
29
 
@@ -116,7 +112,7 @@ Promptbook Engine will automatically enforce this knowledge during interactions.
116
112
  Your job is to provide legal advice and support to the company and its employees.<br/>
117
113
  You are knowledgeable, professional, and detail-oriented.<br/>
118
114
  <br/>
119
- **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
115
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
120
116
  **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
121
117
 
122
118
  </td></tr></table>
@@ -138,7 +134,7 @@ You are knowledgeable, professional, and detail-oriented.<br/>
138
134
  **RULE** Always ensure compliance with laws and regulations.<br/>
139
135
  **RULE** Never provide legal advice outside your area of expertise.<br/>
140
136
  **RULE** Never provide legal advice about criminal law.<br/>
141
- **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
137
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
142
138
  **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
143
139
 
144
140
  </td></tr></table>
@@ -158,7 +154,7 @@ You are knowledgeable, professional, and detail-oriented.<br/>
158
154
  **RULE** Always ensure compliance with laws and regulations.<br/>
159
155
  **RULE** Never provide legal advice outside your area of expertise.<br/>
160
156
  **RULE** Never provide legal advice about criminal law.<br/>
161
- **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
157
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
162
158
  **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
163
159
  **ACTION** When a user asks about an issue that could be treated as a crime, notify legal@company.com.<br/>
164
160
 
@@ -209,14 +205,10 @@ Now you want to use it. There are several ways how to write your first book:
209
205
 
210
206
  We have written ai asistant in book who can help you with writing your first book.
211
207
 
212
-
213
-
214
208
  #### Your AI twin
215
209
 
216
210
  Copy your own behavior, personality, and knowledge into book and create your AI twin. It can help you with your work, personal life, or any other task.
217
211
 
218
-
219
-
220
212
  #### AI persona workpool
221
213
 
222
214
  Or you can pick from our library of pre-written books for various roles and tasks. You can find books for customer support, coding, marketing, sales, HR, legal, and many other roles.
@@ -336,8 +328,6 @@ Join our growing community of developers and users:
336
328
 
337
329
 
338
330
 
339
-
340
-
341
331
  ## 📚 Documentation
342
332
 
343
333
  See detailed guides and API reference in the [docs](https://github.com/webgptorg/promptbook/discussions/categories/concepts) or [online](https://discord.gg/x3QWNaa89N).
@@ -414,8 +404,6 @@ The following glossary is used to clarify certain concepts:
414
404
 
415
405
  _Note: This section is not a complete dictionary, more list of general AI / LLM terms that has connection with Promptbook_
416
406
 
417
-
418
-
419
407
  ### 💯 Core concepts
420
408
 
421
409
  - [📚 Collection of pipelines](https://github.com/webgptorg/promptbook/discussions/65)
package/esm/index.es.js CHANGED
@@ -17,14 +17,14 @@ import { parse, unparse } from 'papaparse';
17
17
  * @generated
18
18
  * @see https://github.com/webgptorg/book
19
19
  */
20
- const BOOK_LANGUAGE_VERSION = '1.0.0';
20
+ const BOOK_LANGUAGE_VERSION = '2.0.0';
21
21
  /**
22
22
  * The version of the Promptbook engine
23
23
  *
24
24
  * @generated
25
25
  * @see https://github.com/webgptorg/promptbook
26
26
  */
27
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-42';
27
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0-44';
28
28
  /**
29
29
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
30
30
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -705,6 +705,23 @@ class Color {
705
705
  * TODO: Maybe connect with textures
706
706
  */
707
707
 
708
+ /**
709
+ * Makes color transformer which returns a grayscale version of the color
710
+ *
711
+ * @param amount from 0 to 1
712
+ *
713
+ * @public exported from `@promptbook/color`
714
+ */
715
+ function grayscale(amount) {
716
+ return ({ red, green, blue, alpha }) => {
717
+ const average = (red + green + blue) / 3;
718
+ red = Math.round(average * amount + red * (1 - amount));
719
+ green = Math.round(average * amount + green * (1 - amount));
720
+ blue = Math.round(average * amount + blue * (1 - amount));
721
+ return Color.fromValues(red, green, blue, alpha);
722
+ };
723
+ }
724
+
708
725
  /**
709
726
  * Converts HSL values to RGB values
710
727
  *
@@ -820,102 +837,6 @@ function lighten(amount) {
820
837
  * TODO: Maybe implement by mix+hsl
821
838
  */
822
839
 
823
- /**
824
- * Calculates distance between two colors
825
- *
826
- * @param color1 first color
827
- * @param color2 second color
828
- *
829
- * Note: This function is inefficient. Use colorDistanceSquared instead if possible.
830
- *
831
- * @public exported from `@promptbook/color`
832
- */
833
- /**
834
- * Calculates distance between two colors without square root
835
- *
836
- * @param color1 first color
837
- * @param color2 second color
838
- *
839
- * @public exported from `@promptbook/color`
840
- */
841
- function colorDistanceSquared(color1, color2) {
842
- const rmean = (color1.red + color2.red) / 2;
843
- const r = color1.red - color2.red;
844
- const g = color1.green - color2.green;
845
- const b = color1.blue - color2.blue;
846
- const weightR = 2 + rmean / 256;
847
- const weightG = 4.0;
848
- const weightB = 2 + (255 - rmean) / 256;
849
- const distance = weightR * r * r + weightG * g * g + weightB * b * b;
850
- return distance;
851
- }
852
-
853
- /**
854
- * Makes color transformer which finds the nearest color from the given list
855
- *
856
- * @param colors array of colors to choose from
857
- *
858
- * @public exported from `@promptbook/color`
859
- */
860
- function nearest(...colors) {
861
- return (color) => {
862
- const distances = colors.map((c) => colorDistanceSquared(c, color));
863
- const minDistance = Math.min(...distances);
864
- const minIndex = distances.indexOf(minDistance);
865
- const nearestColor = colors[minIndex];
866
- return nearestColor;
867
- };
868
- }
869
-
870
- /**
871
- * Color transformer which returns the negative color
872
- *
873
- * @public exported from `@promptbook/color`
874
- */
875
- function negative(color) {
876
- const r = 255 - color.red;
877
- const g = 255 - color.green;
878
- const b = 255 - color.blue;
879
- return Color.fromValues(r, g, b, color.alpha);
880
- }
881
-
882
- /**
883
- * Makes color transformer which finds the furthest color from the given list
884
- *
885
- * @param colors array of colors to choose from
886
- *
887
- * @public exported from `@promptbook/color`
888
- */
889
- function furthest(...colors) {
890
- return (color) => {
891
- const furthestColor = negative(nearest(...colors.map(negative))(color));
892
- return furthestColor;
893
- };
894
- }
895
- /**
896
- * Makes color transformer which finds the best text color (black or white) for the given background color
897
- *
898
- * @public exported from `@promptbook/color`
899
- */
900
- furthest(Color.get('white'), Color.from('black'));
901
-
902
- /**
903
- * Makes color transformer which returns a grayscale version of the color
904
- *
905
- * @param amount from 0 to 1
906
- *
907
- * @public exported from `@promptbook/color`
908
- */
909
- function grayscale(amount) {
910
- return ({ red, green, blue, alpha }) => {
911
- const average = (red + green + blue) / 3;
912
- red = Math.round(average * amount + red * (1 - amount));
913
- green = Math.round(average * amount + green * (1 - amount));
914
- blue = Math.round(average * amount + blue * (1 - amount));
915
- return Color.fromValues(red, green, blue, alpha);
916
- };
917
- }
918
-
919
840
  /**
920
841
  * Makes color transformer which saturate the given color
921
842
  *
@@ -3026,6 +2947,7 @@ class MissingToolsError extends Error {
3026
2947
  /**
3027
2948
  * Generates random token
3028
2949
  *
2950
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
3029
2951
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
3030
2952
  *
3031
2953
  * @private internal helper function
@@ -3035,6 +2957,7 @@ function $randomToken(randomness) {
3035
2957
  return randomBytes(randomness).toString('hex');
3036
2958
  }
3037
2959
  /**
2960
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
3038
2961
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
3039
2962
  */
3040
2963
 
@@ -3153,6 +3076,22 @@ class CollectionError extends Error {
3153
3076
  }
3154
3077
  }
3155
3078
 
3079
+ /**
3080
+ * This error indicates error from the database
3081
+ *
3082
+ * @public exported from `@promptbook/core`
3083
+ */
3084
+ class DatabaseError extends Error {
3085
+ constructor(message) {
3086
+ super(message);
3087
+ this.name = 'DatabaseError';
3088
+ Object.setPrototypeOf(this, DatabaseError.prototype);
3089
+ }
3090
+ }
3091
+ /**
3092
+ * TODO: !!!! Explain that NotFoundError (!!! and other specific errors) has priority over DatabaseError in some contexts
3093
+ */
3094
+
3156
3095
  /**
3157
3096
  * This error occurs when some expectation is not met in the execution of the pipeline
3158
3097
  *
@@ -3256,6 +3195,7 @@ const PROMPTBOOK_ERRORS = {
3256
3195
  UnexpectedError,
3257
3196
  WrappedError,
3258
3197
  NotAllowed,
3198
+ DatabaseError,
3259
3199
  // TODO: [🪑]> VersionMismatchError,
3260
3200
  };
3261
3201
  /**
@@ -4092,6 +4032,7 @@ function joinLlmExecutionTools(title, ...llmExecutionTools) {
4092
4032
  return new MultipleLlmExecutionTools(title || 'Multiple LLM Providers joined by `joinLlmExecutionTools`', ...llmExecutionTools);
4093
4033
  }
4094
4034
  /**
4035
+ * TODO: [🙆] `getSingleLlmExecutionTools` vs `joinLlmExecutionTools` - explain difference or pick one
4095
4036
  * TODO: [👷‍♂️] @@@ Manual about construction of llmTools
4096
4037
  */
4097
4038
 
@@ -4108,6 +4049,7 @@ function getSingleLlmExecutionTools(oneOrMoreLlmExecutionTools) {
4108
4049
  return llmTools;
4109
4050
  }
4110
4051
  /**
4052
+ * TODO: [🙆] `getSingleLlmExecutionTools` vs `joinLlmExecutionTools` - explain difference or pick one
4111
4053
  * TODO: [👷‍♂️] @@@ Manual about construction of llmTools
4112
4054
  */
4113
4055
 
@@ -5693,18 +5635,6 @@ function templateParameters(template, parameters) {
5693
5635
  return replacedTemplates;
5694
5636
  }
5695
5637
 
5696
- /**
5697
- * Logs an LLM call with the given report.
5698
- *
5699
- * @private internal utility of `createPipelineExecutor`
5700
- */
5701
- function logLlmCall(logLlmCall, report) {
5702
- logLlmCall({
5703
- modelName: 'model' /* <- TODO: How to get model name from the report */,
5704
- report,
5705
- });
5706
- }
5707
-
5708
5638
  /**
5709
5639
  * Extracts all code blocks from markdown.
5710
5640
  *
@@ -6050,7 +5980,7 @@ function validatePromptResult(options) {
6050
5980
  */
6051
5981
  async function executeAttempts(options) {
6052
5982
  const { jokerParameterNames, priority, maxAttempts, // <- Note: [💂]
6053
- preparedContent, parameters, task, preparedPipeline, tools, $executionReport, pipelineIdentification, maxExecutionAttempts, onProgress, logLlmCall: logLlmCall$1, } = options;
5983
+ preparedContent, parameters, task, preparedPipeline, tools, $executionReport, pipelineIdentification, maxExecutionAttempts, onProgress, logLlmCall, } = options;
6054
5984
  const $ongoingTaskResult = {
6055
5985
  $result: null,
6056
5986
  $resultString: null,
@@ -6312,8 +6242,11 @@ async function executeAttempts(options) {
6312
6242
  : serializeError($ongoingTaskResult.$expectError),
6313
6243
  };
6314
6244
  $executionReport.promptExecutions.push(executionPromptReport);
6315
- if (logLlmCall$1) {
6316
- logLlmCall(logLlmCall$1, executionPromptReport);
6245
+ if (logLlmCall) {
6246
+ logLlmCall({
6247
+ modelName: 'model' /* <- TODO: How to get model name from the report */,
6248
+ report: executionPromptReport,
6249
+ });
6317
6250
  }
6318
6251
  }
6319
6252
  }
@@ -6587,7 +6520,7 @@ async function getKnowledgeForTask(options) {
6587
6520
  },
6588
6521
  content: task.content,
6589
6522
  parameters,
6590
- };
6523
+ }; /* <- Note: [🤛] */
6591
6524
  const taskEmbeddingResult = await llmTools.callEmbeddingModel(taskEmbeddingPrompt);
6592
6525
  const knowledgePiecesWithRelevance = preparedPipeline.knowledgePieces.map((knowledgePiece) => {
6593
6526
  const { index } = knowledgePiece;