@promptbook/legacy-documents 0.72.0-9 → 0.73.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 (146) hide show
  1. package/README.md +36 -252
  2. package/esm/index.es.js +186 -170
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +24 -18
  5. package/esm/typings/src/_packages/node.index.d.ts +2 -0
  6. package/esm/typings/src/_packages/types.index.d.ts +18 -12
  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/TEMPLATE/TemplateTypes.d.ts +1 -1
  14. package/esm/typings/src/commands/_common/types/CommandParser.d.ts +5 -5
  15. package/esm/typings/src/config.d.ts +22 -15
  16. package/esm/typings/src/conversion/prettify/renderPipelineMermaidOptions.d.ts +3 -3
  17. package/esm/typings/src/conversion/utils/stringifyPipelineJson.d.ts +1 -1
  18. package/esm/typings/src/conversion/validation/_importPipeline.d.ts +1 -1
  19. package/esm/typings/src/conversion/validation/validatePipeline.d.ts +2 -2
  20. package/esm/typings/src/executables/$provideExecutablesForNode.d.ts +12 -0
  21. package/esm/typings/src/executables/apps/locateLibreoffice.d.ts +11 -0
  22. package/esm/typings/src/executables/apps/locatePandoc.d.ts +11 -0
  23. package/esm/typings/src/executables/locateApp.d.ts +33 -0
  24. package/esm/typings/src/executables/locateApp.test.d.ts +1 -0
  25. package/esm/typings/src/executables/platforms/locateAppOnLinux.d.ts +12 -0
  26. package/esm/typings/src/executables/platforms/locateAppOnMacOs.d.ts +12 -0
  27. package/esm/typings/src/executables/platforms/locateAppOnWindows.d.ts +12 -0
  28. package/esm/typings/src/execution/EmbeddingVector.d.ts +1 -1
  29. package/esm/typings/src/execution/Executables.d.ts +18 -0
  30. package/esm/typings/src/execution/ExecutionTools.d.ts +9 -3
  31. package/esm/typings/src/execution/FilesystemTools.d.ts +1 -1
  32. package/esm/typings/src/execution/LlmExecutionTools.d.ts +2 -2
  33. package/esm/typings/src/execution/PipelineExecutorResult.d.ts +2 -2
  34. package/esm/typings/src/execution/assertsExecutionSuccessful.d.ts +3 -2
  35. package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorOptions.d.ts +29 -6
  36. package/esm/typings/src/execution/createPipelineExecutor/10-executePipeline.d.ts +2 -11
  37. package/esm/typings/src/execution/createPipelineExecutor/20-executeTemplate.d.ts +4 -13
  38. package/esm/typings/src/execution/createPipelineExecutor/40-executeAttempts.d.ts +9 -14
  39. package/esm/typings/src/execution/createPipelineExecutor/{getSamplesForTemplate.d.ts → getExamplesForTemplate.d.ts} +1 -1
  40. package/esm/typings/src/execution/translation/automatic-translate/automatic-translators/LindatAutomaticTranslator.d.ts +11 -3
  41. package/esm/typings/src/execution/utils/addUsage.d.ts +1 -1
  42. package/esm/typings/src/execution/utils/forEachAsync.d.ts +1 -1
  43. package/esm/typings/src/formats/_common/FormatDefinition.d.ts +4 -4
  44. package/esm/typings/src/formats/_common/FormatSubvalueDefinition.d.ts +3 -3
  45. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForCli.d.ts +2 -2
  46. package/esm/typings/src/llm-providers/_common/register/LlmToolsConfiguration.d.ts +1 -1
  47. package/esm/typings/src/llm-providers/_common/register/createLlmToolsFromConfiguration.d.ts +7 -0
  48. package/esm/typings/src/llm-providers/_common/utils/cache/CacheLlmToolsOptions.d.ts +4 -1
  49. package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.d.ts +1 -1
  50. package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionToolsOptions.d.ts +2 -2
  51. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  52. package/esm/typings/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.d.ts +1 -1
  53. package/esm/typings/src/llm-providers/azure-openai/AzureOpenAiExecutionToolsOptions.d.ts +2 -1
  54. package/esm/typings/src/llm-providers/langtail/LangtailExecutionTools.d.ts +1 -1
  55. package/esm/typings/src/llm-providers/mocked/$fakeTextToExpectations.d.ts +1 -1
  56. package/esm/typings/src/llm-providers/mocked/MockedEchoLlmExecutionTools.d.ts +1 -1
  57. package/esm/typings/src/llm-providers/mocked/MockedFackedLlmExecutionTools.d.ts +1 -1
  58. package/esm/typings/src/llm-providers/multiple/MultipleLlmExecutionTools.d.ts +4 -5
  59. package/esm/typings/src/llm-providers/multiple/joinLlmExecutionTools.d.ts +1 -1
  60. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionTools.d.ts +0 -1
  61. package/esm/typings/src/llm-providers/openai/OpenAiExecutionTools.d.ts +2 -2
  62. package/esm/typings/src/llm-providers/openai/OpenAiExecutionToolsOptions.d.ts +2 -2
  63. package/esm/typings/src/llm-providers/openai/openai-models.d.ts +1 -1
  64. package/esm/typings/src/llm-providers/remote/RemoteLlmExecutionTools.d.ts +4 -4
  65. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_ListModels_Request.d.ts +15 -6
  66. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_ListModels_Response.d.ts +4 -4
  67. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_Prompt_Request.d.ts +6 -12
  68. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_Prompt_Response.d.ts +3 -3
  69. package/esm/typings/src/llm-providers/remote/interfaces/RemoteLlmExecutionToolsOptions.d.ts +9 -14
  70. package/esm/typings/src/llm-providers/remote/interfaces/RemoteServerOptions.d.ts +23 -8
  71. package/esm/typings/src/llm-providers/remote/startRemoteServer.d.ts +1 -1
  72. package/esm/typings/src/personas/preparePersona.d.ts +1 -1
  73. package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +4 -23
  74. package/esm/typings/src/prepare/isPipelinePrepared.d.ts +2 -2
  75. package/esm/typings/src/prepare/prepareTemplates.d.ts +2 -2
  76. package/esm/typings/src/scrapers/_common/Scraper.d.ts +2 -9
  77. package/esm/typings/src/scrapers/_common/prepareKnowledgePieces.d.ts +1 -1
  78. package/esm/typings/src/scrapers/_common/register/$provideScrapersForBrowser.d.ts +2 -2
  79. package/esm/typings/src/scrapers/_common/register/$provideScrapersForNode.d.ts +2 -2
  80. package/esm/typings/src/scrapers/_common/register/ScraperAndConverterMetadata.d.ts +2 -2
  81. package/esm/typings/src/scrapers/_common/utils/getScraperIntermediateSource.d.ts +2 -2
  82. package/esm/typings/src/scrapers/_common/utils/makeKnowledgeSourceHandler.d.ts +1 -1
  83. package/esm/typings/src/scrapers/document/DocumentScraper.d.ts +2 -2
  84. package/esm/typings/src/scrapers/document/DocumentScraper.test.d.ts +1 -1
  85. package/esm/typings/src/scrapers/document/createDocumentScraper.d.ts +1 -1
  86. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -1
  87. package/esm/typings/src/scrapers/document-legacy/LegacyDocumentScraper.d.ts +3 -3
  88. package/esm/typings/src/scrapers/document-legacy/LegacyDocumentScraper.test.d.ts +1 -1
  89. package/esm/typings/src/scrapers/document-legacy/createLegacyDocumentScraper.d.ts +1 -1
  90. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -1
  91. package/esm/typings/src/scrapers/markdown/MarkdownScraper.d.ts +1 -1
  92. package/esm/typings/src/scrapers/markdown/MarkdownScraper.test.d.ts +1 -1
  93. package/esm/typings/src/scrapers/markdown/createMarkdownScraper.d.ts +1 -1
  94. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -1
  95. package/esm/typings/src/scrapers/pdf/PdfScraper.d.ts +2 -2
  96. package/esm/typings/src/scrapers/pdf/createPdfScraper.d.ts +1 -1
  97. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +1 -1
  98. package/esm/typings/src/scrapers/website/WebsiteScraper.d.ts +6 -3
  99. package/esm/typings/src/scrapers/website/createWebsiteScraper.d.ts +1 -1
  100. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -1
  101. package/esm/typings/src/scrapers/website/utils/createShowdownConverter.d.ts +7 -0
  102. package/esm/typings/src/scrapers/website/utils/createShowdownConverter.test.d.ts +1 -0
  103. package/esm/typings/src/scripting/javascript/utils/preserve.d.ts +1 -1
  104. package/esm/typings/src/storage/file-cache-storage/utils/nameToSubfolderPath.d.ts +1 -1
  105. package/esm/typings/src/types/Arrayable.d.ts +1 -1
  106. package/esm/typings/src/types/IntermediateFilesStrategy.d.ts +7 -0
  107. package/esm/typings/src/types/PipelineJson/KnowledgePieceJson.d.ts +4 -4
  108. package/esm/typings/src/types/PipelineJson/KnowledgeSourceJson.d.ts +1 -1
  109. package/esm/typings/src/types/PipelineJson/ParameterJson.d.ts +2 -2
  110. package/esm/typings/src/types/PipelineJson/PersonaJson.d.ts +1 -1
  111. package/esm/typings/src/types/PipelineJson/PreparationJson.d.ts +1 -1
  112. package/esm/typings/src/types/PipelineJson/TemplateJsonCommon.d.ts +2 -2
  113. package/esm/typings/src/types/Prompt.d.ts +2 -1
  114. package/esm/typings/src/types/execution-report/ExecutionReportJson.d.ts +1 -1
  115. package/esm/typings/src/types/typeAliases.d.ts +11 -8
  116. package/esm/typings/src/utils/$Register.d.ts +1 -1
  117. package/esm/typings/src/utils/FromtoItems.d.ts +1 -1
  118. package/esm/typings/src/utils/arrayableToArray.d.ts +1 -1
  119. package/esm/typings/src/utils/emojis.d.ts +1 -1
  120. package/esm/typings/src/utils/execCommand/$execCommand.d.ts +4 -2
  121. package/esm/typings/src/utils/execCommand/$execCommandNormalizeOptions.d.ts +12 -0
  122. package/esm/typings/src/utils/execCommand/$execCommands.d.ts +1 -0
  123. package/esm/typings/src/utils/execCommand/ExecCommandOptions.d.ts +45 -0
  124. package/esm/typings/src/utils/expectation-counters/countSentences.d.ts +1 -1
  125. package/esm/typings/src/utils/files/isExecutable.d.ts +11 -0
  126. package/esm/typings/src/utils/markdown/extractAllBlocksFromMarkdown.d.ts +1 -1
  127. package/esm/typings/src/utils/markdown/splitMarkdownIntoSections.d.ts +1 -1
  128. package/esm/typings/src/utils/normalization/IKeywords.d.ts +2 -2
  129. package/esm/typings/src/utils/normalization/parseKeywords.d.ts +2 -2
  130. package/esm/typings/src/utils/normalization/parseKeywordsFromString.d.ts +2 -2
  131. package/esm/typings/src/utils/normalization/searchKeywords.d.ts +2 -2
  132. package/esm/typings/src/utils/organization/TODO_USE.d.ts +1 -1
  133. package/esm/typings/src/utils/organization/keepUnused.d.ts +1 -1
  134. package/esm/typings/src/utils/random/$randomSeed.d.ts +1 -1
  135. package/esm/typings/src/utils/sets/intersection.d.ts +1 -1
  136. package/esm/typings/src/utils/sets/union.d.ts +1 -1
  137. package/esm/typings/src/utils/unwrapResult.d.ts +4 -4
  138. package/package.json +6 -4
  139. package/umd/index.umd.js +186 -170
  140. package/umd/index.umd.js.map +1 -1
  141. package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorSettings.d.ts +0 -29
  142. package/esm/typings/src/scrapers/website/utils/markdownConverter.d.ts +0 -12
  143. package/esm/typings/src/utils/execCommand/IExecCommandOptions.d.ts +0 -23
  144. package/esm/typings/src/utils/execCommand/execCommandNormalizeOptions.d.ts +0 -10
  145. /package/esm/typings/src/{scrapers/website/WebsiteScraper.test.d.ts → executables/apps/locateLibreoffice.test.d.ts} +0 -0
  146. /package/esm/typings/src/{scrapers/website/utils/markdownConverter.test.d.ts → executables/apps/locatePandoc.test.d.ts} +0 -0
