@promptbook/openai 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 +43 -256
  2. package/esm/index.es.js +26 -25
  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 +26 -25
  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
@@ -350,12 +350,6 @@ export type string_uri = string;
350
350
  * For example `"9SeSQTupmQHwuSrLi"`
351
351
  */
352
352
  export type string_uri_part = string;
353
- /**
354
- * Semantic helper, ID of the board used in URL and API
355
- *
356
- * For example `"9SeSQTupmQHwuSrLi"` <- TODO: !! Update
357
- */
358
- export type string_uriid = string_uri_part;
359
353
  /**
360
354
  * Semantic helper
361
355
  *
@@ -399,9 +393,17 @@ export type string_uuid = string & {
399
393
  readonly _type: 'uuid';
400
394
  };
401
395
  /**
402
- * End user identifier;
396
+ * Application identifier
397
+ *
398
+ * @@@
399
+ */
400
+ export type string_app_id = id;
401
+ /**
402
+ * End user identifier
403
+ *
404
+ * @@@
403
405
  */
404
- export type string_user_id = string;
406
+ export type string_user_id = id;
405
407
  /**
406
408
  * Semantic helper
407
409
  *
@@ -523,6 +525,7 @@ export type string_javascript_name = string;
523
525
  * Semantic helper; For example "unwrapResult" or "spaceTrim"
524
526
  */
525
527
  export type string_postprocessing_function_name = string;
528
+ export type id = string | number;
526
529
  export type string_token = string;
527
530
  export type string_license_token = string_token;
528
531
  export type string_password = string;
