@promptbook/cli 0.80.0-1 → 0.81.0-5
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 +2 -0
- package/esm/index.es.js +81 -56
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/core.index.d.ts +0 -6
- package/esm/typings/src/_packages/editable.index.d.ts +10 -0
- package/esm/typings/src/_packages/templates.index.d.ts +4 -0
- package/esm/typings/src/_packages/types.index.d.ts +4 -0
- package/esm/typings/src/_packages/utils.index.d.ts +2 -2
- package/esm/typings/src/execution/ExecutionTools.d.ts +7 -0
- package/esm/typings/src/execution/PromptbookFetch.d.ts +5 -0
- package/esm/typings/src/execution/PromptbookFetch.test-type.d.ts +5 -0
- package/esm/typings/src/expectations/drafts/isDomainNameFree.d.ts +2 -1
- package/esm/typings/src/expectations/drafts/isGithubNameFree.d.ts +2 -1
- package/esm/typings/src/scrapers/_common/utils/makeKnowledgeSourceHandler.d.ts +1 -1
- package/esm/typings/src/scrapers/_common/utils/scraperFetch.d.ts +7 -0
- package/esm/typings/src/utils/editable/types/PipelineEditableSerialized.d.ts +42 -0
- package/esm/typings/src/{conversion → utils/editable}/utils/removePipelineCommand.d.ts +3 -3
- package/esm/typings/src/{conversion → utils/editable}/utils/renamePipelineParameter.d.ts +3 -3
- package/esm/typings/src/{conversion → utils/editable}/utils/stringifyPipelineJson.d.ts +2 -2
- package/esm/typings/src/utils/getBookTemplate.d.ts +12 -0
- package/esm/typings/src/utils/parameters/{replaceParameters.d.ts → templateParameters.d.ts} +1 -1
- package/package.json +1 -1
- package/umd/index.umd.js +81 -56
- package/umd/index.umd.js.map +1 -1
- /package/esm/typings/src/{conversion → utils/editable}/utils/removePipelineCommand.test.d.ts +0 -0
- /package/esm/typings/src/{conversion → utils/editable}/utils/renamePipelineParameter.test.d.ts +0 -0
- /package/esm/typings/src/{conversion → utils/editable}/utils/stringifyPipelineJson.test.d.ts +0 -0
- /package/esm/typings/src/utils/parameters/{replaceParameters.test.d.ts → templateParameters.test.d.ts} +0 -0
|
@@ -34,9 +34,6 @@ import { pipelineJsonToString } from '../conversion/pipelineJsonToString';
|
|
|
34
34
|
import { precompilePipeline } from '../conversion/precompilePipeline';
|
|
35
35
|
import { prettifyPipelineString } from '../conversion/prettify/prettifyPipelineString';
|
|
36
36
|
import { extractParameterNamesFromTask } from '../conversion/utils/extractParameterNamesFromTask';
|
|
37
|
-
import { removePipelineCommand } from '../conversion/utils/removePipelineCommand';
|
|
38
|
-
import { renamePipelineParameter } from '../conversion/utils/renamePipelineParameter';
|
|
39
|
-
import { stringifyPipelineJson } from '../conversion/utils/stringifyPipelineJson';
|
|
40
37
|
import { validatePipeline } from '../conversion/validation/validatePipeline';
|
|
41
38
|
import { CallbackInterfaceTools } from '../dialogs/callback/CallbackInterfaceTools';
|
|
42
39
|
import type { CallbackInterfaceToolsOptions } from '../dialogs/callback/CallbackInterfaceToolsOptions';
|
|
@@ -155,9 +152,6 @@ export { pipelineJsonToString };
|
|
|
155
152
|
export { precompilePipeline };
|
|
156
153
|
export { prettifyPipelineString };
|
|
157
154
|
export { extractParameterNamesFromTask };
|
|
158
|
-
export { removePipelineCommand };
|
|
159
|
-
export { renamePipelineParameter };
|
|
160
|
-
export { stringifyPipelineJson };
|
|
161
155
|
export { validatePipeline };
|
|
162
156
|
export { CallbackInterfaceTools };
|
|
163
157
|
export type { CallbackInterfaceToolsOptions };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BOOK_LANGUAGE_VERSION, PROMPTBOOK_ENGINE_VERSION } from '../version';
|
|
2
|
+
import type { PipelineEditableSerialized } from '../utils/editable/types/PipelineEditableSerialized';
|
|
3
|
+
import { removePipelineCommand } from '../utils/editable/utils/removePipelineCommand';
|
|
4
|
+
import { renamePipelineParameter } from '../utils/editable/utils/renamePipelineParameter';
|
|
5
|
+
import { stringifyPipelineJson } from '../utils/editable/utils/stringifyPipelineJson';
|
|
6
|
+
export { BOOK_LANGUAGE_VERSION, PROMPTBOOK_ENGINE_VERSION };
|
|
7
|
+
export type { PipelineEditableSerialized };
|
|
8
|
+
export { removePipelineCommand };
|
|
9
|
+
export { renamePipelineParameter };
|
|
10
|
+
export { stringifyPipelineJson };
|
|
@@ -30,6 +30,7 @@ import type { LlmExecutionTools } from '../execution/LlmExecutionTools';
|
|
|
30
30
|
import type { LlmExecutionToolsConstructor } from '../execution/LlmExecutionToolsConstructor';
|
|
31
31
|
import type { PipelineExecutor } from '../execution/PipelineExecutor';
|
|
32
32
|
import type { PipelineExecutorResult } from '../execution/PipelineExecutorResult';
|
|
33
|
+
import type { PromptbookFetch } from '../execution/PromptbookFetch';
|
|
33
34
|
import type { PromptResult } from '../execution/PromptResult';
|
|
34
35
|
import type { CompletionPromptResult } from '../execution/PromptResult';
|
|
35
36
|
import type { ChatPromptResult } from '../execution/PromptResult';
|
|
@@ -241,6 +242,7 @@ import type { number_gigabytes } from '../types/typeAliases';
|
|
|
241
242
|
import type { number_terabytes } from '../types/typeAliases';
|
|
242
243
|
import type { Registered } from '../utils/$Register';
|
|
243
244
|
import type { Registration } from '../utils/$Register';
|
|
245
|
+
import type { PipelineEditableSerialized } from '../utils/editable/types/PipelineEditableSerialized';
|
|
244
246
|
import type { ExecCommandOptions } from '../utils/execCommand/ExecCommandOptions';
|
|
245
247
|
import type { ExecCommandOptionsAdvanced } from '../utils/execCommand/ExecCommandOptions';
|
|
246
248
|
import type { FromtoItems } from '../utils/FromtoItems';
|
|
@@ -292,6 +294,7 @@ export type { LlmExecutionTools };
|
|
|
292
294
|
export type { LlmExecutionToolsConstructor };
|
|
293
295
|
export type { PipelineExecutor };
|
|
294
296
|
export type { PipelineExecutorResult };
|
|
297
|
+
export type { PromptbookFetch };
|
|
295
298
|
export type { PromptResult };
|
|
296
299
|
export type { CompletionPromptResult };
|
|
297
300
|
export type { ChatPromptResult };
|
|
@@ -503,6 +506,7 @@ export type { number_gigabytes };
|
|
|
503
506
|
export type { number_terabytes };
|
|
504
507
|
export type { Registered };
|
|
505
508
|
export type { Registration };
|
|
509
|
+
export type { PipelineEditableSerialized };
|
|
506
510
|
export type { ExecCommandOptions };
|
|
507
511
|
export type { ExecCommandOptionsAdvanced };
|
|
508
512
|
export type { FromtoItems };
|
|
@@ -46,7 +46,7 @@ import { searchKeywords } from '../utils/normalization/searchKeywords';
|
|
|
46
46
|
import { titleToName } from '../utils/normalization/titleToName';
|
|
47
47
|
import { spaceTrim } from '../utils/organization/spaceTrim';
|
|
48
48
|
import { extractParameterNames } from '../utils/parameters/extractParameterNames';
|
|
49
|
-
import {
|
|
49
|
+
import { templateParameters } from '../utils/parameters/templateParameters';
|
|
50
50
|
import { parseNumber } from '../utils/parseNumber';
|
|
51
51
|
import { $randomSeed } from '../utils/random/$randomSeed';
|
|
52
52
|
import { removeEmojis } from '../utils/removeEmojis';
|
|
@@ -121,7 +121,7 @@ export { searchKeywords };
|
|
|
121
121
|
export { titleToName };
|
|
122
122
|
export { spaceTrim };
|
|
123
123
|
export { extractParameterNames };
|
|
124
|
-
export {
|
|
124
|
+
export { templateParameters };
|
|
125
125
|
export { parseNumber };
|
|
126
126
|
export { $randomSeed };
|
|
127
127
|
export { removeEmojis };
|
|
@@ -3,6 +3,7 @@ import type { Arrayable } from '../types/Arrayable';
|
|
|
3
3
|
import type { Executables } from './Executables';
|
|
4
4
|
import type { FilesystemTools } from './FilesystemTools';
|
|
5
5
|
import type { LlmExecutionTools } from './LlmExecutionTools';
|
|
6
|
+
import type { PromptbookFetch } from './PromptbookFetch';
|
|
6
7
|
import type { ScriptExecutionTools } from './ScriptExecutionTools';
|
|
7
8
|
import type { UserInterfaceTools } from './UserInterfaceTools';
|
|
8
9
|
/**
|
|
@@ -27,6 +28,12 @@ export type ExecutionTools = {
|
|
|
27
28
|
* @default undefined - If not provided, no filesystem operations will be possible
|
|
28
29
|
*/
|
|
29
30
|
readonly fs?: FilesystemTools;
|
|
31
|
+
/**
|
|
32
|
+
* Fetch function for fetching resources
|
|
33
|
+
*
|
|
34
|
+
* @default `fetch` - If not provided, the built-in `fetch' function is used with a lightweight error handling wrapper.
|
|
35
|
+
*/
|
|
36
|
+
readonly fetch?: PromptbookFetch;
|
|
30
37
|
/**
|
|
31
38
|
* Scrapers for extracting knowledge from external sources
|
|
32
39
|
*
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { PromptbookFetch } from '../../execution/PromptbookFetch';
|
|
1
2
|
import type { string_name } from '../../types/typeAliases';
|
|
2
3
|
/**
|
|
3
4
|
* @private still in development
|
|
4
5
|
*/
|
|
5
|
-
export declare function isDomainNameFree(name: string_name): Promise<boolean>;
|
|
6
|
+
export declare function isDomainNameFree(name: string_name, fetch: PromptbookFetch): Promise<boolean>;
|
|
6
7
|
/**
|
|
7
8
|
* TODO: [🍓][🧠] Test and implement `isDomainNameFree`
|
|
8
9
|
* TODO: Export via some (and probably new) NPM package
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { PromptbookFetch } from '../../execution/PromptbookFetch';
|
|
1
2
|
import type { string_name } from '../../types/typeAliases';
|
|
2
3
|
/**
|
|
3
4
|
* @private still in development
|
|
4
5
|
*/
|
|
5
|
-
export declare function isGithubNameFree(name: string_name): Promise<boolean>;
|
|
6
|
+
export declare function isGithubNameFree(name: string_name, fetch: PromptbookFetch): Promise<boolean>;
|
|
6
7
|
/**
|
|
7
8
|
* TODO: [🍓][🧠] Test and implement `isGithubNameFree`
|
|
8
9
|
* TODO: Export via some (and probably new) NPM package
|
|
@@ -8,4 +8,4 @@ import type { ScraperSourceHandler } from '../Scraper';
|
|
|
8
8
|
*
|
|
9
9
|
* @public exported from `@promptbook/core`
|
|
10
10
|
*/
|
|
11
|
-
export declare function makeKnowledgeSourceHandler(knowledgeSource: SetOptional<KnowledgeSourceJson, 'name'>, tools: Pick<ExecutionTools, 'fs'>, options?: Pick<PrepareAndScrapeOptions, 'rootDirname' | 'isVerbose'>): Promise<ScraperSourceHandler>;
|
|
11
|
+
export declare function makeKnowledgeSourceHandler(knowledgeSource: SetOptional<KnowledgeSourceJson, 'name'>, tools: Pick<ExecutionTools, 'fs' | 'fetch'>, options?: Pick<PrepareAndScrapeOptions, 'rootDirname' | 'isVerbose'>): Promise<ScraperSourceHandler>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PromptbookFetch } from '../../../execution/PromptbookFetch';
|
|
2
|
+
/**
|
|
3
|
+
* The built-in `fetch' function with a lightweight error handling wrapper as default fetch function used in Promptbook scrapers
|
|
4
|
+
*
|
|
5
|
+
* @private as default `fetch` function used in Promptbook scrapers
|
|
6
|
+
*/
|
|
7
|
+
export declare const scraperFetch: PromptbookFetch;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ErrorJson } from '../../../errors/utils/ErrorJson';
|
|
2
|
+
import type { PipelineJson } from '../../../pipeline/PipelineJson/PipelineJson';
|
|
3
|
+
import type { string_date_iso8601 } from '../../../types/typeAliases';
|
|
4
|
+
import type { string_pipeline_url } from '../../../types/typeAliases';
|
|
5
|
+
import type { PipelineString } from '../../../pipeline/PipelineString';
|
|
6
|
+
/**
|
|
7
|
+
* Represents a single pipeline in PromptbookStudio
|
|
8
|
+
*
|
|
9
|
+
* This is simple extension of PipelineJson with additional metadata
|
|
10
|
+
* Note: There are two similar entities:
|
|
11
|
+
* 1) Type (interface) `PipelineEditableSerialized` which represents just data in database
|
|
12
|
+
* 2) Class `PipelineEditable` which implements `PipelineEditableSerialized` and adds error handling and editing capabilities
|
|
13
|
+
*
|
|
14
|
+
* @public exported from `@promptbook/editable`
|
|
15
|
+
*/
|
|
16
|
+
export type PipelineEditableSerialized = PipelineJson & {
|
|
17
|
+
/**
|
|
18
|
+
* When was the pipeline created
|
|
19
|
+
*/
|
|
20
|
+
readonly createdAt: string_date_iso8601;
|
|
21
|
+
/**
|
|
22
|
+
* When was the pipeline last modified
|
|
23
|
+
*/
|
|
24
|
+
readonly updatedAt: string_date_iso8601 | null;
|
|
25
|
+
/**
|
|
26
|
+
* Unique identifier of the pipeline
|
|
27
|
+
*
|
|
28
|
+
* Note: In PromptbookStudio it is required
|
|
29
|
+
*/
|
|
30
|
+
readonly pipelineUrl: string_pipeline_url;
|
|
31
|
+
/**
|
|
32
|
+
* Backup of the pipeline string
|
|
33
|
+
*
|
|
34
|
+
* Note: This is present ONLY if pipelineString can not be automatically converted into json (i.e. compilePipeline throws an error)
|
|
35
|
+
* In other words, this is just a BACKUP of pipeline which will be deleted whener pipeline is valid again
|
|
36
|
+
*/
|
|
37
|
+
readonly pipelineString: PipelineString | string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Known errors to transfer to new PipelineEditable
|
|
40
|
+
*/
|
|
41
|
+
readonly knownErrors: Array<ErrorJson>;
|
|
42
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CommandType } from '
|
|
2
|
-
import type { PipelineString } from '
|
|
1
|
+
import type { CommandType } from '../../../commands/_common/types/CommandType';
|
|
2
|
+
import type { PipelineString } from '../../../pipeline/PipelineString';
|
|
3
3
|
/**
|
|
4
4
|
* Options for `removePipelineCommand`
|
|
5
5
|
*/
|
|
@@ -16,7 +16,7 @@ type RemovePipelineCommandOptions = {
|
|
|
16
16
|
/**
|
|
17
17
|
* Function `removePipelineCommand` will remove one command from pipeline string
|
|
18
18
|
*
|
|
19
|
-
* @public exported from `@promptbook/
|
|
19
|
+
* @public exported from `@promptbook/editable`
|
|
20
20
|
*/
|
|
21
21
|
export declare function removePipelineCommand(options: RemovePipelineCommandOptions): PipelineString;
|
|
22
22
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PipelineJson } from '
|
|
2
|
-
import type { string_name } from '
|
|
1
|
+
import type { PipelineJson } from '../../../pipeline/PipelineJson/PipelineJson';
|
|
2
|
+
import type { string_name } from '../../../types/typeAliases';
|
|
3
3
|
type RenameParameterOptions = {
|
|
4
4
|
/**
|
|
5
5
|
* Pipeline to search and replace for parameters
|
|
@@ -20,7 +20,7 @@ type RenameParameterOptions = {
|
|
|
20
20
|
* In other words, it will find all parameters that are not used in the task itseld and all its dependencies
|
|
21
21
|
*
|
|
22
22
|
* @throws {PipelineLogicError} If the new parameter name is already used in the pipeline
|
|
23
|
-
* @public exported from `@promptbook/
|
|
23
|
+
* @public exported from `@promptbook/editable`
|
|
24
24
|
*/
|
|
25
25
|
export declare function renamePipelineParameter(options: RenameParameterOptions): PipelineJson;
|
|
26
26
|
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { string_json } from '
|
|
1
|
+
import type { string_json } from '../../../types/typeAliases';
|
|
2
2
|
/**
|
|
3
3
|
* Stringify the PipelineJson with proper formatting
|
|
4
4
|
*
|
|
5
5
|
* Note: [0] It can be used for more JSON types like whole collection of pipelines, single knowledge piece, etc.
|
|
6
6
|
* Note: In contrast to JSON.stringify, this function ensures that **embedding index** is on single line
|
|
7
7
|
*
|
|
8
|
-
* @public exported from `@promptbook/
|
|
8
|
+
* @public exported from `@promptbook/editable`
|
|
9
9
|
*/
|
|
10
10
|
export declare function stringifyPipelineJson<TType>(pipeline: TType): string_json<TType>;
|
|
11
11
|
/**
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PipelineJson } from '../pipeline/PipelineJson/PipelineJson';
|
|
2
|
+
import type { string_formfactor_name } from '../formfactors/_common/string_formfactor_name';
|
|
3
|
+
/**
|
|
4
|
+
* Get template for new book
|
|
5
|
+
*
|
|
6
|
+
* @public exported from `@promptbook/templates`
|
|
7
|
+
*/
|
|
8
|
+
export declare function getBookTemplate(formfactorName: string_formfactor_name): PipelineJson | null;
|
|
9
|
+
/**
|
|
10
|
+
* TODO: [🧠] Which is the best place for this function
|
|
11
|
+
* TODO: `book string template notation
|
|
12
|
+
*/
|
|
@@ -9,4 +9,4 @@ import type { string_template } from '../../types/typeAliases';
|
|
|
9
9
|
* @throws {PipelineExecutionError} if parameter is not defined, not closed, or not opened
|
|
10
10
|
* @public exported from `@promptbook/utils`
|
|
11
11
|
*/
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function templateParameters(template: string_template, parameters: Parameters): string;
|
package/package.json
CHANGED
package/umd/index.umd.js
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
*
|
|
50
50
|
* @see https://github.com/webgptorg/promptbook
|
|
51
51
|
*/
|
|
52
|
-
var PROMPTBOOK_ENGINE_VERSION = '0.
|
|
52
|
+
var PROMPTBOOK_ENGINE_VERSION = '0.81.0-4';
|
|
53
53
|
/**
|
|
54
54
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
55
55
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -500,6 +500,40 @@
|
|
|
500
500
|
* Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
|
|
501
501
|
*/
|
|
502
502
|
|
|
503
|
+
/**
|
|
504
|
+
* Make error report URL for the given error
|
|
505
|
+
*
|
|
506
|
+
* @private !!!!!!
|
|
507
|
+
*/
|
|
508
|
+
function getErrorReportUrl(error) {
|
|
509
|
+
var report = {
|
|
510
|
+
title: "\uD83D\uDC1C Error report from ".concat(NAME),
|
|
511
|
+
body: spaceTrim__default["default"](function (block) { return "\n\n\n `".concat(error.name || 'Error', "` has occurred in the [").concat(NAME, "], please look into it @").concat(ADMIN_GITHUB_NAME, ".\n\n ```\n ").concat(block(error.message || '(no error message)'), "\n ```\n\n\n ## More info:\n\n - **Promptbook engine version:** ").concat(PROMPTBOOK_ENGINE_VERSION, "\n - **Book language version:** ").concat(BOOK_LANGUAGE_VERSION, "\n - **Time:** ").concat(new Date().toISOString(), "\n\n <details>\n <summary>Stack trace:</summary>\n\n ## Stack trace:\n\n ```stacktrace\n ").concat(block(error.stack || '(empty)'), "\n ```\n </details>\n\n "); }),
|
|
512
|
+
};
|
|
513
|
+
var reportUrl = new URL("https://github.com/webgptorg/promptbook/issues/new");
|
|
514
|
+
reportUrl.searchParams.set('labels', 'bug');
|
|
515
|
+
reportUrl.searchParams.set('assignees', ADMIN_GITHUB_NAME);
|
|
516
|
+
reportUrl.searchParams.set('title', report.title);
|
|
517
|
+
reportUrl.searchParams.set('body', report.body);
|
|
518
|
+
return reportUrl;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* This error type indicates that the error should not happen and its last check before crashing with some other error
|
|
523
|
+
*
|
|
524
|
+
* @public exported from `@promptbook/core`
|
|
525
|
+
*/
|
|
526
|
+
var UnexpectedError = /** @class */ (function (_super) {
|
|
527
|
+
__extends(UnexpectedError, _super);
|
|
528
|
+
function UnexpectedError(message) {
|
|
529
|
+
var _this = _super.call(this, spaceTrim.spaceTrim(function (block) { return "\n ".concat(block(message), "\n\n Note: This error should not happen.\n It's probbably a bug in the pipeline collection\n\n Please report issue:\n ").concat(block(getErrorReportUrl(new Error(message)).href), "\n\n Or contact us on ").concat(ADMIN_EMAIL, "\n\n "); })) || this;
|
|
530
|
+
_this.name = 'UnexpectedError';
|
|
531
|
+
Object.setPrototypeOf(_this, UnexpectedError.prototype);
|
|
532
|
+
return _this;
|
|
533
|
+
}
|
|
534
|
+
return UnexpectedError;
|
|
535
|
+
}(Error));
|
|
536
|
+
|
|
503
537
|
/**
|
|
504
538
|
* Orders JSON object by keys
|
|
505
539
|
*
|
|
@@ -550,40 +584,6 @@
|
|
|
550
584
|
* TODO: [🧠] Is there a way how to meaningfully test this utility
|
|
551
585
|
*/
|
|
552
586
|
|
|
553
|
-
/**
|
|
554
|
-
* Make error report URL for the given error
|
|
555
|
-
*
|
|
556
|
-
* @private !!!!!!
|
|
557
|
-
*/
|
|
558
|
-
function getErrorReportUrl(error) {
|
|
559
|
-
var report = {
|
|
560
|
-
title: "\uD83D\uDC1C Error report from ".concat(NAME),
|
|
561
|
-
body: spaceTrim__default["default"](function (block) { return "\n\n\n `".concat(error.name || 'Error', "` has occurred in the [").concat(NAME, "], please look into it @").concat(ADMIN_GITHUB_NAME, ".\n\n ```\n ").concat(block(error.message || '(no error message)'), "\n ```\n\n\n ## More info:\n\n - **Promptbook engine version:** ").concat(PROMPTBOOK_ENGINE_VERSION, "\n - **Book language version:** ").concat(BOOK_LANGUAGE_VERSION, "\n - **Time:** ").concat(new Date().toISOString(), "\n\n <details>\n <summary>Stack trace:</summary>\n\n ## Stack trace:\n\n ```stacktrace\n ").concat(block(error.stack || '(empty)'), "\n ```\n </details>\n\n "); }),
|
|
562
|
-
};
|
|
563
|
-
var reportUrl = new URL("https://github.com/webgptorg/promptbook/issues/new");
|
|
564
|
-
reportUrl.searchParams.set('labels', 'bug');
|
|
565
|
-
reportUrl.searchParams.set('assignees', ADMIN_GITHUB_NAME);
|
|
566
|
-
reportUrl.searchParams.set('title', report.title);
|
|
567
|
-
reportUrl.searchParams.set('body', report.body);
|
|
568
|
-
return reportUrl;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* This error type indicates that the error should not happen and its last check before crashing with some other error
|
|
573
|
-
*
|
|
574
|
-
* @public exported from `@promptbook/core`
|
|
575
|
-
*/
|
|
576
|
-
var UnexpectedError = /** @class */ (function (_super) {
|
|
577
|
-
__extends(UnexpectedError, _super);
|
|
578
|
-
function UnexpectedError(message) {
|
|
579
|
-
var _this = _super.call(this, spaceTrim.spaceTrim(function (block) { return "\n ".concat(block(message), "\n\n Note: This error should not happen.\n It's probbably a bug in the pipeline collection\n\n Please report issue:\n ").concat(block(getErrorReportUrl(new Error(message)).href), "\n\n Or contact us on ").concat(ADMIN_EMAIL, "\n\n "); })) || this;
|
|
580
|
-
_this.name = 'UnexpectedError';
|
|
581
|
-
Object.setPrototypeOf(_this, UnexpectedError.prototype);
|
|
582
|
-
return _this;
|
|
583
|
-
}
|
|
584
|
-
return UnexpectedError;
|
|
585
|
-
}(Error));
|
|
586
|
-
|
|
587
587
|
/**
|
|
588
588
|
* Checks if the value is [🚉] serializable as JSON
|
|
589
589
|
* If not, throws an UnexpectedError with a rich error message and tracking
|
|
@@ -866,7 +866,7 @@
|
|
|
866
866
|
* Note: [0] It can be used for more JSON types like whole collection of pipelines, single knowledge piece, etc.
|
|
867
867
|
* Note: In contrast to JSON.stringify, this function ensures that **embedding index** is on single line
|
|
868
868
|
*
|
|
869
|
-
* @public exported from `@promptbook/
|
|
869
|
+
* @public exported from `@promptbook/editable`
|
|
870
870
|
*/
|
|
871
871
|
function stringifyPipelineJson(pipeline) {
|
|
872
872
|
if (!isSerializableAsJson(pipeline)) {
|
|
@@ -4602,7 +4602,7 @@
|
|
|
4602
4602
|
* @throws {PipelineExecutionError} if parameter is not defined, not closed, or not opened
|
|
4603
4603
|
* @public exported from `@promptbook/utils`
|
|
4604
4604
|
*/
|
|
4605
|
-
function
|
|
4605
|
+
function templateParameters(template, parameters) {
|
|
4606
4606
|
var e_1, _a;
|
|
4607
4607
|
try {
|
|
4608
4608
|
for (var _b = __values(Object.entries(parameters)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
@@ -4628,7 +4628,7 @@
|
|
|
4628
4628
|
var loopLimit = LOOP_LIMIT;
|
|
4629
4629
|
var _loop_1 = function () {
|
|
4630
4630
|
if (loopLimit-- < 0) {
|
|
4631
|
-
throw new LimitReachedError('Loop limit reached during parameters replacement in `
|
|
4631
|
+
throw new LimitReachedError('Loop limit reached during parameters replacement in `templateParameters`');
|
|
4632
4632
|
}
|
|
4633
4633
|
var precol = match.groups.precol;
|
|
4634
4634
|
var parameterName = match.groups.parameterName;
|
|
@@ -4880,7 +4880,7 @@
|
|
|
4880
4880
|
}
|
|
4881
4881
|
return [3 /*break*/, 24];
|
|
4882
4882
|
case 2:
|
|
4883
|
-
$ongoingTaskResult.$resultString =
|
|
4883
|
+
$ongoingTaskResult.$resultString = templateParameters(preparedContent, parameters);
|
|
4884
4884
|
return [3 /*break*/, 25];
|
|
4885
4885
|
case 3:
|
|
4886
4886
|
modelRequirements = __assign(__assign({ modelVariant: 'CHAT' }, (preparedPipeline.defaultModelRequirements || {})), (task.modelRequirements || {}));
|
|
@@ -5003,8 +5003,8 @@
|
|
|
5003
5003
|
_j = $ongoingTaskResult;
|
|
5004
5004
|
return [4 /*yield*/, tools.userInterface.promptDialog($deepFreeze({
|
|
5005
5005
|
promptTitle: task.title,
|
|
5006
|
-
promptMessage:
|
|
5007
|
-
defaultValue:
|
|
5006
|
+
promptMessage: templateParameters(task.description || '', parameters),
|
|
5007
|
+
defaultValue: templateParameters(preparedContent, parameters),
|
|
5008
5008
|
// TODO: [🧠] !! Figure out how to define placeholder in .book.md file
|
|
5009
5009
|
placeholder: undefined,
|
|
5010
5010
|
priority: priority,
|
|
@@ -5128,7 +5128,7 @@
|
|
|
5128
5128
|
if (!isJokerAttempt &&
|
|
5129
5129
|
task.taskType === 'PROMPT_TASK' &&
|
|
5130
5130
|
$ongoingTaskResult.$prompt
|
|
5131
|
-
// <- Note: [2] When some expected parameter is not defined, error will occur in
|
|
5131
|
+
// <- Note: [2] When some expected parameter is not defined, error will occur in templateParameters
|
|
5132
5132
|
// In that case we don’t want to make a report about it because it’s not a llm execution error
|
|
5133
5133
|
) {
|
|
5134
5134
|
// TODO: [🧠] Maybe put other taskTypes into report
|
|
@@ -6192,6 +6192,30 @@
|
|
|
6192
6192
|
return match ? match[1].toLowerCase() : null;
|
|
6193
6193
|
}
|
|
6194
6194
|
|
|
6195
|
+
/**
|
|
6196
|
+
* The built-in `fetch' function with a lightweight error handling wrapper as default fetch function used in Promptbook scrapers
|
|
6197
|
+
*
|
|
6198
|
+
* @private as default `fetch` function used in Promptbook scrapers
|
|
6199
|
+
*/
|
|
6200
|
+
var scraperFetch = function (url, init) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6201
|
+
var error_1;
|
|
6202
|
+
return __generator(this, function (_a) {
|
|
6203
|
+
switch (_a.label) {
|
|
6204
|
+
case 0:
|
|
6205
|
+
_a.trys.push([0, 2, , 3]);
|
|
6206
|
+
return [4 /*yield*/, fetch(url, init)];
|
|
6207
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
6208
|
+
case 2:
|
|
6209
|
+
error_1 = _a.sent();
|
|
6210
|
+
if (!(error_1 instanceof Error)) {
|
|
6211
|
+
throw error_1;
|
|
6212
|
+
}
|
|
6213
|
+
throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Can not fetch \"".concat(url, "\"\n\n Fetch error:\n ").concat(block(error_1.message), "\n\n "); }));
|
|
6214
|
+
case 3: return [2 /*return*/];
|
|
6215
|
+
}
|
|
6216
|
+
});
|
|
6217
|
+
}); };
|
|
6218
|
+
|
|
6195
6219
|
/**
|
|
6196
6220
|
* @@@
|
|
6197
6221
|
*
|
|
@@ -6200,13 +6224,14 @@
|
|
|
6200
6224
|
function makeKnowledgeSourceHandler(knowledgeSource, tools, options) {
|
|
6201
6225
|
var _a;
|
|
6202
6226
|
return __awaiter(this, void 0, void 0, function () {
|
|
6203
|
-
var sourceContent, name,
|
|
6204
|
-
return __generator(this, function (
|
|
6205
|
-
switch (
|
|
6227
|
+
var _b, fetch, sourceContent, name, _c, _d, rootDirname, url, response_1, mimeType, filename_1, fileExtension, mimeType;
|
|
6228
|
+
return __generator(this, function (_f) {
|
|
6229
|
+
switch (_f.label) {
|
|
6206
6230
|
case 0:
|
|
6231
|
+
_b = tools.fetch, fetch = _b === void 0 ? scraperFetch : _b;
|
|
6207
6232
|
sourceContent = knowledgeSource.sourceContent;
|
|
6208
6233
|
name = knowledgeSource.name;
|
|
6209
|
-
|
|
6234
|
+
_c = options || {}, _d = _c.rootDirname, rootDirname = _d === void 0 ? null : _d, _c.isVerbose;
|
|
6210
6235
|
if (!name) {
|
|
6211
6236
|
name = sourceContentToName(sourceContent);
|
|
6212
6237
|
}
|
|
@@ -6214,7 +6239,7 @@
|
|
|
6214
6239
|
url = sourceContent;
|
|
6215
6240
|
return [4 /*yield*/, fetch(url)];
|
|
6216
6241
|
case 1:
|
|
6217
|
-
response_1 =
|
|
6242
|
+
response_1 = _f.sent();
|
|
6218
6243
|
mimeType = ((_a = response_1.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.split(';')[0]) || 'text/html';
|
|
6219
6244
|
return [2 /*return*/, {
|
|
6220
6245
|
source: name,
|
|
@@ -6271,7 +6296,7 @@
|
|
|
6271
6296
|
mimeType = extensionToMimeType(fileExtension || '');
|
|
6272
6297
|
return [4 /*yield*/, isFileExisting(filename_1, tools.fs)];
|
|
6273
6298
|
case 3:
|
|
6274
|
-
if (!(
|
|
6299
|
+
if (!(_f.sent())) {
|
|
6275
6300
|
throw new NotFoundError(spaceTrim__default["default"](function (block) { return "\n Can not make source handler for file which does not exist:\n\n File:\n ".concat(block(filename_1), "\n "); }));
|
|
6276
6301
|
}
|
|
6277
6302
|
// TODO: [🧠][😿] Test security file - file is scoped to the project (BUT maybe do this in `filesystemTools`)
|
|
@@ -13198,7 +13223,7 @@
|
|
|
13198
13223
|
throw new PipelineExecutionError('Use callChatModel only for CHAT variant');
|
|
13199
13224
|
}
|
|
13200
13225
|
modelName = modelRequirements.modelName || this.getDefaultChatModel().modelName;
|
|
13201
|
-
rawPromptContent =
|
|
13226
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
13202
13227
|
rawRequest = {
|
|
13203
13228
|
model: modelRequirements.modelName || this.getDefaultChatModel().modelName,
|
|
13204
13229
|
max_tokens: modelRequirements.maxTokens || 4096,
|
|
@@ -14004,7 +14029,7 @@
|
|
|
14004
14029
|
// <- TODO: [🈁] Use `seed` here AND/OR use is `isDeterministic` for entire execution tools
|
|
14005
14030
|
// <- Note: [🧆]
|
|
14006
14031
|
};
|
|
14007
|
-
rawPromptContent =
|
|
14032
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14008
14033
|
messages = __spreadArray(__spreadArray([], __read((modelRequirements.systemMessage === undefined
|
|
14009
14034
|
? []
|
|
14010
14035
|
: [
|
|
@@ -14119,7 +14144,7 @@
|
|
|
14119
14144
|
console.info(colors__default["default"].bgWhite('content'), JSON.stringify(content, null, 4));
|
|
14120
14145
|
console.info(colors__default["default"].bgWhite('parameters'), JSON.stringify(parameters, null, 4));
|
|
14121
14146
|
}
|
|
14122
|
-
rawPromptContent =
|
|
14147
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14123
14148
|
rawRequest = [
|
|
14124
14149
|
modelName,
|
|
14125
14150
|
[rawPromptContent],
|
|
@@ -14387,7 +14412,7 @@
|
|
|
14387
14412
|
return [4 /*yield*/, vercelProvider.chat(modelName, __assign({ user: (userId === null || userId === void 0 ? void 0 : userId.toString()) || undefined }, additionalChatSettings))];
|
|
14388
14413
|
case 1:
|
|
14389
14414
|
model = _b.sent();
|
|
14390
|
-
rawPromptContent =
|
|
14415
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14391
14416
|
rawRequest = {
|
|
14392
14417
|
// <- TODO: [☂]
|
|
14393
14418
|
inputFormat: 'messages',
|
|
@@ -14784,7 +14809,7 @@
|
|
|
14784
14809
|
type: 'json_object',
|
|
14785
14810
|
};
|
|
14786
14811
|
}
|
|
14787
|
-
rawPromptContent =
|
|
14812
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14788
14813
|
rawRequest = __assign(__assign({}, modelSettings), { messages: __spreadArray(__spreadArray([], __read((modelRequirements.systemMessage === undefined
|
|
14789
14814
|
? []
|
|
14790
14815
|
: [
|
|
@@ -14880,7 +14905,7 @@
|
|
|
14880
14905
|
// <- TODO: [🈁] Use `seed` here AND/OR use is `isDeterministic` for entire execution tools
|
|
14881
14906
|
// <- Note: [🧆]
|
|
14882
14907
|
};
|
|
14883
|
-
rawPromptContent =
|
|
14908
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14884
14909
|
rawRequest = __assign(__assign({}, modelSettings), { prompt: rawPromptContent, user: (_a = this.options.userId) === null || _a === void 0 ? void 0 : _a.toString() });
|
|
14885
14910
|
start = $getCurrentDate();
|
|
14886
14911
|
if (this.options.isVerbose) {
|
|
@@ -14952,7 +14977,7 @@
|
|
|
14952
14977
|
throw new PipelineExecutionError('Use embed only for EMBEDDING variant');
|
|
14953
14978
|
}
|
|
14954
14979
|
modelName = modelRequirements.modelName || this.getDefaultEmbeddingModel().modelName;
|
|
14955
|
-
rawPromptContent =
|
|
14980
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: modelName }));
|
|
14956
14981
|
rawRequest = {
|
|
14957
14982
|
input: rawPromptContent,
|
|
14958
14983
|
model: modelName,
|
|
@@ -15122,7 +15147,7 @@
|
|
|
15122
15147
|
}
|
|
15123
15148
|
finally { if (e_1) throw e_1.error; }
|
|
15124
15149
|
}
|
|
15125
|
-
rawPromptContent =
|
|
15150
|
+
rawPromptContent = templateParameters(content, __assign(__assign({}, parameters), { modelName: 'assistant' }));
|
|
15126
15151
|
rawRequest = {
|
|
15127
15152
|
// TODO: [👨👨👧👧] ...modelSettings,
|
|
15128
15153
|
// TODO: [👨👨👧👧][🧠] What about system message for assistants, does it make sence - combination of OpenAI assistants with Promptbook Personas
|