@@ -27,7 +27,7 @@ export declare class OpenAiExecutionTools implements LlmExecutionTools {
27
27
  *
28
28
  * @param options which are relevant are directly passed to the OpenAI client
29
29
  */
30
- constructor(options?: OpenAiExecutionToolsOptions);
30
+ constructor(options: OpenAiExecutionToolsOptions);
31
31
  get title(): string_title & string_markdown_text;
32
32
  get description(): string_markdown;
33
33
  getClient(): Promise<OpenAI>;
@@ -45,7 +45,7 @@ export declare class OpenAiExecutionTools implements LlmExecutionTools {
45
45
  /**
46
46
  * List all available OpenAI models that can be used
47
47
  */
48
- listModels(): Array<AvailableModel>;
48
+ listModels(): ReadonlyArray<AvailableModel>;
49
49
  /**
50
50
  * Calls OpenAI API to use a chat model.
51
51
  */
@@ -1,6 +1,6 @@
1
1
  import type { ClientOptions } from 'openai';
2
2
  import type { CommonToolsOptions } from '../../execution/CommonToolsOptions';
3
- import type { string_token } from '../../types/typeAliases';
3
+ import type { string_user_id } from '../../types/typeAliases';
4
4
  /**
5
5
  * Options for `OpenAiExecutionTools`
6
6
  *
@@ -16,5 +16,5 @@ export type OpenAiExecutionToolsOptions = CommonToolsOptions & ClientOptions & {
16
16
  *
17
17
  * @see https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids
18
18
  */
19
- user?: string_token;
19
+ userId: string_user_id | null;
20
20
  };
@@ -9,7 +9,7 @@ import type { number_usd } from '../../types/typeAliases';
9
9
  * @see https://openai.com/api/pricing/
10
10
  * @public exported from `@promptbook/openai`
11
11
  */
12
- export declare const OPENAI_MODELS: Array<AvailableModel & {
12
+ export declare const OPENAI_MODELS: ReadonlyArray<AvailableModel & {
13
13
  pricing?: {
14
14
  readonly prompt: number_usd;
15
15
  readonly output: number_usd;
@@ -19,9 +19,9 @@ import type { RemoteLlmExecutionToolsOptions } from './interfaces/RemoteLlmExecu
19
19
  * @see https://github.com/webgptorg/promptbook#remote-server
20
20
  * @public exported from `@promptbook/remote-client`
21
21
  */
22
- export declare class RemoteLlmExecutionTools implements LlmExecutionTools {
23
- protected readonly options: RemoteLlmExecutionToolsOptions;
24
- constructor(options: RemoteLlmExecutionToolsOptions);
22
+ export declare class RemoteLlmExecutionTools<TCustomOptions = undefined> implements LlmExecutionTools {
23
+ protected readonly options: RemoteLlmExecutionToolsOptions<TCustomOptions>;
24
+ constructor(options: RemoteLlmExecutionToolsOptions<TCustomOptions>);
25
25
  get title(): string_title & string_markdown_text;
26
26
  get description(): string_markdown;
27
27
  /**
@@ -31,7 +31,7 @@ export declare class RemoteLlmExecutionTools implements LlmExecutionTools {
31
31
  /**
32
32
  * List all available models that can be used
33
33
  */
34
- listModels(): Promise<Array<AvailableModel>>;
34
+ listModels(): Promise<ReadonlyArray<AvailableModel>>;
35
35
  /**
36
36
  * Creates a connection to the remote proxy server.
37
37
  */
@@ -1,21 +1,30 @@
1
+ import type { string_user_id } from '../../../types/typeAliases';
1
2
  import type { LlmToolsConfiguration } from '../../_common/register/LlmToolsConfiguration';
3
+ import type { CollectionRemoteServerClientOptions } from './RemoteServerOptions';
2
4
  /**
3
5
  * Socket.io progress for remote text generation
4
6
  *
5
7
  * This is a request from client to server
6
8
  */
7
- export type PromptbookServer_ListModels_Request = PromptbookServer_ListModels_CollectionRequest | PromptbookServer_ListModels_AnonymousRequest;
8
- export type PromptbookServer_ListModels_CollectionRequest = {
9
+ export type PromptbookServer_ListModels_Request<TCustomOptions> = PromptbookServer_ListModels_CollectionRequest<TCustomOptions> | PromptbookServer_ListModels_AnonymousRequest;
10
+ export type PromptbookServer_ListModels_CollectionRequest<TCustomOptions> = CollectionRemoteServerClientOptions<TCustomOptions> & {
9
11
  /**
10
- * Collection mode
12
+ * Application mode
11
13
  */
12
- isAnonymous: false;
14
+ readonly isAnonymous: false;
13
15
  };
14
16
  export type PromptbookServer_ListModels_AnonymousRequest = {
15
17
  /**
16
18
  * Anonymous mode
17
19
  */
18
- isAnonymous: true;
20
+ readonly isAnonymous: true;
21
+ /**
22
+ * Identifier of the end user
23
+ *
24
+ * Note: this is passed to the certain model providers to identify misuse
25
+ * Note: In anonymous mode, there is no need to identify yourself, nor does it change the actual configuration of LLM Tools (unlike in application mode)
26
+ */
27
+ readonly userId: string_user_id | null;
19
28
  /**
20
29
  * Configuration for the LLM tools
21
30
  */
@@ -24,6 +33,6 @@ export type PromptbookServer_ListModels_AnonymousRequest = {
24
33
  /**
25
34
  * TODO: [👡] DRY `PromptbookServer_Prompt_Request` and `PromptbookServer_ListModels_Request`
26
35
  * TODO: [🧠][🛍] Maybe not `isAnonymous: boolean` BUT `mode: 'ANONYMOUS'|'COLLECTION'`
27
- * TODO: [🧠][🤺] Pass `userId` in `PromptbookServer_ListModels_Request`
36
+ * TODO: [🧠][🤺] Maybe allow overriding of `userId` for each prompt - Pass `userId` in `PromptbookServer_ListModels_Request`
28
37
  * TODO: [👒] Listing models (and checking configuration) probbably should go through REST API not Socket.io
29
38
  */
@@ -4,12 +4,12 @@ import type { AvailableModel } from '../../../execution/AvailableModel';
4
4
  *
5
5
  * This is sent from server to client when models are listed
6
6
  */
7
- export interface PromptbookServer_ListModels_Response {
7
+ export type PromptbookServer_ListModels_Response = {
8
8
  /**
9
9
  * Available models that can be used
10
10
  */
11
- models: Array<AvailableModel>;
12
- }
11
+ readonly models: ReadonlyArray<AvailableModel>;
12
+ };
13
13
  /**
14
14
  * TODO: [👒] Listing models (and checking configuration) probbably should go through REST API not Socket.io
15
- */
15
+ */
@@ -1,24 +1,18 @@
1
1
  import type { Prompt } from '../../../types/Prompt';
2
2
  import type { string_user_id } from '../../../types/typeAliases';
3
3
  import type { LlmToolsConfiguration } from '../../_common/register/LlmToolsConfiguration';
4
+ import type { CollectionRemoteServerClientOptions } from './RemoteServerOptions';
4
5
  /**
5
6
  * Socket.io progress for remote text generation
6
7
  *
7
8
  * This is a request from client to server
8
9
  */
9
- export type PromptbookServer_Prompt_Request = PromptbookServer_Prompt_CollectionRequest | PromptbookServer_Prompt_AnonymousRequest;
10
- export type PromptbookServer_Prompt_CollectionRequest = {
10
+ export type PromptbookServer_Prompt_Request<TCustomOptions> = PromptbookServer_Prompt_CollectionRequest<TCustomOptions> | PromptbookServer_Prompt_AnonymousRequest;
11
+ export type PromptbookServer_Prompt_CollectionRequest<TCustomOptions> = CollectionRemoteServerClientOptions<TCustomOptions> & {
11
12
  /**
12
- * Collection mode
13
+ * Application mode
13
14
  */
14
15
  readonly isAnonymous: false;
15
- /**
16
- * Identifier of the end user
17
- *
18
- * Note: this is passed to the certain model providers to identify misuse
19
- * Note: In anonymous mode it is not required to identify
20
- */
21
- readonly userId: string_user_id;
22
16
  /**
23
17
  * The Prompt to execute
24
18
  */
@@ -33,9 +27,9 @@ export type PromptbookServer_Prompt_AnonymousRequest = {
33
27
  * Identifier of the end user
34
28
  *
35
29
  * Note: this is passed to the certain model providers to identify misuse
36
- * Note: In anonymous mode it is not required to identify
30
+ * Note: In anonymous mode, there is no need to identify yourself, nor does it change the actual configuration of LLM Tools (unlike in application mode)
37
31
  */
38
- readonly userId?: string_user_id;
32
+ readonly userId: string_user_id | null;
39
33
  /**
40
34
  * Configuration for the LLM tools
41
35
  */
@@ -4,9 +4,9 @@ import type { PromptResult } from '../../../execution/PromptResult';
4
4
  *
5
5
  * This is sent from server to client when the generated text is completed
6
6
  */
7
- export interface PromptbookServer_Prompt_Response {
7
+ export type PromptbookServer_Prompt_Response = {
8
8
  /**
9
9
  * The result of the prompt
10
10
  */
11
- promptResult: PromptResult;
12
- }
11
+ readonly promptResult: PromptResult;
12
+ };
@@ -3,12 +3,13 @@ import type { string_base_url } from '../../../types/typeAliases';
3
3
  import type { string_uri } from '../../../types/typeAliases';
4
4
  import type { string_user_id } from '../../../types/typeAliases';
5
5
  import type { LlmToolsConfiguration } from '../../_common/register/LlmToolsConfiguration';
6
+ import type { CollectionRemoteServerClientOptions } from './RemoteServerOptions';
6
7
  /**
7
8
  * Options for `RemoteLlmExecutionTools`
8
9
  *
9
10
  * @public exported from `@promptbook/remote-client`
10
11
  */
11
- export type RemoteLlmExecutionToolsOptions = CommonToolsOptions & {
12
+ export type RemoteLlmExecutionToolsOptions<TCustomOptions> = CommonToolsOptions & {
12
13
  /**
13
14
  * URL of the remote PROMPTBOOK server
14
15
  * On this server will be connected to the socket.io server
@@ -29,7 +30,7 @@ export type RemoteLlmExecutionToolsOptions = CommonToolsOptions & {
29
30
  /**
30
31
  * Use anonymous server with anonymous mode
31
32
  */
32
- isAnonymous: true;
33
+ readonly isAnonymous: true;
33
34
  /**
34
35
  * Configuration for the LLM tools
35
36
  */
@@ -37,22 +38,16 @@ export type RemoteLlmExecutionToolsOptions = CommonToolsOptions & {
37
38
  /**
38
39
  * Identifier of the end user
39
40
  *
40
- * Note: this is passed to the certain model providers to identify misuse
41
- * Note: In anonymous mode it is not required to identify
41
+ * Note: This is passed to the certain model providers to identify misuse
42
+ * Note: In anonymous mode, there is no need to identify yourself, nor does it change the actual configuration of LLM Tools (unlike in application mode).
42
43
  */
43
- readonly userId?: string_user_id;
44
- } | {
44
+ readonly userId: string_user_id | null;
45
+ } | ({
45
46
  /**
46
47
  * Use anonymous server with client identification and fixed collection
47
48
  */
48
- isAnonymous: false;
49
- /**
50
- * Identifier of the end user
51
- *
52
- * Note: this is passed to the certain model providers to identify misuse
53
- */
54
- readonly userId: string_user_id;
55
- });
49
+ readonly isAnonymous: false;
50
+ } & CollectionRemoteServerClientOptions<TCustomOptions>));
56
51
  /**
57
52
  * TODO: [🧠][🛍] Maybe not `isAnonymous: boolean` BUT `mode: 'ANONYMOUS'|'COLLECTION'`
58
53
  * TODO: [🧠][🧜‍♂️] Maybe join remoteUrl and path into single value
@@ -1,6 +1,8 @@
1
+ import type { Promisable } from 'type-fest';
1
2
  import type { PipelineCollection } from '../../../collection/PipelineCollection';
2
3
  import type { CommonToolsOptions } from '../../../execution/CommonToolsOptions';
3
4
  import type { LlmExecutionTools } from '../../../execution/LlmExecutionTools';
5
+ import type { string_app_id } from '../../../types/typeAliases';
4
6
  import type { string_uri } from '../../../types/typeAliases';
5
7
  import type { string_user_id } from '../../../types/typeAliases';
6
8
  /**
@@ -8,7 +10,7 @@ import type { string_user_id } from '../../../types/typeAliases';
8
10
  *
9
11
  * There are two modes of remote server:
10
12
  *
11
- * 1) **Collection mode** Server will recieve `collection` and execute prompts only from this collection
13
+ * 1) **Application mode** Server will recieve `collection` and execute prompts only from this collection
12
14
  * 2) **Anonymous mode** Server will recieve full `LlmToolsConfiguration` (with api keys) and just acts as a proxy
13
15
  * In anonymous mode, `collection` will be ignored and any prompt will be executed
14
16
  *
@@ -17,7 +19,7 @@ import type { string_user_id } from '../../../types/typeAliases';
17
19
  * @public exported from `@promptbook/remote-client`
18
20
  * @public exported from `@promptbook/remote-server`
19
21
  */
20
- export type RemoteServerOptions = CommonToolsOptions & {
22
+ export type RemoteServerOptions<TCustomOptions> = CommonToolsOptions & {
21
23
  /**
22
24
  * Port on which the server will listen
23
25
  */
@@ -29,18 +31,18 @@ export type RemoteServerOptions = CommonToolsOptions & {
29
31
  * @example '/promptbook/socket.io'
30
32
  */
31
33
  readonly path: string_uri;
32
- } & (AnonymousRemoteServerOptions | CollectionRemoteServerOptions | (AnonymousRemoteServerOptions & CollectionRemoteServerOptions));
34
+ } & (AnonymousRemoteServerOptions | CollectionRemoteServerOptions<TCustomOptions> | (AnonymousRemoteServerOptions & CollectionRemoteServerOptions<TCustomOptions>));
33
35
  export type AnonymousRemoteServerOptions = {
34
36
  /**
35
37
  * Enable anonymous mode
36
38
  */
37
39
  readonly isAnonymousModeAllowed: true;
38
40
  };
39
- export type CollectionRemoteServerOptions = {
41
+ export type CollectionRemoteServerOptions<TCustomOptions> = {
40
42
  /**
41
- * Enable collection mode
43
+ * Enable application mode
42
44
  */
43
- readonly isCollectionModeAllowed: true;
45
+ readonly isApplicationModeAllowed: true;
44
46
  /**
45
47
  * Promptbook collection to use
46
48
  *
@@ -50,9 +52,22 @@ export type CollectionRemoteServerOptions = {
50
52
  /**
51
53
  * Creates llm execution tools for each client
52
54
  */
53
- createLlmExecutionTools(userId: string_user_id | undefined): LlmExecutionTools;
55
+ createLlmExecutionTools(options: CollectionRemoteServerClientOptions<TCustomOptions>): Promisable<LlmExecutionTools>;
56
+ };
57
+ export type CollectionRemoteServerClientOptions<TCustomOptions> = {
58
+ /**
59
+ * @@@
60
+ */
61
+ readonly appId: string_app_id | null;
62
+ /**
63
+ * @@@
64
+ */
65
+ readonly userId: string_user_id | null;
66
+ /**
67
+ * @@@
68
+ */
69
+ readonly customOptions?: TCustomOptions;
54
70
  };
55
71
  /**
56
72
  * TODO: Constrain anonymous mode for specific models / providers
57
- * TODO: [🧠][🤺] Remove `createLlmExecutionTools`, pass just `llmExecutionTools`
58
73
  */
@@ -9,7 +9,7 @@ import type { RemoteServerOptions } from './interfaces/RemoteServerOptions';
9
9
  * @see https://github.com/webgptorg/promptbook#remote-server
10
10
  * @public exported from `@promptbook/remote-server`
11
11
  */
12
- export declare function startRemoteServer(options: RemoteServerOptions): IDestroyable;
12
+ export declare function startRemoteServer<TCustomOptions = undefined>(options: RemoteServerOptions<TCustomOptions>): IDestroyable;
13
13
  /**
14
14
  * TODO: Maybe use `$asDeeplyFrozenSerializableJson`
15
15
  * TODO: [🧠][🛍] Maybe not `isAnonymous: boolean` BUT `mode: 'ANONYMOUS'|'COLLECTION'`
@@ -10,7 +10,7 @@ import type { string_persona_description } from '../types/typeAliases';
10
10
  */
11
11
  export declare function preparePersona(personaDescription: string_persona_description, tools: Pick<ExecutionTools, 'llm'>, options: PrepareAndScrapeOptions): Promise<PersonaPreparedJson['modelRequirements']>;
12
12
  /**
13
- * TODO: [🔃][main] !!!!! If the persona was prepared with different version or different set of models, prepare it once again
13
+ * TODO: [🔃][main] !! If the persona was prepared with different version or different set of models, prepare it once again
14
14
  * TODO: [🏢] !! Check validity of `modelName` in pipeline
15
15
  * TODO: [🏢] !! Check validity of `systemMessage` in pipeline
16
16
  * TODO: [🏢] !! Check validity of `temperature` in pipeline
@@ -1,3 +1,4 @@
1
+ import type { IntermediateFilesStrategy } from '../types/IntermediateFilesStrategy';
1
2
  import type { string_dirname } from '../types/typeAliases';
2
3
  /**
3
4
  * Options for preparation of the pipeline
@@ -21,37 +22,17 @@ export type PrepareAndScrapeOptions = {
21
22
  */
22
23
  readonly cacheDirname?: string_dirname;
23
24
  /**
24
- * If true, the cache is cleaned after the scraping
25
+ * Strategy for caching the intermediate results for knowledge source
25
26
  *
26
- *
27
- * @default false // <- TODO: !!!!!! Change to `cacheStrategy`/`intermediateFiles`, Put to global config, change to `true` and explicitly set to `false` in all playgrounds
27
+ * @default DEFAULT_INTERMEDIATE_FILES_STRATEGY
28
28
  */
29
- readonly isCacheCleaned?: boolean;
29
+ readonly intermediateFilesStrategy?: IntermediateFilesStrategy;
30
30
  /**
31
31
  * Maximum number of tasks running in parallel
32
32
  *
33
33
  * @default MAX_PARALLEL_COUNT
34
34
  */
35
35
  readonly maxParallelCount?: number;
36
- /**
37
- * Path to the external programs executables
38
- *
39
- * TODO: !!!!!! Transform to scrapers and make them Classy
40
- */
41
- readonly externalProgramsPaths?: {
42
- /**
43
- * Path to the `pandoc` executable
44
- *
45
- * @example 'C:/Users/me/AppData/Local/Pandoc/pandoc.exe'
46
- */
47
- readonly pandocPath?: string;
48
- /**
49
- * Path to the LibreOffice executable
50
- *
51
- * @example 'C:/Program Files/LibreOffice/program/swriter.exe'
52
- */
53
- readonly libreOfficePath?: string;
54
- };
55
36
  /**
56
37
  * If true, the missing software is automatically installed
57
38
  */
@@ -6,11 +6,11 @@ import type { PipelineJson } from '../types/PipelineJson/PipelineJson';
6
6
  */
7
7
  export declare function isPipelinePrepared(pipeline: PipelineJson): boolean;
8
8
  /**
9
- * TODO: [🔃][main] !!!!! If the pipeline was prepared with different version or different set of models, prepare it once again
9
+ * TODO: [🔃][main] !! If the pipeline was prepared with different version or different set of models, prepare it once again
10
10
  * TODO: [🐠] Maybe base this on `makeValidator`
11
11
  * TODO: [🧊] Pipeline can be partially prepared, this should return true ONLY if fully prepared
12
12
  * TODO: [🧿] Maybe do same process with same granularity and subfinctions as `preparePipeline`
13
13
  * - [🏍] ? Is context in each template
14
- * - [♨] Are samples prepared
14
+ * - [♨] Are examples prepared
15
15
  * - [♨] Are templates prepared
16
16
  */
@@ -12,7 +12,7 @@ type PreparedTemplates = {
12
12
  /**
13
13
  * @@@ Sequence of templates that are chained together to form a pipeline
14
14
  */
15
- readonly templatesPrepared: Array<TemplateJson>;
15
+ readonly templatesPrepared: ReadonlyArray<TemplateJson>;
16
16
  };
17
17
  /**
18
18
  * @@@
@@ -24,7 +24,7 @@ export {};
24
24
  /**
25
25
  * TODO: [🧠] Add context to each template (if missing)
26
26
  * TODO: [🧠] What is better name `prepareTemplate` or `prepareTemplateAndParameters`
27
- * TODO: [♨][main] !!! Prepare index the samples and maybe templates
27
+ * TODO: [♨][main] !!! Prepare index the examples and maybe templates
28
28
  * TODO: Write tests for `preparePipeline`
29
29
  * TODO: [🏏] Leverage the batch API and build queues @see https://platform.openai.com/docs/guides/batch
30
30
  * TODO: [🧊] In future one preparation can take data from previous preparation and save tokens and time
@@ -17,7 +17,7 @@ export type Scraper = {
17
17
  /**
18
18
  * Scrapes the markdown file and returns the knowledge pieces or `null` if it can't scrape it
19
19
  */
20
- scrape(source: ScraperSourceHandler): Promisable<Array<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
20
+ scrape(source: ScraperSourceHandler): Promisable<ReadonlyArray<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
21
21
  };
22
22
  /**
23
23
  * @@@
@@ -51,16 +51,9 @@ export type ScraperSourceHandler = {
51
51
  * Get the content as a utf-8 string
52
52
  */
53
53
  asText(): Promisable<string>;
54
- /**
55
- * Get the content as a blob
56
- */
57
- asBlob(): Promisable<Blob>;
58
54
  };
59
55
  /**
56
+ * TODO: [🥽] Add ` asBlob(): Promisable<Blob>;` or asFile
60
57
  * TODO: [🐝] @@@ Annotate all
61
58
  * TODO: [🔼] Export via types
62
59
  */
63
- /**
64
- * TODO: !!!!!! Test that this is catched
65
- * Note: [⚫] Code in this file should never be published in any package
66
- */
@@ -8,7 +8,7 @@ import type { ExecutionTools } from '../../execution/ExecutionTools';
8
8
  * @see https://github.com/webgptorg/promptbook/discussions/41
9
9
  * @public exported from `@promptbook/core`
10
10
  */
11
- export declare function prepareKnowledgePieces(knowledgeSources: Array<KnowledgeSourceJson>, tools: Pick<ExecutionTools, 'llm' | 'fs' | 'scrapers'>, options: PrepareAndScrapeOptions): Promise<Array<Omit<KnowledgePiecePreparedJson, 'preparationIds'>>>;
11
+ export declare function prepareKnowledgePieces(knowledgeSources: ReadonlyArray<KnowledgeSourceJson>, tools: Pick<ExecutionTools, 'llm' | 'fs' | 'scrapers'>, options: PrepareAndScrapeOptions): Promise<ReadonlyArray<Omit<KnowledgePiecePreparedJson, 'preparationIds'>>>;
12
12
  /**
13
13
  * TODO: [🧊] In future one preparation can take data from previous preparation and save tokens and time
14
14
  * Put `knowledgePieces` into `PrepareKnowledgeOptions`
@@ -2,11 +2,11 @@ import type { ExecutionTools } from '../../../execution/ExecutionTools';
2
2
  import type { PrepareAndScrapeOptions } from '../../../prepare/PrepareAndScrapeOptions';
3
3
  import type { Scraper } from '../Scraper';
4
4
  /**
5
- * @@@!!!!!!
5
+ * @@@
6
6
  *
7
7
  * 1) @@@
8
8
  * 2) @@@
9
9
  *
10
10
  * @public exported from `@promptbook/browser`
11
11
  */
12
- export declare function $provideScrapersForBrowser(tools: Pick<ExecutionTools, 'llm'>, options?: PrepareAndScrapeOptions): Promise<Array<Scraper>>;
12
+ export declare function $provideScrapersForBrowser(tools: Pick<ExecutionTools, 'llm'>, options?: PrepareAndScrapeOptions): Promise<ReadonlyArray<Scraper>>;
@@ -2,14 +2,14 @@ import type { ExecutionTools } from '../../../execution/ExecutionTools';
2
2
  import type { PrepareAndScrapeOptions } from '../../../prepare/PrepareAndScrapeOptions';
3
3
  import type { Scraper } from '../Scraper';
4
4
  /**
5
- * !!!!!!
5
+ * @@@
6
6
  *
7
7
  * 1) @@@
8
8
  * 2) @@@
9
9
  *
10
10
  * @public exported from `@promptbook/node`
11
11
  */
12
- export declare function $provideScrapersForNode(tools: Pick<ExecutionTools, 'fs' | 'llm'>, options?: PrepareAndScrapeOptions): Promise<Array<Scraper>>;
12
+ export declare function $provideScrapersForNode(tools: Pick<ExecutionTools, 'fs' | 'llm' | 'executables'>, options?: PrepareAndScrapeOptions): Promise<ReadonlyArray<Scraper>>;
13
13
  /**
14
14
  * Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
15
15
  */
@@ -1,8 +1,8 @@
1
+ import type { Executables } from '../../../execution/Executables';
1
2
  import type { string_mime_type } from '../../../types/typeAliases';
2
3
  import type { string_promptbook_documentation_url } from '../../../types/typeAliases';
3
4
  import type { string_title } from '../../../types/typeAliases';
4
5
  import type { Registered } from '../../../utils/$Register';
5
- import type { TODO_any } from '../../../utils/organization/TODO_any';
6
6
  /**
7
7
  * @@@
8
8
  *
@@ -33,7 +33,7 @@ export type ScraperAndConverterMetadata = Registered & {
33
33
  /**
34
34
  * @@@
35
35
  */
36
- readonly requiredExecutables: TODO_any;
36
+ readonly requiredExecutables: ReadonlyArray<Capitalize<keyof Executables extends `${infer N}Path` ? N : never>>;
37
37
  /**
38
38
  * Link to documentation
39
39
  */
@@ -13,7 +13,7 @@ type GetScraperIntermediateSourceSource = Pick<ScraperSourceHandler, 'filename'
13
13
  *
14
14
  * @private internal utility of `getScraperIntermediateSource`
15
15
  */
16
- type GetScraperIntermediateSourceHandler = Required<Pick<PrepareAndScrapeOptions, 'rootDirname' | 'cacheDirname' | 'isCacheCleaned' | 'isVerbose'>> & {
16
+ type GetScraperIntermediateSourceHandler = Required<Pick<PrepareAndScrapeOptions, 'rootDirname' | 'cacheDirname' | 'intermediateFilesStrategy' | 'isVerbose'>> & {
17
17
  readonly extension: string_file_extension;
18
18
  };
19
19
  /**
@@ -28,7 +28,7 @@ export {};
28
28
  /**
29
29
  * Note: Not using `FileCacheStorage` for two reasons:
30
30
  * 1) Need to store more than serialized JSONs
31
- * 2) Need to switch between a `rootDirname` and `cacheDirname` <- TODO: !!!!
31
+ * 2) Need to switch between a `rootDirname` and `cacheDirname` <- TODO: [😡]
32
32
  * TODO: [🐱‍🐉][🧠] Make some smart crop
33
33
  * Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
34
34
  */
@@ -6,6 +6,6 @@ import type { ScraperSourceHandler } from '../Scraper';
6
6
  /**
7
7
  * @@@
8
8
  *
9
- * @private for scraper utilities
9
+ * @public exported from `@promptbook/core`
10
10
  */
11
11
  export declare function makeKnowledgeSourceHandler(knowledgeSource: SetOptional<KnowledgeSourceJson, 'name'>, tools: Pick<ExecutionTools, 'fs'>, options?: Pick<PrepareAndScrapeOptions, 'rootDirname' | 'isVerbose'>): Promise<ScraperSourceHandler>;
@@ -23,7 +23,7 @@ export declare class DocumentScraper implements Converter, Scraper {
23
23
  * Markdown scraper is used internally
24
24
  */
25
25
  private readonly markdownScraper;
26
- constructor(tools: Pick<ExecutionTools, 'fs' | 'llm'>, options: PrepareAndScrapeOptions);
26
+ constructor(tools: Pick<ExecutionTools, 'fs' | 'llm' | 'executables'>, options: PrepareAndScrapeOptions);
27
27
  /**
28
28
  * Convert the `.docx` or `.odt` to `.md` file and returns intermediate source
29
29
  *
@@ -33,7 +33,7 @@ export declare class DocumentScraper implements Converter, Scraper {
33
33
  /**
34
34
  * Scrapes the docx file and returns the knowledge pieces or `null` if it can't scrape it
35
35
  */
36
- scrape(source: ScraperSourceHandler): Promise<Array<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
36
+ scrape(source: ScraperSourceHandler): Promise<ReadonlyArray<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
37
37
  }
38
38
  /**
39
39
  * TODO: [👣] Converted documents can act as cached items - there is no need to run conversion each time
@@ -1,4 +1,4 @@
1
1
  export {};
2
2
  /**
3
- * TODO: [📓] Maybe test all file in samples (not just 10-simple.docx)
3
+ * TODO: [📓] Maybe test all file in examples (not just 10-simple.docx)
4
4
  */
@@ -13,7 +13,7 @@ export declare const createDocumentScraper: ((tools: Pick<ExecutionTools, 'llm'>
13
13
  mimeTypes: string[];
14
14
  documentationUrl: "https://github.com/webgptorg/promptbook/discussions/@@";
15
15
  isAvilableInBrowser: false;
16
- requiredExecutables: string[];
16
+ requiredExecutables: "Pandoc"[];
17
17
  }>;
18
18
  /**
19
19
  * TODO: [🎶] Naming "constructor" vs "creator" vs "factory"
@@ -11,7 +11,7 @@ export declare const documentScraperMetadata: import("type-fest/source/readonly-
11
11
  mimeTypes: string[];
12
12
  documentationUrl: "https://github.com/webgptorg/promptbook/discussions/@@";
13
13
  isAvilableInBrowser: false;
14
- requiredExecutables: string[];
14
+ requiredExecutables: "Pandoc"[];
15
15
  }>;
16
16
  /**
17
17
  * Registration of known scraper metadata
@@ -7,7 +7,7 @@ import type { Scraper } from '../_common/Scraper';
7
7
  import type { ScraperSourceHandler } from '../_common/Scraper';
8
8
  import type { ScraperIntermediateSource } from '../_common/ScraperIntermediateSource';
9
9
  /**
10
- * Scraper for .docx files
10
+ * Scraper for old document files (like .doc and .rtf)
11
11
  *
12
12
  * @see `documentationUrl` for more details
13
13
  * @public exported from `@promptbook/legacy-documents`
@@ -23,7 +23,7 @@ export declare class LegacyDocumentScraper implements Converter, Scraper {
23
23
  * Document scraper is used internally
24
24
  */
25
25
  private readonly documentScraper;
26
- constructor(tools: Pick<ExecutionTools, 'fs' | 'llm'>, options: PrepareAndScrapeOptions);
26
+ constructor(tools: Pick<ExecutionTools, 'fs' | 'llm' | 'executables'>, options: PrepareAndScrapeOptions);
27
27
  /**
28
28
  * Convert the `.doc` or `.rtf` to `.doc` file and returns intermediate source
29
29
  *
@@ -33,7 +33,7 @@ export declare class LegacyDocumentScraper implements Converter, Scraper {
33
33
  /**
34
34
  * Scrapes the `.doc` or `.rtf` file and returns the knowledge pieces or `null` if it can't scrape it
35
35
  */
36
- scrape(source: ScraperSourceHandler): Promise<Array<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
36
+ scrape(source: ScraperSourceHandler): Promise<ReadonlyArray<Omit<KnowledgePiecePreparedJson, 'sources' | 'preparationIds'>> | null>;
37
37
  }
38
38
  /**
39
39
  * TODO: [👣] Converted documents can act as cached items - there is no need to run conversion each time
@@ -1,4 +1,4 @@
1
1
  export {};
2
2
  /**
3
- * TODO: [📓] Maybe test all file in samples (not just 10-simple.doc)
3
+ * TODO: [📓] Maybe test all file in examples (not just 10-simple.doc)
4
4
  */
@@ -13,7 +13,7 @@ export declare const createLegacyDocumentScraper: ((tools: Pick<ExecutionTools,
13
13
  mimeTypes: string[];
14
14
  documentationUrl: "https://github.com/webgptorg/promptbook/discussions/@@";
15
15
  isAvilableInBrowser: false;
16
- requiredExecutables: string[];
16
+ requiredExecutables: ("Pandoc" | "LibreOffice")[];
17
17
  }>;
18
18
  /**
19
19
  * TODO: [🎶] Naming "constructor" vs "creator" vs "factory"
@@ -11,7 +11,7 @@ export declare const legacyDocumentScraperMetadata: import("type-fest/source/rea
11
11
  mimeTypes: string[];
12
12
  documentationUrl: "https://github.com/webgptorg/promptbook/discussions/@@";
13
13
  isAvilableInBrowser: false;
14
- requiredExecutables: string[];
14
+ requiredExecutables: ("Pandoc" | "LibreOffice")[];
15
15
  }>;
16
16
  /**
17
17
  * Registration of known scraper metadata