@@ -34,6 +34,6 @@ export declare class $Register<TRegistered extends Registered> {
34
34
  private readonly registerName;
35
35
  private readonly storage;
36
36
  constructor(registerName: string_name);
37
- list(): Array<TRegistered>;
37
+ list(): ReadonlyArray<TRegistered>;
38
38
  register(registered: TRegistered): Registration;
39
39
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Represents items which are compared to each other
3
3
  */
4
- export type FromtoItems = Array<{
4
+ export type FromtoItems = ReadonlyArray<{
5
5
  /**
6
6
  * The title of the item
7
7
  */
@@ -8,4 +8,4 @@ import type { Arrayable } from '../types/Arrayable';
8
8
  *
9
9
  * @private internal utility
10
10
  */
11
- export declare function arrayableToArray<TItem>(input?: Arrayable<TItem>): Array<TItem>;
11
+ export declare function arrayableToArray<TItem>(input?: Arrayable<TItem>): ReadonlyArray<TItem>;
@@ -8,7 +8,7 @@ import type { string_char_emoji } from '../types/typeAliasEmoji';
8
8
  * @private within the repository
9
9
  * @deprecated Use /\p{Extended_Pictographic}/ instead
10
10
  */
11
- export declare const EMOJIS_IN_CATEGORIES: Record<string, Array<string_char_emoji>>;
11
+ export declare const EMOJIS_IN_CATEGORIES: Record<string, ReadonlyArray<string_char_emoji>>;
12
12
  /**
13
13
  *
14
14
  * All possible emoji chars like "🍆", "🍡", "🍤"...
@@ -1,14 +1,16 @@
1
- import type { IExecCommandOptions } from './IExecCommandOptions';
1
+ import type { ExecCommandOptions } from './ExecCommandOptions';
2
2
  /**
3
3
  * Run one command in a shell
4
4
  *
5
+ *
5
6
  * Note: There are 2 similar functions in the codebase:
6
7
  * - `$execCommand` which runs a single command
7
8
  * - `$execCommands` which runs multiple commands
9
+ * Note: `$` is used to indicate that this function is not a pure function - it runs a command in a shell
8
10
  *
9
11
  * @public exported from `@promptbook/node`
10
12
  */
11
- export declare function $execCommand(options: IExecCommandOptions): Promise<string>;
13
+ export declare function $execCommand(options: ExecCommandOptions): Promise<string>;
12
14
  /**
13
15
  * Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
14
16
  */
@@ -0,0 +1,12 @@
1
+ import type { ExecCommandOptions } from './ExecCommandOptions';
2
+ import type { ExecCommandOptionsAdvanced } from './ExecCommandOptions';
3
+ /**
4
+ * Normalize options for `execCommand` and `execCommands`
5
+ *
6
+ * Note: `$` is used to indicate that this function behaves differently according to `process.platform`
7
+ *
8
+ * @private internal utility of `execCommand` and `execCommands`
9
+ */
10
+ export declare function $execCommandNormalizeOptions(options: ExecCommandOptions): Pick<ExecCommandOptionsAdvanced, 'command' | 'args' | 'cwd' | 'crashOnError' | 'timeout' | 'isVerbose'> & {
11
+ humanReadableCommand: string;
12
+ };
@@ -4,6 +4,7 @@
4
4
  * Note: There are 2 similar functions in the codebase:
5
5
  * - `$execCommand` which runs a single command
6
6
  * - `$execCommands` which runs multiple commands
7
+ * Note: `$` is used to indicate that this function is not a pure function - it runs a commands in a shell
7
8
  *
8
9
  * @public exported from `@promptbook/node`
9
10
  */
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @deprecated Use sth from type-fest or move this to type helpers
3
+ */
4
+ type RequiredAndOptional<TBase, TRequired extends keyof TBase, TOptional extends keyof TBase> = Pick<TBase, TRequired> & Partial<Pick<TBase, TOptional>>;
5
+ /**
6
+ * Simple options for `execCommand`
7
+ */
8
+ export type ExecCommandOptions = string | RequiredAndOptional<ExecCommandOptionsAdvanced, 'command', 'args' | 'cwd' | 'crashOnError' | 'timeout' | 'isVerbose'>;
9
+ /**
10
+ * Advanced options for `execCommand`
11
+ */
12
+ export type ExecCommandOptionsAdvanced = {
13
+ /**
14
+ * Command to run
15
+ */
16
+ readonly command: string;
17
+ /**
18
+ * Arguments for the command
19
+ */
20
+ readonly args: string[];
21
+ /**
22
+ * Current working directory
23
+ *
24
+ * @default process.cwd()
25
+ */
26
+ readonly cwd: string;
27
+ /**
28
+ * If `true` then the command will throw an error if the return code is not `0`
29
+ */
30
+ readonly crashOnError: boolean;
31
+ /**
32
+ * Timeout in milliseconds
33
+ */
34
+ readonly timeout: number;
35
+ /**
36
+ * If `true` then the command and entire CLI output will be logged to the console
37
+ *
38
+ * @default false
39
+ */
40
+ readonly isVerbose?: boolean;
41
+ };
42
+ export {};
43
+ /**
44
+ * TODO: [⏳] Make DEFAULT_TIMEOUT_MS as global constant
45
+ */
@@ -4,7 +4,7 @@ import type { ExpectationAmount } from '../../types/PipelineJson/Expectations';
4
4
  *
5
5
  * @public exported from `@promptbook/utils`
6
6
  */
7
- export declare function splitIntoSentences(text: string): Array<string>;
7
+ export declare function splitIntoSentences(text: string): ReadonlyArray<string>;
8
8
  /**
9
9
  * Counts number of sentences in the text
10
10
  *
@@ -0,0 +1,11 @@
1
+ import type { FilesystemTools } from '../../execution/FilesystemTools';
2
+ /**
3
+ * Checks if the file is executable
4
+ *
5
+ * @private within the repository
6
+ */
7
+ export declare function isExecutable(path: string, fs: FilesystemTools): Promise<boolean>;
8
+ /**
9
+ * Note: Not [~🟢~] because it is not directly dependent on `fs
10
+ * TODO: [🖇] What about symlinks?
11
+ */
@@ -30,7 +30,7 @@ export type CodeBlock = {
30
30
  * @throws {ParseError} if block is not closed properly
31
31
  * @public exported from `@promptbook/markdown-utils`
32
32
  */
33
- export declare function extractAllBlocksFromMarkdown(markdown: string_markdown): Array<CodeBlock>;
33
+ export declare function extractAllBlocksFromMarkdown(markdown: string_markdown): ReadonlyArray<CodeBlock>;
34
34
  /**
35
35
  * TODO: Maybe name for `blockNotation` instead of '```' and '>'
36
36
  */
@@ -5,7 +5,7 @@ import type { string_markdown_section } from '../../types/typeAliases';
5
5
  *
6
6
  * @public exported from `@promptbook/markdown-utils`
7
7
  */
8
- export declare function splitMarkdownIntoSections(markdown: string_markdown): Array<string_markdown_section>;
8
+ export declare function splitMarkdownIntoSections(markdown: string_markdown): ReadonlyArray<string_markdown_section>;
9
9
  /**
10
10
  * TODO: [🏛] This can be part of markdown builder
11
11
  * Note: [🕞] In past (commit 42086e1603cbed506482997c00a8ee979af0a247) there was much more
@@ -2,7 +2,7 @@
2
2
  * Semantic helper
3
3
  *
4
4
  * Keyword is string without diacritics in lowercase [a-z1-9]
5
- * Words are splitted between multiple keywords @see IKeywords
5
+ * Words are splitted between multiple keywords @see Keywords
6
6
  *
7
7
  * For example `"keyword"`
8
8
  *
@@ -15,7 +15,7 @@ export type string_keyword = string;
15
15
  *
16
16
  * @public exported from `@promptbook/utils`
17
17
  */
18
- export type IKeywords = Set<string_keyword>;
18
+ export type Keywords = Set<string_keyword>;
19
19
  /**
20
20
  * TODO: [🌮] Keywords with weight
21
21
  */
@@ -1,5 +1,5 @@
1
1
  import type { really_unknown } from '../organization/really_unknown';
2
- import type { IKeywords } from './IKeywords';
2
+ import type { Keywords } from './IKeywords';
3
3
  /**
4
4
  * Parses keywords from any object and recursively walks through
5
5
  *
@@ -9,7 +9,7 @@ import type { IKeywords } from './IKeywords';
9
9
  * @returns {Set} of keywords without diacritics in lowercase
10
10
  * @public exported from `@promptbook/utils`
11
11
  */
12
- export declare function parseKeywords(input: really_unknown): IKeywords;
12
+ export declare function parseKeywords(input: really_unknown): Keywords;
13
13
  /**
14
14
  * Note: Not using spread in input param because of keeping second parameter for options
15
15
  * TODO: [🌺] Use some intermediate util splitWords
@@ -1,4 +1,4 @@
1
- import type { IKeywords } from './IKeywords';
1
+ import type { Keywords } from './IKeywords';
2
2
  /**
3
3
  * Parses keywords from a string
4
4
  *
@@ -6,4 +6,4 @@ import type { IKeywords } from './IKeywords';
6
6
  * @returns {Set} of keywords without diacritics in lowercase
7
7
  * @public exported from `@promptbook/utils`
8
8
  */
9
- export declare function parseKeywordsFromString(input: string): IKeywords;
9
+ export declare function parseKeywordsFromString(input: string): Keywords;
@@ -1,4 +1,4 @@
1
- import type { IKeywords } from './IKeywords';
1
+ import type { Keywords } from './IKeywords';
2
2
  /**
3
3
  * @@@
4
4
  *
@@ -7,4 +7,4 @@ import type { IKeywords } from './IKeywords';
7
7
  * @returns
8
8
  * @public exported from `@promptbook/utils`
9
9
  */
10
- export declare function searchKeywords(haystack: IKeywords, needle: IKeywords): boolean;
10
+ export declare function searchKeywords(haystack: Keywords, needle: Keywords): boolean;
@@ -9,4 +9,4 @@ import type { really_any } from './really_any';
9
9
  * @returns void
10
10
  * @private within the repository
11
11
  */
12
- export declare function TODO_USE(...value: Array<really_any>): void;
12
+ export declare function TODO_USE(...value: ReadonlyArray<really_any>): void;
@@ -13,4 +13,4 @@ import type { really_any } from './really_any';
13
13
  * @returns void
14
14
  * @private within the repository
15
15
  */
16
- export declare function keepUnused<TTypeToKeep1 = really_any, TTypeToKeep2 = really_any, TTypeToKeep3 = really_any>(...valuesToKeep: Array<really_any>): void;
16
+ export declare function keepUnused<TTypeToKeep1 = really_any, TTypeToKeep2 = really_any, TTypeToKeep3 = really_any>(...valuesToKeep: ReadonlyArray<really_any>): void;
@@ -3,7 +3,7 @@ import type { number_seed } from '../../types/typeAliases';
3
3
  * Generates random seed
4
4
  *
5
5
  * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
6
- * Warning: This function is not cryptographically secure (it uses Math.random internally)
6
+ * Warning: This function is NOT cryptographically secure (it uses Math.random internally)
7
7
  * @public exported from `@promptbook/utils`
8
8
  */
9
9
  export declare function $randomSeed(): number_seed;
@@ -4,4 +4,4 @@
4
4
  * @deprecated use new javascript set methods instead @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
5
5
  * @public exported from `@promptbook/utils`
6
6
  */
7
- export declare function intersection<TItem>(...sets: Array<Set<TItem>>): Set<TItem>;
7
+ export declare function intersection<TItem>(...sets: ReadonlyArray<Set<TItem>>): Set<TItem>;
@@ -4,4 +4,4 @@
4
4
  * @deprecated use new javascript set methods instead @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
5
5
  * @public exported from `@promptbook/utils`
6
6
  */
7
- export declare function union<TItem>(...sets: Array<Set<TItem>>): Set<TItem>;
7
+ export declare function union<TItem>(...sets: ReadonlyArray<Set<TItem>>): Set<TItem>;
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Additional options for `unwrapResult`
3
3
  */
4
- interface UnwrapResultOptions {
4
+ type UnwrapResultOptions = {
5
5
  /**
6
6
  * If true, the text is trimmed before processing
7
7
  */
8
- isTrimmed?: boolean;
8
+ readonly isTrimmed?: boolean;
9
9
  /**
10
10
  * If true, the introduce sentence is removed
11
11
  *
@@ -15,8 +15,8 @@ interface UnwrapResultOptions {
15
15
  *
16
16
  * @default true
17
17
  */
18
- isIntroduceSentenceRemoved?: boolean;
19
- }
18
+ readonly isIntroduceSentenceRemoved?: boolean;
19
+ };
20
20
  /**
21
21
  * Removes quotes and optional introduce text from a string
22
22
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/openai",
3
- "version": "0.72.0-9",
3
+ "version": "0.73.0",
4
4
  "description": "Supercharge your use of large language models",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -11,6 +11,7 @@
11
11
  "contributors": [
12
12
  "Pavol Hejný <me@pavolhejny.com> (https://www.pavolhejny.com/)"
13
13
  ],
14
+ "todo-0": "TODO: [❇️] Make better list of keywords",
14
15
  "keywords": [
15
16
  "ai",
16
17
  "llm",
@@ -30,7 +31,8 @@
30
31
  "o1",
31
32
  "o1-mini",
32
33
  "o1-preview",
33
- "anthropic"
34
+ "anthropic",
35
+ "LLMOps"
34
36
  ],
35
37
  "license": "CC-BY-4.0",
36
38
  "bugs": {
@@ -51,11 +53,11 @@
51
53
  "module": "./esm/index.es.js",
52
54
  "typings": "./esm/typings/src/_packages/openai.index.d.ts",
53
55
  "peerDependencies": {
54
- "@promptbook/core": "0.72.0-9"
56
+ "@promptbook/core": "0.73.0"
55
57
  },
56
58
  "dependencies": {
57
59
  "colors": "1.4.0",
58
60
  "openai": "4.63.0",
59
- "spacetrim": "0.11.39"
61
+ "spacetrim": "0.11.59"
60
62
  }
61
63
  }
package/umd/index.umd.js CHANGED
@@ -14,7 +14,7 @@
14
14
  /**
15
15
  * The version of the Promptbook library
16
16
  */
17
- var PROMPTBOOK_VERSION = '0.72.0-8';
17
+ var PROMPTBOOK_VERSION = '0.72.0';
18
18
  // TODO: [main] !!!! List here all the versions and annotate + put into script
19
19
 
20
20
  /*! *****************************************************************************
@@ -463,10 +463,10 @@
463
463
  'content',
464
464
  'context',
465
465
  'knowledge',
466
- 'samples',
466
+ 'examples',
467
467
  'modelName',
468
468
  'currentDate',
469
- // <- TODO: !!!!! list here all command names
469
+ // <- TODO: list here all command names
470
470
  // <- TODO: Add more like 'date', 'modelName',...
471
471
  // <- TODO: Add [emoji] + instructions ACRY when adding new reserved parameter
472
472
  ]);
@@ -1421,7 +1421,6 @@
1421
1421
  * @param options which are relevant are directly passed to the OpenAI client
1422
1422
  */
1423
1423
  function OpenAiExecutionTools(options) {
1424
- if (options === void 0) { options = {}; }
1425
1424
  this.options = options;
1426
1425
  /**
1427
1426
  * OpenAI API client.
@@ -1449,8 +1448,8 @@
1449
1448
  if (this.client === null) {
1450
1449
  openAiOptions = __assign({}, this.options);
1451
1450
  delete openAiOptions.isVerbose;
1452
- delete openAiOptions.user;
1453
- this.client = new OpenAI__default["default"](__assign({}, openAiOptions));
1451
+ delete openAiOptions.userId;
1452
+ this.client = new OpenAI__default["default"](openAiOptions);
1454
1453
  }
1455
1454
  return [2 /*return*/, this.client];
1456
1455
  });
@@ -1497,11 +1496,12 @@
1497
1496
  * Calls OpenAI API to use a chat model.
1498
1497
  */
1499
1498
  OpenAiExecutionTools.prototype.callChatModel = function (prompt) {
1499
+ var _a;
1500
1500
  return __awaiter(this, void 0, void 0, function () {
1501
1501
  var content, parameters, modelRequirements, format, client, modelName, modelSettings, rawPromptContent, rawRequest, start, complete, rawResponse, resultContent, usage;
1502
1502
  var _this = this;
1503
- return __generator(this, function (_a) {
1504
- switch (_a.label) {
1503
+ return __generator(this, function (_b) {
1504
+ switch (_b.label) {
1505
1505
  case 0:
1506
1506
  if (this.options.isVerbose) {
1507
1507
  console.info('💬 OpenAI callChatModel call', { prompt: prompt });
@@ -1509,7 +1509,7 @@
1509
1509
  content = prompt.content, parameters = prompt.parameters, modelRequirements = prompt.modelRequirements, format = prompt.format;
1510
1510
  return [4 /*yield*/, this.getClient()];
1511
1511
  case 1:
1512
- client = _a.sent();
1512
+ client = _b.sent();
1513
1513
  // TODO: [☂] Use here more modelRequirements
1514
1514
  if (modelRequirements.modelVariant !== 'CHAT') {
1515
1515
  throw new PipelineExecutionError('Use callChatModel only for CHAT variant');
@@ -1541,7 +1541,7 @@
1541
1541
  role: 'user',
1542
1542
  content: rawPromptContent,
1543
1543
  },
1544
- ], false), user: this.options.user });
1544
+ ], false), user: (_a = this.options.userId) === null || _a === void 0 ? void 0 : _a.toString() });
1545
1545
  start = getCurrentIsoDate();
1546
1546
  if (this.options.isVerbose) {
1547
1547
  console.info(colors__default["default"].bgWhite('rawRequest'), JSON.stringify(rawRequest, null, 4));
@@ -1553,7 +1553,7 @@
1553
1553
  throw error;
1554
1554
  })];
1555
1555
  case 2:
1556
- rawResponse = _a.sent();
1556
+ rawResponse = _b.sent();
1557
1557
  if (this.options.isVerbose) {
1558
1558
  console.info(colors__default["default"].bgWhite('rawResponse'), JSON.stringify(rawResponse, null, 4));
1559
1559
  }
@@ -1592,11 +1592,12 @@
1592
1592
  * Calls OpenAI API to use a complete model.
1593
1593
  */
1594
1594
  OpenAiExecutionTools.prototype.callCompletionModel = function (prompt) {
1595
+ var _a;
1595
1596
  return __awaiter(this, void 0, void 0, function () {
1596
1597
  var content, parameters, modelRequirements, client, modelName, modelSettings, rawPromptContent, rawRequest, start, complete, rawResponse, resultContent, usage;
1597
1598
  var _this = this;
1598
- return __generator(this, function (_a) {
1599
- switch (_a.label) {
1599
+ return __generator(this, function (_b) {
1600
+ switch (_b.label) {
1600
1601
  case 0:
1601
1602
  if (this.options.isVerbose) {
1602
1603
  console.info('🖋 OpenAI callCompletionModel call', { prompt: prompt });
@@ -1604,7 +1605,7 @@
1604
1605
  content = prompt.content, parameters = prompt.parameters, modelRequirements = prompt.modelRequirements;
1605
1606
  return [4 /*yield*/, this.getClient()];
1606
1607
  case 1:
1607
- client = _a.sent();
1608
+ client = _b.sent();
1608
1609
  // TODO: [☂] Use here more modelRequirements
1609
1610
  if (modelRequirements.modelVariant !== 'COMPLETION') {
1610
1611
  throw new PipelineExecutionError('Use callCompletionModel only for COMPLETION variant');
@@ -1619,7 +1620,7 @@
1619
1620
  // <- Note: [🧆]
1620
1621
  };
1621
1622
  rawPromptContent = replaceParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
1622
- rawRequest = __assign(__assign({}, modelSettings), { prompt: rawPromptContent, user: this.options.user });
1623
+ rawRequest = __assign(__assign({}, modelSettings), { prompt: rawPromptContent, user: (_a = this.options.userId) === null || _a === void 0 ? void 0 : _a.toString() });
1623
1624
  start = getCurrentIsoDate();
1624
1625
  if (this.options.isVerbose) {
1625
1626
  console.info(colors__default["default"].bgWhite('rawRequest'), JSON.stringify(rawRequest, null, 4));
@@ -1631,7 +1632,7 @@
1631
1632
  throw error;
1632
1633
  })];
1633
1634
  case 2:
1634
- rawResponse = _a.sent();
1635
+ rawResponse = _b.sent();
1635
1636
  if (this.options.isVerbose) {
1636
1637
  console.info(colors__default["default"].bgWhite('rawResponse'), JSON.stringify(rawResponse, null, 4));
1637
1638
  }
@@ -1857,17 +1858,16 @@
1857
1858
  assistant_id: this.assistantId,
1858
1859
  thread: {
1859
1860
  messages: [
1860
- // TODO: !!!!!! Allow threads to be passed
1861
+ // TODO: [🗯] !! Allow threads to be passed
1861
1862
  { role: 'user', content: rawPromptContent },
1862
1863
  ],
1863
1864
  },
1864
- // !!!!!! user: this.options.user,
1865
+ // <- TODO: Add user identification here> user: this.options.user,
1865
1866
  };
1866
1867
  start = getCurrentIsoDate();
1867
1868
  if (this.options.isVerbose) {
1868
1869
  console.info(colors__default["default"].bgWhite('rawRequest'), JSON.stringify(rawRequest, null, 4));
1869
1870
  }
1870
- console.log('!!!!!! OpenAI client', client);
1871
1871
  return [4 /*yield*/, client.beta.threads.createAndRunStream(rawRequest)];
1872
1872
  case 2:
1873
1873
  stream = _g.sent();
@@ -1885,7 +1885,7 @@
1885
1885
  messageDelta.content[0].type === 'text') {
1886
1886
  console.info('messageDelta', (_a = messageDelta.content[0].text) === null || _a === void 0 ? void 0 : _a.value);
1887
1887
  }
1888
- // TODO: !!!!!! report progress
1888
+ // <- TODO: [🐚] Make streaming and running tasks working
1889
1889
  });
1890
1890
  stream.on('messageCreated', function (message) {
1891
1891
  if (_this.options.isVerbose) {
@@ -1913,18 +1913,20 @@
1913
1913
  throw new PipelineExecutionError("There is NOT 'text' BUT ".concat((_b = rawResponse[0].content[0]) === null || _b === void 0 ? void 0 : _b.type, " finalMessages content type from OpenAI"));
1914
1914
  }
1915
1915
  resultContent = (_c = rawResponse[0].content[0]) === null || _c === void 0 ? void 0 : _c.text.value;
1916
- // <- TODO: !!!!!! There are also annotations, maybe use them
1916
+ // <- TODO: [🧠] There are also annotations, maybe use them
1917
1917
  // eslint-disable-next-line prefer-const
1918
1918
  complete = getCurrentIsoDate();
1919
1919
  usage = UNCERTAIN_USAGE;
1920
- // TODO: !!!!!!> = computeOpenAiUsage(content, resultContent || '', rawResponse);
1920
+ // <- TODO: [🥘] Compute real usage for assistant
1921
+ // ?> const usage = computeOpenAiUsage(content, resultContent || '', rawResponse);
1921
1922
  if (resultContent === null) {
1922
1923
  throw new PipelineExecutionError('No response message from OpenAI');
1923
1924
  }
1924
1925
  return [2 /*return*/, $asDeeplyFrozenSerializableJson('OpenAiAssistantExecutionTools ChatPromptResult', {
1925
1926
  content: resultContent,
1926
1927
  modelName: 'assistant',
1927
- // <- TODO: !!!!!! Can we detect really used model: rawResponse.model || modelName,
1928
+ // <- TODO: [🥘] Detect used model in assistant
1929
+ // ?> model: rawResponse.model || modelName,
1928
1930
  timing: {
1929
1931
  start: start,
1930
1932
  complete: complete,
@@ -1942,7 +1944,6 @@
1942
1944
  return OpenAiAssistantExecutionTools;
1943
1945
  }(OpenAiExecutionTools));
1944
1946
  /**
1945
- * TODO: !!!!!! DO not use colors - can be used in browser
1946
1947
  * TODO: [🧠][🧙‍♂️] Maybe there can be some wizzard for thoose who want to use just OpenAI
1947
1948
  * TODO: Maybe make custom OpenAiError
1948
1949
  * TODO: [🧠][🈁] Maybe use `isDeterministic` from options
@@ -2100,7 +2101,7 @@
2100
2101
  this.storage = globalScope[storageName];
2101
2102
  }
2102
2103
  $Register.prototype.list = function () {
2103
- // <- TODO: ReadonlyDeep<Array<TRegistered>>
2104
+ // <- TODO: ReadonlyDeep<ReadonlyArray<TRegistered>>
2104
2105
  return this.storage;
2105
2106
  };
2106
2107
  $Register.prototype.register = function (registered) {