@promptbook/wizard 0.100.0-2 → 0.100.0-21
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 +1 -0
- package/esm/index.es.js +87 -18
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/core.index.d.ts +24 -0
- package/esm/typings/src/_packages/types.index.d.ts +28 -0
- package/esm/typings/src/book-2.0/agent-source/parseAgentSource.d.ts +30 -0
- package/esm/typings/src/book-2.0/agent-source/parseAgentSource.test.d.ts +1 -0
- package/esm/typings/src/book-2.0/agent-source/string_book.d.ts +26 -0
- package/esm/typings/src/book-2.0/commitments/ACTION/ACTION.d.ts +30 -0
- package/esm/typings/src/book-2.0/commitments/FORMAT/FORMAT.d.ts +31 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/FrontendRAGService.d.ts +48 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/KNOWLEDGE.d.ts +43 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/RAGService.d.ts +54 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/BaseKnowledgeProcessor.d.ts +45 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/PdfProcessor.d.ts +31 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/ProcessorFactory.d.ts +23 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/TextProcessor.d.ts +18 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/types.d.ts +56 -0
- package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/utils/ragHelper.d.ts +34 -0
- package/esm/typings/src/book-2.0/commitments/META_IMAGE/META_IMAGE.d.ts +36 -0
- package/esm/typings/src/book-2.0/commitments/META_LINK/META_LINK.d.ts +48 -0
- package/esm/typings/src/book-2.0/commitments/MODEL/MODEL.d.ts +31 -0
- package/esm/typings/src/book-2.0/commitments/NOTE/NOTE.d.ts +41 -0
- package/esm/typings/src/book-2.0/commitments/PERSONA/PERSONA.d.ts +38 -0
- package/esm/typings/src/book-2.0/commitments/RULE/RULE.d.ts +36 -0
- package/esm/typings/src/book-2.0/commitments/SAMPLE/SAMPLE.d.ts +36 -0
- package/esm/typings/src/book-2.0/commitments/STYLE/STYLE.d.ts +30 -0
- package/esm/typings/src/book-2.0/commitments/_base/BaseCommitmentDefinition.d.ts +42 -0
- package/esm/typings/src/book-2.0/commitments/_base/BookCommitment.d.ts +5 -0
- package/esm/typings/src/book-2.0/commitments/_base/CommitmentDefinition.d.ts +37 -0
- package/esm/typings/src/book-2.0/commitments/_base/NotYetImplementedCommitmentDefinition.d.ts +14 -0
- package/esm/typings/src/book-2.0/commitments/_base/createEmptyAgentModelRequirements.d.ts +19 -0
- package/esm/typings/src/book-2.0/commitments/_misc/AgentModelRequirements.d.ts +37 -0
- package/esm/typings/src/book-2.0/commitments/_misc/AgentSourceParseResult.d.ts +18 -0
- package/esm/typings/src/book-2.0/commitments/_misc/ParsedCommitment.d.ts +22 -0
- package/esm/typings/src/book-2.0/commitments/_misc/createAgentModelRequirements.d.ts +61 -0
- package/esm/typings/src/book-2.0/commitments/_misc/createAgentModelRequirementsWithCommitments.d.ts +35 -0
- package/esm/typings/src/book-2.0/commitments/_misc/createCommitmentRegex.d.ts +20 -0
- package/esm/typings/src/book-2.0/commitments/_misc/parseAgentSourceWithCommitments.d.ts +24 -0
- package/esm/typings/src/book-2.0/commitments/_misc/removeCommentsFromSystemMessage.d.ts +11 -0
- package/esm/typings/src/book-2.0/commitments/index.d.ts +56 -0
- package/esm/typings/src/book-2.0/utils/profileImageUtils.d.ts +39 -0
- package/esm/typings/src/pipeline/book-notation.d.ts +2 -1
- package/esm/typings/src/types/typeAliases.d.ts +6 -0
- package/esm/typings/src/version.d.ts +1 -1
- package/esm/typings/src/wizard/wizard.d.ts +14 -4
- package/package.json +2 -2
- package/umd/index.umd.js +87 -18
- package/umd/index.umd.js.map +1 -1
@@ -0,0 +1,39 @@
|
|
1
|
+
import type { string_url_image } from '../../types/typeAliases';
|
2
|
+
/**
|
3
|
+
* Extracts profile image URL from agent definition text and returns cleaned system message
|
4
|
+
* @param systemMessage The original system message that may contain META IMAGE line
|
5
|
+
* @returns Object with profileImageUrl (if found) and cleanedSystemMessage (without META IMAGE line)
|
6
|
+
*
|
7
|
+
* @private - TODO: [🧠] Maybe should be public?
|
8
|
+
*/
|
9
|
+
export declare function extractProfileImageFromSystemMessage(systemMessage: string): {
|
10
|
+
profileImageUrl?: string_url_image;
|
11
|
+
cleanedSystemMessage: string;
|
12
|
+
};
|
13
|
+
/**
|
14
|
+
* Extracts persona, examples, and profile image from agent definition text
|
15
|
+
* @param systemMessage The original system message that may contain PERSONA, EXAMPLE, and META IMAGE lines
|
16
|
+
* @returns Object with extracted information and cleaned system message
|
17
|
+
*
|
18
|
+
* @private - TODO: [🧠] Maybe should be public?
|
19
|
+
*/
|
20
|
+
export declare function extractAgentMetadata(systemMessage: string): {
|
21
|
+
persona?: {
|
22
|
+
name: string;
|
23
|
+
description?: string;
|
24
|
+
};
|
25
|
+
examples: string[];
|
26
|
+
profileImageUrl?: string_url_image;
|
27
|
+
cleanedSystemMessage: string;
|
28
|
+
};
|
29
|
+
/**
|
30
|
+
* Generates a gravatar URL based on agent name for fallback avatar
|
31
|
+
* @param name The agent name to generate avatar for
|
32
|
+
* @returns Gravatar URL
|
33
|
+
*
|
34
|
+
* @private - TODO: [🧠] Maybe should be public?
|
35
|
+
*/
|
36
|
+
export declare function generateGravatarUrl(name?: string | null): string;
|
37
|
+
/**
|
38
|
+
* Note: [💞] Ignore a discrepancy between file name and entity name
|
39
|
+
*/
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { string_book } from '../book-2.0/agent-source/string_book';
|
1
2
|
import type { PipelineString } from './PipelineString';
|
2
3
|
/**
|
3
4
|
* Tag function for notating a pipeline with a book\`...\ notation as template literal
|
@@ -12,7 +13,7 @@ import type { PipelineString } from './PipelineString';
|
|
12
13
|
* @returns the pipeline string
|
13
14
|
* @public exported from `@promptbook/core`
|
14
15
|
*/
|
15
|
-
export declare function book(strings: TemplateStringsArray, ...values: Array<string>): PipelineString;
|
16
|
+
export declare function book(strings: TemplateStringsArray, ...values: Array<string>): string_book & PipelineString;
|
16
17
|
/**
|
17
18
|
* TODO: [🧠][🈴] Where is the best location for this file
|
18
19
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
@@ -136,6 +136,12 @@ export type ReservedParameters = Record<string_reserved_parameter_name, string_p
|
|
136
136
|
* For example `"Ai*nautes"`
|
137
137
|
*/
|
138
138
|
export type string_title = string;
|
139
|
+
/**
|
140
|
+
* Semantic helper
|
141
|
+
*
|
142
|
+
* For example `"My AI Assistant"`
|
143
|
+
*/
|
144
|
+
export type string_agent_name = string;
|
139
145
|
/**
|
140
146
|
* Unstructured description of the persona
|
141
147
|
*
|
@@ -15,7 +15,7 @@ export declare const BOOK_LANGUAGE_VERSION: string_semantic_version;
|
|
15
15
|
export declare const PROMPTBOOK_ENGINE_VERSION: string_promptbook_version;
|
16
16
|
/**
|
17
17
|
* Represents the version string of the Promptbook engine.
|
18
|
-
* It follows semantic versioning (e.g., `0.100.0-
|
18
|
+
* It follows semantic versioning (e.g., `0.100.0-20`).
|
19
19
|
*
|
20
20
|
* @generated
|
21
21
|
*/
|
@@ -6,6 +6,15 @@ import type { InputParameters } from '../types/typeAliases';
|
|
6
6
|
import type { string_filename } from '../types/typeAliases';
|
7
7
|
import type { string_parameter_value } from '../types/typeAliases';
|
8
8
|
import type { string_pipeline_url } from '../types/typeAliases';
|
9
|
+
/**
|
10
|
+
* Options for wizard methods
|
11
|
+
*/
|
12
|
+
interface WizardOptions {
|
13
|
+
/**
|
14
|
+
* Whether to enable verbose logging
|
15
|
+
*/
|
16
|
+
isVerbose?: boolean;
|
17
|
+
}
|
9
18
|
/**
|
10
19
|
* Wizard for simple usage of the Promptbook
|
11
20
|
* Look at `wizard` for more details
|
@@ -26,7 +35,7 @@ declare class Wizard {
|
|
26
35
|
*
|
27
36
|
* Note: This works similar to the `ptbk run` command
|
28
37
|
*/
|
29
|
-
execute(book: string_pipeline_url | string_filename | PipelineString, inputParameters: InputParameters): Promise<{
|
38
|
+
execute(book: string_pipeline_url | string_filename | PipelineString, inputParameters: InputParameters, options?: WizardOptions): Promise<{
|
30
39
|
/**
|
31
40
|
* Simple result of the execution
|
32
41
|
*/
|
@@ -36,9 +45,9 @@ declare class Wizard {
|
|
36
45
|
/**
|
37
46
|
* Provides the tools automatically for the Node.js environment
|
38
47
|
*
|
39
|
-
* @param
|
48
|
+
* @param options
|
40
49
|
*/
|
41
|
-
getExecutionTools(): Promise<Required<Pick<ExecutionTools, 'fs' | 'fetch'>>>;
|
50
|
+
getExecutionTools(options?: WizardOptions): Promise<Required<Pick<ExecutionTools, 'fs' | 'fetch'>>>;
|
42
51
|
/**
|
43
52
|
* Load book from the source
|
44
53
|
*
|
@@ -49,8 +58,9 @@ declare class Wizard {
|
|
49
58
|
* 3) As a string
|
50
59
|
*
|
51
60
|
* @param pipelineSource
|
61
|
+
* @param options
|
52
62
|
*/
|
53
|
-
getCompiledBook(pipelineSource: string_filename | string_pipeline_url | PipelineString): Promise<PipelineJson>;
|
63
|
+
getCompiledBook(pipelineSource: string_filename | string_pipeline_url | PipelineString, options?: WizardOptions): Promise<PipelineJson>;
|
54
64
|
}
|
55
65
|
/**
|
56
66
|
* Wizard for simple usage of the Promptbook
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@promptbook/wizard",
|
3
|
-
"version": "0.100.0-
|
3
|
+
"version": "0.100.0-21",
|
4
4
|
"description": "Promptbook: Run AI apps in plain human language across multiple models and platforms",
|
5
5
|
"private": false,
|
6
6
|
"sideEffects": false,
|
@@ -95,7 +95,7 @@
|
|
95
95
|
"module": "./esm/index.es.js",
|
96
96
|
"typings": "./esm/typings/src/_packages/wizard.index.d.ts",
|
97
97
|
"peerDependencies": {
|
98
|
-
"@promptbook/core": "0.100.0-
|
98
|
+
"@promptbook/core": "0.100.0-21"
|
99
99
|
},
|
100
100
|
"dependencies": {
|
101
101
|
"@ai-sdk/deepseek": "0.1.6",
|
package/umd/index.umd.js
CHANGED
@@ -49,7 +49,7 @@
|
|
49
49
|
* @generated
|
50
50
|
* @see https://github.com/webgptorg/promptbook
|
51
51
|
*/
|
52
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.100.0-
|
52
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.100.0-21';
|
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
|
@@ -2720,6 +2720,18 @@
|
|
2720
2720
|
const OPENAI_MODELS = exportJson({
|
2721
2721
|
name: 'OPENAI_MODELS',
|
2722
2722
|
value: [
|
2723
|
+
/**/
|
2724
|
+
{
|
2725
|
+
modelVariant: 'CHAT',
|
2726
|
+
modelTitle: 'gpt-5',
|
2727
|
+
modelName: 'gpt-5',
|
2728
|
+
modelDescription: "OpenAI's most advanced language model with unprecedented reasoning capabilities and 200K context window. Features revolutionary improvements in complex problem-solving, scientific reasoning, and creative tasks. Demonstrates human-level performance across diverse domains with enhanced safety measures and alignment. Represents the next generation of AI with superior understanding, nuanced responses, and advanced multimodal capabilities.",
|
2729
|
+
pricing: {
|
2730
|
+
prompt: pricing(`$10.00 / 1M tokens`),
|
2731
|
+
output: pricing(`$30.00 / 1M tokens`),
|
2732
|
+
},
|
2733
|
+
},
|
2734
|
+
/**/
|
2723
2735
|
/*/
|
2724
2736
|
{
|
2725
2737
|
modelTitle: 'dall-e-3',
|
@@ -5184,7 +5196,7 @@
|
|
5184
5196
|
* Default model for chat variant.
|
5185
5197
|
*/
|
5186
5198
|
getDefaultChatModel() {
|
5187
|
-
return this.getDefaultModel('gpt-
|
5199
|
+
return this.getDefaultModel('gpt-5');
|
5188
5200
|
}
|
5189
5201
|
/**
|
5190
5202
|
* Default model for completion variant.
|
@@ -5974,7 +5986,23 @@
|
|
5974
5986
|
.join('/') +
|
5975
5987
|
'.' +
|
5976
5988
|
extension;
|
5977
|
-
|
5989
|
+
// Note: Try to create cache directory, but don't fail if filesystem has issues
|
5990
|
+
try {
|
5991
|
+
await promises.mkdir(path.dirname(cacheFilename), { recursive: true });
|
5992
|
+
}
|
5993
|
+
catch (error) {
|
5994
|
+
// Note: If we can't create cache directory, continue without it
|
5995
|
+
// This handles read-only filesystems, permission issues, and missing parent directories
|
5996
|
+
if (error instanceof Error && (error.message.includes('EROFS') ||
|
5997
|
+
error.message.includes('read-only') ||
|
5998
|
+
error.message.includes('EACCES') ||
|
5999
|
+
error.message.includes('EPERM') ||
|
6000
|
+
error.message.includes('ENOENT'))) ;
|
6001
|
+
else {
|
6002
|
+
// Re-throw other unexpected errors
|
6003
|
+
throw error;
|
6004
|
+
}
|
6005
|
+
}
|
5978
6006
|
let isDestroyed = true;
|
5979
6007
|
const fileHandler = {
|
5980
6008
|
filename: cacheFilename,
|
@@ -7738,7 +7766,23 @@
|
|
7738
7766
|
// <- TODO: [🥬] Encapsulate sha256 to some private utility function
|
7739
7767
|
const rootDirname = path.join(process.cwd(), DEFAULT_DOWNLOAD_CACHE_DIRNAME);
|
7740
7768
|
const filepath = path.join(...nameToSubfolderPath(hash /* <- TODO: [🎎] Maybe add some SHA256 prefix */), `${basename.substring(0, MAX_FILENAME_LENGTH)}.${mimeTypeToExtension(mimeType)}`);
|
7741
|
-
|
7769
|
+
// Note: Try to create cache directory, but don't fail if filesystem has issues
|
7770
|
+
try {
|
7771
|
+
await tools.fs.mkdir(path.dirname(path.join(rootDirname, filepath)), { recursive: true });
|
7772
|
+
}
|
7773
|
+
catch (error) {
|
7774
|
+
// Note: If we can't create cache directory, we'll handle it when trying to write the file
|
7775
|
+
// This handles read-only filesystems, permission issues, and missing parent directories
|
7776
|
+
if (error instanceof Error && (error.message.includes('EROFS') ||
|
7777
|
+
error.message.includes('read-only') ||
|
7778
|
+
error.message.includes('EACCES') ||
|
7779
|
+
error.message.includes('EPERM') ||
|
7780
|
+
error.message.includes('ENOENT'))) ;
|
7781
|
+
else {
|
7782
|
+
// Re-throw other unexpected errors
|
7783
|
+
throw error;
|
7784
|
+
}
|
7785
|
+
}
|
7742
7786
|
const fileContent = Buffer.from(await response.arrayBuffer());
|
7743
7787
|
if (fileContent.length > DEFAULT_MAX_FILE_SIZE /* <- TODO: Allow to pass different value to remote server */) {
|
7744
7788
|
throw new LimitReachedError(`File is too large (${Math.round(fileContent.length / 1024 / 1024)}MB). Maximum allowed size is ${Math.round(DEFAULT_MAX_FILE_SIZE / 1024 / 1024)}MB.`);
|
@@ -7753,7 +7797,8 @@
|
|
7753
7797
|
if (error instanceof Error && (error.message.includes('EROFS') ||
|
7754
7798
|
error.message.includes('read-only') ||
|
7755
7799
|
error.message.includes('EACCES') ||
|
7756
|
-
error.message.includes('EPERM')
|
7800
|
+
error.message.includes('EPERM') ||
|
7801
|
+
error.message.includes('ENOENT'))) {
|
7757
7802
|
// Return a handler that works directly with the downloaded content
|
7758
7803
|
return {
|
7759
7804
|
source: name,
|
@@ -10860,7 +10905,8 @@
|
|
10860
10905
|
if (error instanceof Error && (error.message.includes('EROFS') ||
|
10861
10906
|
error.message.includes('read-only') ||
|
10862
10907
|
error.message.includes('EACCES') ||
|
10863
|
-
error.message.includes('EPERM')
|
10908
|
+
error.message.includes('EPERM') ||
|
10909
|
+
error.message.includes('ENOENT'))) ;
|
10864
10910
|
else {
|
10865
10911
|
// Re-throw other unexpected errors
|
10866
10912
|
throw error;
|
@@ -11163,7 +11209,8 @@
|
|
11163
11209
|
if (error instanceof Error && (error.message.includes('EROFS') ||
|
11164
11210
|
error.message.includes('read-only') ||
|
11165
11211
|
error.message.includes('EACCES') ||
|
11166
|
-
error.message.includes('EPERM')
|
11212
|
+
error.message.includes('EPERM') ||
|
11213
|
+
error.message.includes('ENOENT'))) ;
|
11167
11214
|
else {
|
11168
11215
|
// Re-throw other unexpected errors
|
11169
11216
|
throw error;
|
@@ -11909,8 +11956,27 @@
|
|
11909
11956
|
throw new UnexpectedError(`The "${key}" you want to store in JSON file is not serializable as JSON`);
|
11910
11957
|
}
|
11911
11958
|
const fileContent = stringifyPipelineJson(value);
|
11912
|
-
|
11913
|
-
|
11959
|
+
// Note: Try to create cache directory and write file, but don't fail if filesystem is read-only or has permission issues
|
11960
|
+
try {
|
11961
|
+
await promises.mkdir(path.dirname(filename), { recursive: true }); // <- [0]
|
11962
|
+
await promises.writeFile(filename, fileContent, 'utf-8');
|
11963
|
+
}
|
11964
|
+
catch (error) {
|
11965
|
+
// Note: If we can't write to cache, silently ignore the error
|
11966
|
+
// This handles read-only filesystems, permission issues, and missing parent directories
|
11967
|
+
if (error instanceof Error && (error.message.includes('EROFS') ||
|
11968
|
+
error.message.includes('read-only') ||
|
11969
|
+
error.message.includes('EACCES') ||
|
11970
|
+
error.message.includes('EPERM') ||
|
11971
|
+
error.message.includes('ENOENT'))) {
|
11972
|
+
// Silently ignore filesystem errors - caching is optional
|
11973
|
+
return;
|
11974
|
+
}
|
11975
|
+
else {
|
11976
|
+
// Re-throw other unexpected errors
|
11977
|
+
throw error;
|
11978
|
+
}
|
11979
|
+
}
|
11914
11980
|
}
|
11915
11981
|
/**
|
11916
11982
|
* Removes the key/value pair with the given key from the storage, if a key/value pair with the given key exists.
|
@@ -16790,7 +16856,8 @@
|
|
16790
16856
|
if (error instanceof Error && (error.message.includes('EROFS') ||
|
16791
16857
|
error.message.includes('read-only') ||
|
16792
16858
|
error.message.includes('EACCES') ||
|
16793
|
-
error.message.includes('EPERM')
|
16859
|
+
error.message.includes('EPERM') ||
|
16860
|
+
error.message.includes('ENOENT'))) ;
|
16794
16861
|
else {
|
16795
16862
|
// Re-throw other unexpected errors
|
16796
16863
|
throw error;
|
@@ -16917,14 +16984,14 @@
|
|
16917
16984
|
*
|
16918
16985
|
* Note: This works similar to the `ptbk run` command
|
16919
16986
|
*/
|
16920
|
-
async execute(book, inputParameters) {
|
16987
|
+
async execute(book, inputParameters, options = {}) {
|
16921
16988
|
if (!$isRunningInNode()) {
|
16922
16989
|
throw new EnvironmentMismatchError('Wizard works only in Node.js environment');
|
16923
16990
|
}
|
16924
16991
|
// ▶ Get the tools
|
16925
|
-
const tools = await this.getExecutionTools();
|
16992
|
+
const tools = await this.getExecutionTools(options);
|
16926
16993
|
// ▶ Get the Pipeline
|
16927
|
-
const pipeline = await this.getCompiledBook(book);
|
16994
|
+
const pipeline = await this.getCompiledBook(book, options);
|
16928
16995
|
// ▶ Create executor - the function that will execute the Pipeline
|
16929
16996
|
const pipelineExecutor = createPipelineExecutor({ pipeline, tools });
|
16930
16997
|
// 🚀▶ Execute the Pipeline
|
@@ -16947,15 +17014,16 @@
|
|
16947
17014
|
/**
|
16948
17015
|
* Provides the tools automatically for the Node.js environment
|
16949
17016
|
*
|
16950
|
-
* @param
|
17017
|
+
* @param options
|
16951
17018
|
*/
|
16952
|
-
async getExecutionTools() {
|
17019
|
+
async getExecutionTools(options = {}) {
|
17020
|
+
var _a;
|
16953
17021
|
if (this.executionTools !== null) {
|
16954
17022
|
return this.executionTools;
|
16955
17023
|
}
|
16956
17024
|
// TODO: DRY [◽]
|
16957
17025
|
const prepareAndScrapeOptions = {
|
16958
|
-
isVerbose: false,
|
17026
|
+
isVerbose: (_a = options.isVerbose) !== null && _a !== void 0 ? _a : false,
|
16959
17027
|
isCacheReloaded: false, // <- TODO: Allow to pass
|
16960
17028
|
}; /* <- TODO: ` satisfies PrepareAndScrapeOptions` */
|
16961
17029
|
const fs = $provideFilesystemForNode();
|
@@ -16985,9 +17053,10 @@
|
|
16985
17053
|
* 3) As a string
|
16986
17054
|
*
|
16987
17055
|
* @param pipelineSource
|
17056
|
+
* @param options
|
16988
17057
|
*/
|
16989
|
-
async getCompiledBook(pipelineSource) {
|
16990
|
-
const tools = await this.getExecutionTools();
|
17058
|
+
async getCompiledBook(pipelineSource, options = {}) {
|
17059
|
+
const tools = await this.getExecutionTools(options);
|
16991
17060
|
return /* not await */ $getCompiledBook(tools, pipelineSource);
|
16992
17061
|
}
|
16993
17062
|
}
|