@promptbook/openai 0.72.0-6 → 0.72.0-7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/esm/index.es.js +22 -4
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/browser.index.d.ts +1 -1
- package/esm/typings/src/_packages/core.index.d.ts +24 -10
- package/esm/typings/src/_packages/node.index.d.ts +6 -2
- package/esm/typings/src/_packages/types.index.d.ts +28 -20
- package/esm/typings/src/cli/cli-commands/about.d.ts +1 -1
- package/esm/typings/src/cli/cli-commands/hello.d.ts +2 -1
- package/esm/typings/src/cli/cli-commands/make.d.ts +1 -1
- package/esm/typings/src/cli/cli-commands/prettify.d.ts +2 -1
- package/esm/typings/src/cli/cli-commands/test-command.d.ts +13 -0
- package/esm/typings/src/cli/main.d.ts +1 -1
- package/esm/typings/src/cli/promptbookCli.d.ts +1 -1
- package/esm/typings/src/collection/constructors/createCollectionFromDirectory.d.ts +8 -5
- package/esm/typings/src/commands/EXPECT/expectCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/FOREACH/foreachCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/FORMAT/formatCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/JOKER/jokerCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/KNOWLEDGE/knowledgeCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/KNOWLEDGE/utils/sourceContentToName.d.ts +11 -0
- package/esm/typings/src/commands/KNOWLEDGE/utils/sourceContentToName.test.d.ts +4 -0
- package/esm/typings/src/commands/MODEL/modelCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/PARAMETER/parameterCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/PERSONA/personaCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/POSTPROCESS/postprocessCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/PROMPTBOOK_VERSION/promptbookVersionCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/TEMPLATE/templateCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/URL/urlCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/X_ACTION/actionCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/X_INSTRUMENT/instrumentCommandParser.d.ts +1 -1
- package/esm/typings/src/commands/_BOILERPLATE/boilerplateCommandParser.d.ts +1 -1
- package/esm/typings/src/config.d.ts +10 -0
- package/esm/typings/src/conversion/pipelineStringToJson.d.ts +2 -15
- package/esm/typings/src/conversion/validation/_importPipeline.d.ts +1 -1
- package/esm/typings/src/conversion/validation/validatePipeline.d.ts +5 -5
- package/esm/typings/src/{knowledge/dialogs → dialogs}/callback/CallbackInterfaceTools.d.ts +2 -2
- package/esm/typings/src/{knowledge/dialogs → dialogs}/callback/CallbackInterfaceToolsOptions.d.ts +2 -2
- package/esm/typings/src/{knowledge/dialogs → dialogs}/simple-prompt/SimplePromptInterfaceTools.d.ts +4 -4
- package/esm/typings/src/errors/KnowledgeScrapeError.d.ts +9 -0
- package/esm/typings/src/errors/MissingToolsError.d.ts +9 -0
- package/esm/typings/src/execution/ExecutionTools.d.ts +3 -3
- package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorOptions.d.ts +5 -2
- package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorSettings.d.ts +2 -13
- package/esm/typings/src/execution/createPipelineExecutor/00-createPipelineExecutor.d.ts +1 -1
- package/esm/typings/src/execution/createPipelineExecutor/10-executePipeline.d.ts +1 -1
- package/esm/typings/src/execution/translation/automatic-translate/translateMessages.d.ts +3 -0
- package/esm/typings/src/execution/utils/forEachAsync.d.ts +1 -0
- package/esm/typings/src/llm-providers/_common/createLlmToolsFromConfigurationFromEnv.d.ts +1 -1
- package/esm/typings/src/llm-providers/_common/createLlmToolsFromEnv.d.ts +1 -1
- package/esm/typings/src/llm-providers/_common/getLlmToolsForCli.d.ts +1 -1
- package/esm/typings/src/llm-providers/anthropic-claude/playground/playground.d.ts +1 -0
- package/esm/typings/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.d.ts +6 -0
- package/esm/typings/src/llm-providers/azure-openai/playground/playground.d.ts +1 -0
- package/esm/typings/src/llm-providers/langtail/playground/playground.d.ts +3 -0
- package/esm/typings/src/llm-providers/multiple/playground/playground.d.ts +3 -0
- package/esm/typings/src/llm-providers/openai/playground/playground.d.ts +1 -0
- package/esm/typings/src/llm-providers/remote/playground/playground.d.ts +3 -0
- package/esm/typings/src/personas/preparePersona.d.ts +2 -2
- package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +67 -0
- package/esm/typings/src/prepare/preparePipeline.d.ts +2 -2
- package/esm/typings/src/prepare/prepareTemplates.d.ts +2 -2
- package/esm/typings/src/scrapers/_common/Converter.d.ts +28 -0
- package/esm/typings/src/scrapers/_common/Scraper.d.ts +71 -0
- package/esm/typings/src/scrapers/_common/ScraperIntermediateSource.d.ts +11 -0
- package/esm/typings/src/{knowledge/prepare-knowledge → scrapers}/_common/prepareKnowledgePieces.d.ts +4 -4
- package/esm/typings/src/scrapers/_common/utils/getScraperIntermediateSource.d.ts +33 -0
- package/esm/typings/src/scrapers/_common/utils/getScraperIntermediateSource.test.d.ts +4 -0
- package/esm/typings/src/scrapers/_common/utils/makeKnowledgeSourceHandler.d.ts +10 -0
- package/esm/typings/src/scrapers/document/documentScraper.d.ts +37 -0
- package/esm/typings/src/scrapers/document/documentScraper.test.d.ts +4 -0
- package/esm/typings/src/scrapers/document/playground/document-scraper-playground.d.ts +5 -0
- package/esm/typings/src/scrapers/document-legacy/legacyDocumentScraper.d.ts +37 -0
- package/esm/typings/src/scrapers/document-legacy/legacyDocumentScraper.test.d.ts +4 -0
- package/esm/typings/src/scrapers/document-legacy/playground/legacy-document-scraper-playground.d.ts +5 -0
- package/esm/typings/src/scrapers/index.d.ts +7 -0
- package/esm/typings/src/scrapers/markdown/markdownScraper.d.ts +29 -0
- package/esm/typings/src/scrapers/markdown/playground/markdown-scraper-playground.d.ts +5 -0
- package/esm/typings/src/scrapers/pdf/pdfScraper.d.ts +35 -0
- package/esm/typings/src/scrapers/pdf/playground/pdf-scraper-playground.d.ts +5 -0
- package/esm/typings/src/scrapers/website/playground/website-scraper-playground.d.ts +5 -0
- package/esm/typings/src/scrapers/website/utils/markdownConverter.d.ts +12 -0
- package/esm/typings/src/scrapers/website/websiteScraper.d.ts +43 -0
- package/esm/typings/src/storage/{files-storage/FilesStorage.d.ts → file-cache-storage/FileCacheStorage.d.ts} +5 -5
- package/esm/typings/src/storage/file-cache-storage/FileCacheStorageOptions.d.ts +10 -0
- package/esm/typings/src/storage/{files-storage → file-cache-storage}/utils/nameToSubfolderPath.d.ts +1 -1
- package/esm/typings/src/storage/file-cache-storage/utils/nameToSubfolderPath.test.d.ts +1 -0
- package/esm/typings/src/storage/local-storage/getLocalStorage.d.ts +1 -1
- package/esm/typings/src/storage/local-storage/getSessionStorage.d.ts +1 -1
- package/esm/typings/src/types/PipelineJson/KnowledgeSourceJson.d.ts +9 -2
- package/esm/typings/src/types/PipelineJson/PipelineJson.d.ts +2 -2
- package/esm/typings/src/types/typeAliases.d.ts +8 -11
- package/esm/typings/src/utils/execCommand/$execCommand.d.ts +14 -0
- package/esm/typings/src/utils/execCommand/$execCommands.d.ts +17 -0
- package/esm/typings/src/utils/execCommand/IExecCommandOptions.d.ts +23 -0
- package/esm/typings/src/utils/execCommand/execCommand.test.d.ts +1 -0
- package/esm/typings/src/utils/execCommand/execCommandNormalizeOptions.d.ts +10 -0
- package/esm/typings/src/utils/execCommand/execCommandNormalizeOptions.test.d.ts +1 -0
- package/esm/typings/src/utils/files/$isDirectoryExisting.d.ts +3 -3
- package/esm/typings/src/utils/files/$isFileExisting.d.ts +3 -3
- package/esm/typings/src/utils/files/$listAllFiles.d.ts +5 -4
- package/esm/typings/src/utils/files/extensionToMimeType.d.ts +8 -0
- package/esm/typings/src/utils/files/extensionToMimeType.test.d.ts +1 -0
- package/esm/typings/src/utils/files/getFileExtension.d.ts +8 -0
- package/esm/typings/src/utils/files/getFileExtension.test.d.ts +1 -0
- package/esm/typings/src/utils/validators/filePath/isValidFilePath.d.ts +2 -2
- package/package.json +2 -2
- package/umd/index.umd.js +22 -4
- package/umd/index.umd.js.map +1 -1
- package/esm/typings/src/knowledge/prepare-knowledge/_common/Scraper.d.ts +0 -37
- package/esm/typings/src/knowledge/prepare-knowledge/markdown/playground/markdown-knowledge-playground.d.ts +0 -2
- package/esm/typings/src/knowledge/prepare-knowledge/markdown/prepareKnowledgeFromMarkdown.d.ts +0 -14
- package/esm/typings/src/knowledge/prepare-knowledge/pdf/prepareKnowledgeFromPdf.d.ts +0 -15
- package/esm/typings/src/prepare/PrepareOptions.d.ts +0 -22
- package/esm/typings/src/storage/files-storage/FilesStorageOptions.d.ts +0 -10
- /package/esm/typings/src/{knowledge/dialogs → dialogs}/user-interface-execution-tools.test.d.ts +0 -0
- /package/esm/typings/src/{knowledge/prepare-knowledge → scrapers}/_common/prepareKnowledgePieces.test.d.ts +0 -0
- /package/esm/typings/src/{knowledge/prepare-knowledge/markdown/prepareKnowledgeFromMarkdown.test.d.ts → scrapers/markdown/markdownScraper.test.d.ts} +0 -0
- /package/esm/typings/src/{knowledge/prepare-knowledge/pdf/prepareKnowledgeFromPdf.test.d.ts → scrapers/website/utils/markdownConverter.test.d.ts} +0 -0
- /package/esm/typings/src/{storage/files-storage/utils/nameToSubfolderPath.test.d.ts → scrapers/website/websiteScraper.test.d.ts} +0 -0
|
@@ -10,9 +10,9 @@ import type { ExpectCommand } from '../commands/EXPECT/ExpectCommand';
|
|
|
10
10
|
import type { ForeachJson } from '../commands/FOREACH/ForeachJson';
|
|
11
11
|
import type { FormatCommand } from '../commands/FORMAT/FormatCommand';
|
|
12
12
|
import type { TemplateType } from '../commands/TEMPLATE/TemplateTypes';
|
|
13
|
-
import type { PipelineStringToJsonOptions } from '../conversion/pipelineStringToJson';
|
|
14
13
|
import type { PrettifyOptions } from '../conversion/prettify/PrettifyOptions';
|
|
15
14
|
import type { renderPipelineMermaidOptions } from '../conversion/prettify/renderPipelineMermaidOptions';
|
|
15
|
+
import type { CallbackInterfaceToolsOptions } from '../dialogs/callback/CallbackInterfaceToolsOptions';
|
|
16
16
|
import type { ErrorJson } from '../errors/utils/ErrorJson';
|
|
17
17
|
import type { AvailableModel } from '../execution/AvailableModel';
|
|
18
18
|
import type { CommonExecutionToolsOptions } from '../execution/CommonExecutionToolsOptions';
|
|
@@ -37,7 +37,6 @@ import type { UserInterfaceTools } from '../execution/UserInterfaceTools';
|
|
|
37
37
|
import type { UserInterfaceToolsPromptDialogOptions } from '../execution/UserInterfaceTools';
|
|
38
38
|
import type { FormatSubvalueDefinition } from '../formats/_common/FormatSubvalueDefinition';
|
|
39
39
|
import type { CsvSettings } from '../formats/csv/CsvSettings';
|
|
40
|
-
import type { CallbackInterfaceToolsOptions } from '../knowledge/dialogs/callback/CallbackInterfaceToolsOptions';
|
|
41
40
|
import type { LlmToolsConfiguration } from '../llm-providers/_common/LlmToolsConfiguration';
|
|
42
41
|
import type { LlmToolsMetadata } from '../llm-providers/_common/LlmToolsMetadata';
|
|
43
42
|
import type { LlmToolsOptions } from '../llm-providers/_common/LlmToolsOptions';
|
|
@@ -66,11 +65,15 @@ import type { RemoteLlmExecutionToolsOptions } from '../llm-providers/remote/int
|
|
|
66
65
|
import type { RemoteServerOptions } from '../llm-providers/remote/interfaces/RemoteServerOptions';
|
|
67
66
|
import type { AnonymousRemoteServerOptions } from '../llm-providers/remote/interfaces/RemoteServerOptions';
|
|
68
67
|
import type { CollectionRemoteServerOptions } from '../llm-providers/remote/interfaces/RemoteServerOptions';
|
|
69
|
-
import type {
|
|
68
|
+
import type { PrepareAndScrapeOptions } from '../prepare/PrepareAndScrapeOptions';
|
|
69
|
+
import type { Converter } from '../scrapers/_common/Converter';
|
|
70
|
+
import type { Scraper } from '../scrapers/_common/Scraper';
|
|
71
|
+
import type { ScraperSourceHandler } from '../scrapers/_common/Scraper';
|
|
72
|
+
import type { ScraperIntermediateSource } from '../scrapers/_common/ScraperIntermediateSource';
|
|
70
73
|
import type { JavascriptExecutionToolsOptions } from '../scripting/javascript/JavascriptExecutionToolsOptions';
|
|
71
74
|
import type { PostprocessingFunction } from '../scripting/javascript/JavascriptExecutionToolsOptions';
|
|
72
75
|
import type { PromptbookStorage } from '../storage/_common/PromptbookStorage';
|
|
73
|
-
import type {
|
|
76
|
+
import type { FileCacheStorageOptions } from '../storage/file-cache-storage/FileCacheStorageOptions';
|
|
74
77
|
import type { ExecutionPromptReportJson } from '../types/execution-report/ExecutionPromptReportJson';
|
|
75
78
|
import type { ExecutionReportJson } from '../types/execution-report/ExecutionReportJson';
|
|
76
79
|
import type { ExecutionReportString } from '../types/execution-report/ExecutionReportString';
|
|
@@ -167,13 +170,12 @@ import type { string_sha256 } from '../types/typeAliases';
|
|
|
167
170
|
import type { string_semantic_version } from '../types/typeAliases';
|
|
168
171
|
import type { string_version_dependency } from '../types/typeAliases';
|
|
169
172
|
import type { string_file_extension } from '../types/typeAliases';
|
|
170
|
-
import type {
|
|
171
|
-
import type {
|
|
172
|
-
import type { string_file_path } from '../types/typeAliases';
|
|
173
|
-
import type { string_folder_absolute_path } from '../types/typeAliases';
|
|
174
|
-
import type { string_folder_relative_path } from '../types/typeAliases';
|
|
175
|
-
import type { string_folder_path } from '../types/typeAliases';
|
|
173
|
+
import type { string_absolute_filename } from '../types/typeAliases';
|
|
174
|
+
import type { string_relative_filename } from '../types/typeAliases';
|
|
176
175
|
import type { string_filename } from '../types/typeAliases';
|
|
176
|
+
import type { string_absolute_dirname } from '../types/typeAliases';
|
|
177
|
+
import type { string_relative_dirname } from '../types/typeAliases';
|
|
178
|
+
import type { string_dirname } from '../types/typeAliases';
|
|
177
179
|
import type { string_person_fullname } from '../types/typeAliases';
|
|
178
180
|
import type { string_person_profile } from '../types/typeAliases';
|
|
179
181
|
import type { string_license } from '../types/typeAliases';
|
|
@@ -216,6 +218,8 @@ import type { number_megabytes } from '../types/typeAliases';
|
|
|
216
218
|
import type { number_gigabytes } from '../types/typeAliases';
|
|
217
219
|
import type { number_terabytes } from '../types/typeAliases';
|
|
218
220
|
import type { Registered } from '../utils/$Register';
|
|
221
|
+
import type { IExecCommandOptions } from '../utils/execCommand/IExecCommandOptions';
|
|
222
|
+
import type { IExecCommandOptionsAdvanced } from '../utils/execCommand/IExecCommandOptions';
|
|
219
223
|
import type { FromtoItems } from '../utils/FromtoItems';
|
|
220
224
|
import type { CodeBlock } from '../utils/markdown/extractAllBlocksFromMarkdown';
|
|
221
225
|
import type { MarkdownSection } from '../utils/markdown/parseMarkdownSection';
|
|
@@ -242,9 +246,9 @@ export type { ExpectCommand };
|
|
|
242
246
|
export type { ForeachJson };
|
|
243
247
|
export type { FormatCommand };
|
|
244
248
|
export type { TemplateType };
|
|
245
|
-
export type { PipelineStringToJsonOptions };
|
|
246
249
|
export type { PrettifyOptions };
|
|
247
250
|
export type { renderPipelineMermaidOptions };
|
|
251
|
+
export type { CallbackInterfaceToolsOptions };
|
|
248
252
|
export type { ErrorJson };
|
|
249
253
|
export type { AvailableModel };
|
|
250
254
|
export type { CommonExecutionToolsOptions };
|
|
@@ -269,7 +273,6 @@ export type { UserInterfaceTools };
|
|
|
269
273
|
export type { UserInterfaceToolsPromptDialogOptions };
|
|
270
274
|
export type { FormatSubvalueDefinition };
|
|
271
275
|
export type { CsvSettings };
|
|
272
|
-
export type { CallbackInterfaceToolsOptions };
|
|
273
276
|
export type { LlmToolsConfiguration };
|
|
274
277
|
export type { LlmToolsMetadata };
|
|
275
278
|
export type { LlmToolsOptions };
|
|
@@ -298,11 +301,15 @@ export type { RemoteLlmExecutionToolsOptions };
|
|
|
298
301
|
export type { RemoteServerOptions };
|
|
299
302
|
export type { AnonymousRemoteServerOptions };
|
|
300
303
|
export type { CollectionRemoteServerOptions };
|
|
301
|
-
export type {
|
|
304
|
+
export type { PrepareAndScrapeOptions };
|
|
305
|
+
export type { Converter };
|
|
306
|
+
export type { Scraper };
|
|
307
|
+
export type { ScraperSourceHandler };
|
|
308
|
+
export type { ScraperIntermediateSource };
|
|
302
309
|
export type { JavascriptExecutionToolsOptions };
|
|
303
310
|
export type { PostprocessingFunction };
|
|
304
311
|
export type { PromptbookStorage };
|
|
305
|
-
export type {
|
|
312
|
+
export type { FileCacheStorageOptions };
|
|
306
313
|
export type { ExecutionPromptReportJson };
|
|
307
314
|
export type { ExecutionReportJson };
|
|
308
315
|
export type { ExecutionReportString };
|
|
@@ -399,13 +406,12 @@ export type { string_sha256 };
|
|
|
399
406
|
export type { string_semantic_version };
|
|
400
407
|
export type { string_version_dependency };
|
|
401
408
|
export type { string_file_extension };
|
|
402
|
-
export type {
|
|
403
|
-
export type {
|
|
404
|
-
export type { string_file_path };
|
|
405
|
-
export type { string_folder_absolute_path };
|
|
406
|
-
export type { string_folder_relative_path };
|
|
407
|
-
export type { string_folder_path };
|
|
409
|
+
export type { string_absolute_filename };
|
|
410
|
+
export type { string_relative_filename };
|
|
408
411
|
export type { string_filename };
|
|
412
|
+
export type { string_absolute_dirname };
|
|
413
|
+
export type { string_relative_dirname };
|
|
414
|
+
export type { string_dirname };
|
|
409
415
|
export type { string_person_fullname };
|
|
410
416
|
export type { string_person_profile };
|
|
411
417
|
export type { string_license };
|
|
@@ -448,6 +454,8 @@ export type { number_megabytes };
|
|
|
448
454
|
export type { number_gigabytes };
|
|
449
455
|
export type { number_terabytes };
|
|
450
456
|
export type { Registered };
|
|
457
|
+
export type { IExecCommandOptions };
|
|
458
|
+
export type { IExecCommandOptionsAdvanced };
|
|
451
459
|
export type { FromtoItems };
|
|
452
460
|
export type { CodeBlock };
|
|
453
461
|
export type { MarkdownSection };
|
|
@@ -7,5 +7,5 @@ import type { Command as Program } from 'commander';
|
|
|
7
7
|
export declare function initializeAboutCommand(program: Program): void;
|
|
8
8
|
/**
|
|
9
9
|
* TODO: [🗽] Unite branding and make single place for it
|
|
10
|
-
* Note: [🟡]
|
|
10
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
11
11
|
*/
|
|
@@ -6,5 +6,6 @@ import type { Command as Program } from 'commander';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function initializeHelloCommand(program: Program): void;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* TODO: [🧠][🐣] Make here some easter egg with generated hello greeting via LLM models
|
|
10
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
10
11
|
*/
|
|
@@ -9,6 +9,6 @@ export declare function initializeMakeCommand(program: Program): void;
|
|
|
9
9
|
* TODO: [🥃][main] !!! Allow `ptbk make` without configuring any llm tools
|
|
10
10
|
* TODO: Maybe remove this command - "about" command should be enough?
|
|
11
11
|
* TODO: [0] DRY Javascript and typescript - Maybe make ONLY typescript and for javascript just remove types
|
|
12
|
-
* Note: [🟡]
|
|
12
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
13
13
|
* TODO: [🖇] What about symlinks? Maybe flag --follow-symlinks
|
|
14
14
|
*/
|
|
@@ -6,6 +6,7 @@ import type { Command as Program } from 'commander';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function initializePrettifyCommand(program: Program): void;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* TODO: [😶] Unite floder listing
|
|
10
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
10
11
|
* TODO: [🖇] What about symlinks? Maybe flag --follow-symlinks
|
|
11
12
|
*/
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Command as Program } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Initializes `test` command for Promptbook CLI utilities
|
|
4
|
+
*
|
|
5
|
+
* @private internal function of `promptbookCli`
|
|
6
|
+
*/
|
|
7
|
+
export declare function initializeTestCommand(program: Program): void;
|
|
8
|
+
/**
|
|
9
|
+
* TODO: [😶] Unite floder listing
|
|
10
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
11
|
+
* TODO: [🖇] What about symlinks? Maybe flag --follow-symlinks
|
|
12
|
+
* Note: This is named "test-command.ts" to avoid name collision with jest unit test files
|
|
13
|
+
*/
|
|
@@ -8,5 +8,5 @@ export declare function promptbookCli(): Promise<void>;
|
|
|
8
8
|
* TODO: [🥠] Do not export, its just for CLI script
|
|
9
9
|
* TODO: [🕌] When more functionalities, rename
|
|
10
10
|
* Note: 11:11
|
|
11
|
-
* Note: [🟡]
|
|
11
|
+
* Note: [🟡] Code in this file should never be published outside of `@promptbook/cli`
|
|
12
12
|
*/
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { PrepareAndScrapeOptions } from '../../prepare/PrepareAndScrapeOptions';
|
|
2
|
+
import type { string_dirname } from '../../types/typeAliases';
|
|
3
3
|
import type { PipelineCollection } from '../PipelineCollection';
|
|
4
4
|
/**
|
|
5
5
|
* Options for `createCollectionFromDirectory` function
|
|
6
|
+
*
|
|
7
|
+
* Note: `rootDirname` is not needed because it is the folder in which `.ptbk.md` file is located
|
|
8
|
+
* This is not same as `path` which is the first argument of `createCollectionFromDirectory` - it can be a subfolder
|
|
6
9
|
*/
|
|
7
|
-
type CreatePipelineCollectionFromDirectoryOptions =
|
|
10
|
+
type CreatePipelineCollectionFromDirectoryOptions = Omit<PrepareAndScrapeOptions, 'rootDirname'> & {
|
|
8
11
|
/**
|
|
9
12
|
* If true, the directory is searched recursively for pipelines
|
|
10
13
|
*
|
|
@@ -41,9 +44,9 @@ type CreatePipelineCollectionFromDirectoryOptions = PipelineStringToJsonOptions
|
|
|
41
44
|
* @returns PipelineCollection
|
|
42
45
|
* @public exported from `@promptbook/node`
|
|
43
46
|
*/
|
|
44
|
-
export declare function createCollectionFromDirectory(path:
|
|
47
|
+
export declare function createCollectionFromDirectory(path: string_dirname, options?: CreatePipelineCollectionFromDirectoryOptions): Promise<PipelineCollection>;
|
|
45
48
|
export {};
|
|
46
49
|
/**
|
|
47
|
-
* Note: [🟢]
|
|
50
|
+
* Note: [🟢] Code in this file should never be published outside of `@promptbook/node` and `@promptbook/cli`
|
|
48
51
|
* TODO: [🖇] What about symlinks? Maybe option isSymlinksFollowed
|
|
49
52
|
*/
|
|
@@ -3,7 +3,7 @@ import type { ExpectCommand } from './ExpectCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the expect command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const expectCommandParser: PipelineTemplateCommandParser<ExpectCommand>;
|
|
@@ -5,7 +5,7 @@ import type { ForeachCommand } from './ForeachCommand';
|
|
|
5
5
|
*
|
|
6
6
|
* Note: @@@ This command is used as foreach for new commands - it should NOT be used in any `.ptbk.md` file
|
|
7
7
|
*
|
|
8
|
-
* @see
|
|
8
|
+
* @see `documentationUrl` for more details
|
|
9
9
|
* @private within the commands folder
|
|
10
10
|
*/
|
|
11
11
|
export declare const foreachCommandParser: PipelineTemplateCommandParser<ForeachCommand>;
|
|
@@ -3,7 +3,7 @@ import type { FormatCommand } from './FormatCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the format command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const formatCommandParser: PipelineTemplateCommandParser<FormatCommand>;
|
|
@@ -3,7 +3,7 @@ import type { JokerCommand } from './JokerCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the joker command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const jokerCommandParser: PipelineTemplateCommandParser<JokerCommand>;
|
|
@@ -3,7 +3,7 @@ import type { KnowledgeCommand } from './KnowledgeCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the knowledge command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const knowledgeCommandParser: PipelineHeadCommandParser<KnowledgeCommand>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { string_knowledge_source_content } from '../../../types/typeAliases';
|
|
2
|
+
import type { string_name } from '../../../types/typeAliases';
|
|
3
|
+
/**
|
|
4
|
+
* Creates unique name for the source
|
|
5
|
+
*
|
|
6
|
+
* @private within the repository
|
|
7
|
+
*/
|
|
8
|
+
export declare function sourceContentToName(sourceContent: string_knowledge_source_content): string_name;
|
|
9
|
+
/**
|
|
10
|
+
* TODO: [🐱🐉][🧠] Make some smart crop NOT source-i-m-pavol-a-develop-... BUT source-i-m-pavol-a-developer-...
|
|
11
|
+
*/
|
|
@@ -3,7 +3,7 @@ import type { ModelCommand } from './ModelCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the model command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const modelCommandParser: PipelineBothCommandParser<ModelCommand>;
|
|
@@ -3,7 +3,7 @@ import type { ParameterCommand } from './ParameterCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the parameter command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const parameterCommandParser: PipelineBothCommandParser<ParameterCommand>;
|
|
@@ -3,7 +3,7 @@ import type { PersonaCommand } from './PersonaCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the persona command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const personaCommandParser: PipelineBothCommandParser<PersonaCommand>;
|
|
@@ -3,7 +3,7 @@ import type { PostprocessCommand } from './PostprocessCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the postprocess command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const postprocessCommandParser: PipelineTemplateCommandParser<PostprocessCommand>;
|
|
@@ -3,7 +3,7 @@ import type { PromptbookVersionCommand } from './PromptbookVersionCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the PROMPTBOOK_VERSION command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const promptbookVersionCommandParser: PipelineHeadCommandParser<PromptbookVersionCommand>;
|
|
@@ -3,7 +3,7 @@ import type { TemplateCommand } from './TemplateCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the template command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const templateCommandParser: PipelineTemplateCommandParser<TemplateCommand>;
|
|
@@ -3,7 +3,7 @@ import type { UrlCommand } from './UrlCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the url command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const urlCommandParser: PipelineHeadCommandParser<UrlCommand>;
|
|
@@ -3,7 +3,7 @@ import type { ActionCommand } from './ActionCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the action command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const actionCommandParser: PipelineHeadCommandParser<ActionCommand>;
|
|
@@ -3,7 +3,7 @@ import type { InstrumentCommand } from './InstrumentCommand';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the instrument command
|
|
5
5
|
*
|
|
6
|
-
* @see
|
|
6
|
+
* @see `documentationUrl` for more details
|
|
7
7
|
* @private within the commands folder
|
|
8
8
|
*/
|
|
9
9
|
export declare const instrumentCommandParser: PipelineHeadCommandParser<InstrumentCommand>;
|
|
@@ -5,7 +5,7 @@ import type { BoilerplateCommand } from './BoilerplateCommand';
|
|
|
5
5
|
*
|
|
6
6
|
* Note: @@@ This command is used as boilerplate for new commands - it should NOT be used in any `.ptbk.md` file
|
|
7
7
|
*
|
|
8
|
-
* @see
|
|
8
|
+
* @see `documentationUrl` for more details
|
|
9
9
|
* @private within the commands folder
|
|
10
10
|
*/
|
|
11
11
|
export declare const boilerplateCommandParser: PipelineBothCommandParser<BoilerplateCommand>;
|
|
@@ -84,9 +84,19 @@ export declare const MAX_KNOWLEDGE_SOURCES_SCRAPING_TOTAL = 200;
|
|
|
84
84
|
/**
|
|
85
85
|
* Where to store the cache of executions for promptbook CLI
|
|
86
86
|
*
|
|
87
|
+
* Note: When the folder does not exist, it is created recursively
|
|
88
|
+
*
|
|
87
89
|
* @public exported from `@promptbook/core`
|
|
88
90
|
*/
|
|
89
91
|
export declare const EXECUTIONS_CACHE_DIRNAME = "/.promptbook/executions-cache";
|
|
92
|
+
/**
|
|
93
|
+
* Where to store the scrape cache
|
|
94
|
+
*
|
|
95
|
+
* Note: When the folder does not exist, it is created recursively
|
|
96
|
+
*
|
|
97
|
+
* @public exported from `@promptbook/core`
|
|
98
|
+
*/
|
|
99
|
+
export declare const SCRAPE_CACHE_DIRNAME = "/.promptbook/scrape-cache";
|
|
90
100
|
/**
|
|
91
101
|
* The name of the builded pipeline collection made by CLI `ptbk make` and for lookup in `createCollectionFromDirectory`
|
|
92
102
|
*
|
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PrepareAndScrapeOptions } from '../prepare/PrepareAndScrapeOptions';
|
|
2
2
|
import type { PipelineJson } from '../types/PipelineJson/PipelineJson';
|
|
3
3
|
import type { PipelineString } from '../types/PipelineString';
|
|
4
|
-
/**
|
|
5
|
-
* Options for `pipelineStringToJson`
|
|
6
|
-
*
|
|
7
|
-
* @public exported from `@promptbook/core`
|
|
8
|
-
*/
|
|
9
|
-
export type PipelineStringToJsonOptions = {
|
|
10
|
-
/**
|
|
11
|
-
* Tools for processing required for preparation of knowledge *(not for actual execution)*
|
|
12
|
-
*
|
|
13
|
-
* Note: If you provide `null`, the knowledge will not be prepared
|
|
14
|
-
*/
|
|
15
|
-
readonly llmTools: LlmExecutionTools | null;
|
|
16
|
-
};
|
|
17
4
|
/**
|
|
18
5
|
* Compile pipeline from string (markdown) format to JSON format
|
|
19
6
|
*
|
|
@@ -31,7 +18,7 @@ export type PipelineStringToJsonOptions = {
|
|
|
31
18
|
* @throws {ParseError} if the promptbook string is not valid
|
|
32
19
|
* @public exported from `@promptbook/core`
|
|
33
20
|
*/
|
|
34
|
-
export declare function pipelineStringToJson(pipelineString: PipelineString, options?:
|
|
21
|
+
export declare function pipelineStringToJson(pipelineString: PipelineString, options?: PrepareAndScrapeOptions): Promise<PipelineJson>;
|
|
35
22
|
/**
|
|
36
23
|
* TODO: [🏏] Leverage the batch API and build queues @see https://platform.openai.com/docs/guides/batch
|
|
37
24
|
* TODO: [🛠] Actions, instruments (and maybe knowledge) => Functions and tools
|
|
@@ -25,5 +25,5 @@ export declare function importPipelineJson(path: `${string}.ptbk.json`): Pipelin
|
|
|
25
25
|
*/
|
|
26
26
|
export declare function importPipelineJsonAsString(path: `${string}.ptbk.json`): string_json<PipelineJson>;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* Note: [⚫] Code in this file should never be published in any package
|
|
29
29
|
*/
|
|
@@ -32,11 +32,11 @@ export declare function validatePipelineCore(pipeline: PipelineJson): void;
|
|
|
32
32
|
* > ex port function validatePipeline(promptbook: really_unknown): asserts promptbook is PipelineJson {
|
|
33
33
|
*/
|
|
34
34
|
/**
|
|
35
|
-
* TODO: [
|
|
36
|
-
* TODO: [
|
|
37
|
-
* TODO: [
|
|
38
|
-
* TODO: [
|
|
39
|
-
* TODO: [
|
|
35
|
+
* TODO: [🧳][main] !!!! Validate that all samples match expectations
|
|
36
|
+
* TODO: [🧳][🐝][main] !!!! Validate that knowledge is valid (non-void)
|
|
37
|
+
* TODO: [🧳][main] !!!! Validate that persona can be used only with CHAT variant
|
|
38
|
+
* TODO: [🧳][main] !!!! Validate that parameter with reserved name not used RESERVED_PARAMETER_NAMES
|
|
39
|
+
* TODO: [🧳][main] !!!! Validate that reserved parameter is not used as joker
|
|
40
40
|
* TODO: [🧠] Validation not only logic itself but imports around - files and websites and rerefenced pipelines exists
|
|
41
41
|
* TODO: [🛠] Actions, instruments (and maybe knowledge) => Functions and tools
|
|
42
42
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { UserInterfaceTools } from '
|
|
2
|
-
import type { UserInterfaceToolsPromptDialogOptions } from '
|
|
1
|
+
import type { UserInterfaceTools } from '../../execution/UserInterfaceTools';
|
|
2
|
+
import type { UserInterfaceToolsPromptDialogOptions } from '../../execution/UserInterfaceTools';
|
|
3
3
|
import type { CallbackInterfaceToolsOptions } from './CallbackInterfaceToolsOptions';
|
|
4
4
|
/**
|
|
5
5
|
* Delagates the user interaction to a async callback function
|
package/esm/typings/src/{knowledge/dialogs → dialogs}/callback/CallbackInterfaceToolsOptions.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Promisable } from 'type-fest';
|
|
2
|
-
import type { CommonExecutionToolsOptions } from '
|
|
3
|
-
import type { UserInterfaceToolsPromptDialogOptions } from '
|
|
2
|
+
import type { CommonExecutionToolsOptions } from '../../execution/CommonExecutionToolsOptions';
|
|
3
|
+
import type { UserInterfaceToolsPromptDialogOptions } from '../../execution/UserInterfaceTools';
|
|
4
4
|
/**
|
|
5
5
|
* Options for `CallbackInterfaceTools`
|
|
6
6
|
*
|
package/esm/typings/src/{knowledge/dialogs → dialogs}/simple-prompt/SimplePromptInterfaceTools.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { CommonExecutionToolsOptions } from '
|
|
2
|
-
import type { UserInterfaceTools } from '
|
|
3
|
-
import type { UserInterfaceToolsPromptDialogOptions } from '
|
|
1
|
+
import type { CommonExecutionToolsOptions } from '../../execution/CommonExecutionToolsOptions';
|
|
2
|
+
import type { UserInterfaceTools } from '../../execution/UserInterfaceTools';
|
|
3
|
+
import type { UserInterfaceToolsPromptDialogOptions } from '../../execution/UserInterfaceTools';
|
|
4
4
|
/**
|
|
5
5
|
* Wrapper around `window.prompt` synchronous function that interacts with the user via browser prompt
|
|
6
6
|
*
|
|
@@ -18,5 +18,5 @@ export declare class SimplePromptInterfaceTools implements UserInterfaceTools {
|
|
|
18
18
|
promptDialog(options: UserInterfaceToolsPromptDialogOptions): Promise<string>;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Note: [🔵]
|
|
21
|
+
* Note: [🔵] Code in this file should never be published outside of `@promptbook/browser`
|
|
22
22
|
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This error indicates that the promptbook can not retrieve knowledge from external sources
|
|
3
|
+
*
|
|
4
|
+
* @public exported from `@promptbook/core`
|
|
5
|
+
*/
|
|
6
|
+
export declare class KnowledgeScrapeError extends Error {
|
|
7
|
+
readonly name = "KnowledgeScrapeError";
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This error type indicates that some tools are missing for pipeline execution or preparation
|
|
3
|
+
*
|
|
4
|
+
* @public exported from `@promptbook/core`
|
|
5
|
+
*/
|
|
6
|
+
export declare class MissingToolsError extends Error {
|
|
7
|
+
readonly name = "MissingToolsError";
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
@@ -14,7 +14,7 @@ export type ExecutionTools = {
|
|
|
14
14
|
* Tip: Use `createLlmToolsFromEnv()` to use all available LLM providers you configured
|
|
15
15
|
* @see https://github.com/webgptorg/promptbook/?tab=readme-ov-file#llm-execution-tools
|
|
16
16
|
*/
|
|
17
|
-
llm?: Arrayable<LlmExecutionTools>;
|
|
17
|
+
readonly llm?: Arrayable<LlmExecutionTools>;
|
|
18
18
|
/**
|
|
19
19
|
* Tools for executing scripts
|
|
20
20
|
*
|
|
@@ -25,12 +25,12 @@ export type ExecutionTools = {
|
|
|
25
25
|
* @see https://github.com/webgptorg/promptbook/?tab=readme-ov-file#script-execution-tools
|
|
26
26
|
* @default [] - If not provided, no script execution will be possible
|
|
27
27
|
*/
|
|
28
|
-
script?: Arrayable<ScriptExecutionTools>;
|
|
28
|
+
readonly script?: Arrayable<ScriptExecutionTools>;
|
|
29
29
|
/**
|
|
30
30
|
* Tools for interacting with the user
|
|
31
31
|
*
|
|
32
32
|
* Note: When undefined, the user interface is disabled and promptbook which requires user interaction will fail
|
|
33
33
|
* @see https://github.com/webgptorg/promptbook/?tab=readme-ov-file#user-interface-tools
|
|
34
34
|
*/
|
|
35
|
-
userInterface?: UserInterfaceTools;
|
|
35
|
+
readonly userInterface?: UserInterfaceTools;
|
|
36
36
|
};
|
package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorOptions.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { CreatePipelineExecutorSettings } from './00-CreatePipelineExecutor
|
|
|
4
4
|
/**
|
|
5
5
|
* Options for `createPipelineExecutor`
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export type CreatePipelineExecutorOptions = {
|
|
8
8
|
/**
|
|
9
9
|
* The pipeline to be executed
|
|
10
10
|
*/
|
|
@@ -17,4 +17,7 @@ export interface CreatePipelineExecutorOptions {
|
|
|
17
17
|
* Optional settings for the pipeline executor
|
|
18
18
|
*/
|
|
19
19
|
readonly settings?: Partial<CreatePipelineExecutorSettings>;
|
|
20
|
-
}
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* TODO: !!!!!! Unite `CreatePipelineExecutorOptions` and `CreatePipelineExecutorSettings` OR describe the difference
|
|
23
|
+
*/
|
package/esm/typings/src/execution/createPipelineExecutor/00-CreatePipelineExecutorSettings.d.ts
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
import type { CsvSettings } from '../../formats/csv/CsvSettings';
|
|
2
|
-
|
|
2
|
+
import type { PrepareAndScrapeOptions } from '../../prepare/PrepareAndScrapeOptions';
|
|
3
|
+
export type CreatePipelineExecutorSettings = Omit<PrepareAndScrapeOptions, 'llmTools'> & {
|
|
3
4
|
/**
|
|
4
5
|
* When executor does not satisfy expectations it will be retried this amount of times
|
|
5
6
|
*
|
|
6
7
|
* @default MAX_EXECUTION_ATTEMPTS
|
|
7
8
|
*/
|
|
8
9
|
readonly maxExecutionAttempts: number;
|
|
9
|
-
/**
|
|
10
|
-
* Maximum number of tasks running in parallel
|
|
11
|
-
*
|
|
12
|
-
* @default MAX_PARALLEL_COUNT
|
|
13
|
-
*/
|
|
14
|
-
readonly maxParallelCount: number;
|
|
15
|
-
/**
|
|
16
|
-
* If true, the preparation logs additional information
|
|
17
|
-
*
|
|
18
|
-
* @default false
|
|
19
|
-
*/
|
|
20
|
-
readonly isVerbose: boolean;
|
|
21
10
|
/**
|
|
22
11
|
* Settings for CSV format
|
|
23
12
|
*
|
|
@@ -10,4 +10,4 @@ import type { CreatePipelineExecutorOptions } from './00-CreatePipelineExecutorO
|
|
|
10
10
|
export declare function createPipelineExecutor(options: CreatePipelineExecutorOptions): PipelineExecutor;
|
|
11
11
|
/**
|
|
12
12
|
* TODO: [🐚] Change onProgress to object that represents the running execution, can be subscribed via RxJS to and also awaited
|
|
13
|
-
*/
|
|
13
|
+
*/
|