@promptbook/node 0.100.0-45 → 0.100.0-47
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/esm/index.es.js +109 -99
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/components.index.d.ts +4 -0
- package/esm/typings/src/_packages/core.index.d.ts +2 -0
- package/esm/typings/src/_packages/types.index.d.ts +2 -6
- package/esm/typings/src/book-2.0/commitments/_misc/AgentModelRequirements.d.ts +1 -1
- package/esm/typings/src/book-components/Chat/Chat/Chat.d.ts +4 -10
- package/esm/typings/src/book-components/Chat/interfaces/ChatMessage.d.ts +12 -26
- package/esm/typings/src/book-components/Chat/interfaces/ChatParticipant.d.ts +30 -0
- package/esm/typings/src/book-components/Chat/utils/exportChatHistory.d.ts +2 -4
- package/esm/typings/src/book-components/Chat/utils/generatePdfContent.d.ts +2 -4
- package/esm/typings/src/book-components/Chat/utils/messagesToHtml.d.ts +2 -4
- package/esm/typings/src/book-components/Chat/utils/messagesToMarkdown.d.ts +2 -4
- package/esm/typings/src/book-components/Chat/utils/messagesToText.d.ts +2 -4
- package/esm/typings/src/config.d.ts +7 -0
- package/esm/typings/src/execution/ExecutionTask.d.ts +8 -0
- package/esm/typings/src/llm-providers/openai/OpenAiCompatibleExecutionTools.d.ts +8 -0
- package/esm/typings/src/playground/permanent/error-handling-playground.d.ts +5 -0
- package/esm/typings/src/utils/organization/preserve.d.ts +21 -0
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +2 -3
- package/umd/index.umd.js +113 -103
- package/umd/index.umd.js.map +1 -1
- package/esm/typings/src/scripting/javascript/utils/preserve.d.ts +0 -14
package/umd/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('colors'), require('fs/promises'), require('path'), require('spacetrim'), require('jszip'), require('prettier'), require('prettier/parser-
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'colors', 'fs/promises', 'path', 'spacetrim', 'jszip', 'prettier', 'prettier/parser-
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-node"] = {}, global.colors, global.promises, global.path, global.spaceTrim, global.JSZip, global.
|
|
5
|
-
})(this, (function (exports, colors, promises, path, spaceTrim, JSZip,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('colors'), require('fs/promises'), require('path'), require('spacetrim'), require('jszip'), require('prettier/parser-html'), require('prettier/parser-markdown'), require('prettier/standalone'), require('crypto'), require('rxjs'), require('waitasecond'), require('papaparse'), require('crypto-js/enc-hex'), require('crypto-js/sha256'), require('crypto-js'), require('mime-types'), require('child_process'), require('dotenv')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'colors', 'fs/promises', 'path', 'spacetrim', 'jszip', 'prettier/parser-html', 'prettier/parser-markdown', 'prettier/standalone', 'crypto', 'rxjs', 'waitasecond', 'papaparse', 'crypto-js/enc-hex', 'crypto-js/sha256', 'crypto-js', 'mime-types', 'child_process', 'dotenv'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-node"] = {}, global.colors, global.promises, global.path, global.spaceTrim, global.JSZip, global.parserHtml, global.parserMarkdown, global.standalone, global.crypto, global.rxjs, global.waitasecond, global.papaparse, global.hexEncoder, global.sha256, global.cryptoJs, global.mimeTypes, global.child_process, global.dotenv));
|
|
5
|
+
})(this, (function (exports, colors, promises, path, spaceTrim, JSZip, parserHtml, parserMarkdown, standalone, crypto, rxjs, waitasecond, papaparse, hexEncoder, sha256, cryptoJs, mimeTypes, child_process, dotenv) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
var spaceTrim__default = /*#__PURE__*/_interopDefaultLegacy(spaceTrim);
|
|
29
29
|
var JSZip__default = /*#__PURE__*/_interopDefaultLegacy(JSZip);
|
|
30
30
|
var parserHtml__default = /*#__PURE__*/_interopDefaultLegacy(parserHtml);
|
|
31
|
+
var parserMarkdown__default = /*#__PURE__*/_interopDefaultLegacy(parserMarkdown);
|
|
31
32
|
var hexEncoder__default = /*#__PURE__*/_interopDefaultLegacy(hexEncoder);
|
|
32
33
|
var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
|
|
33
34
|
var dotenv__namespace = /*#__PURE__*/_interopNamespace(dotenv);
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
* @generated
|
|
47
48
|
* @see https://github.com/webgptorg/promptbook
|
|
48
49
|
*/
|
|
49
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.100.0-
|
|
50
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.100.0-47';
|
|
50
51
|
/**
|
|
51
52
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
52
53
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -254,6 +255,13 @@
|
|
|
254
255
|
* @public exported from `@promptbook/core`
|
|
255
256
|
*/
|
|
256
257
|
const DEFAULT_TASK_SIMULATED_DURATION_MS = 5 * 60 * 1000; // 5 minutes
|
|
258
|
+
/**
|
|
259
|
+
* API request timeout in milliseconds
|
|
260
|
+
* Can be overridden via API_REQUEST_TIMEOUT environment variable
|
|
261
|
+
*
|
|
262
|
+
* @public exported from `@promptbook/core`
|
|
263
|
+
*/
|
|
264
|
+
parseInt(process.env.API_REQUEST_TIMEOUT || '90000');
|
|
257
265
|
/**
|
|
258
266
|
* Indicates whether pipeline logic validation is enabled. When true, the pipeline logic is checked for consistency.
|
|
259
267
|
*
|
|
@@ -1301,9 +1309,9 @@
|
|
|
1301
1309
|
*/
|
|
1302
1310
|
function prettifyMarkdown(content) {
|
|
1303
1311
|
try {
|
|
1304
|
-
return
|
|
1312
|
+
return standalone.format(content, {
|
|
1305
1313
|
parser: 'markdown',
|
|
1306
|
-
plugins: [parserHtml__default["default"]],
|
|
1314
|
+
plugins: [parserMarkdown__default["default"], parserHtml__default["default"]],
|
|
1307
1315
|
// TODO: DRY - make some import or auto-copy of .prettierrc
|
|
1308
1316
|
endOfLine: 'lf',
|
|
1309
1317
|
tabWidth: 4,
|
|
@@ -5027,64 +5035,74 @@
|
|
|
5027
5035
|
});
|
|
5028
5036
|
});
|
|
5029
5037
|
};
|
|
5030
|
-
const pipelineExecutor = (inputParameters) =>
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
// Find current task being executed (first task not yet completed)
|
|
5050
|
-
const remainingTasks = pipeline.tasks.filter((task) => !executedTaskTitles.has(task.title));
|
|
5051
|
-
if (remainingTasks.length > 0) {
|
|
5052
|
-
currentTaskName = remainingTasks[0].name;
|
|
5038
|
+
const pipelineExecutor = (inputParameters) => {
|
|
5039
|
+
const startTime = new Date().getTime();
|
|
5040
|
+
return createTask({
|
|
5041
|
+
taskType: 'EXECUTION',
|
|
5042
|
+
title: pipeline.title,
|
|
5043
|
+
taskProcessCallback(updateOngoingResult, updateTldr) {
|
|
5044
|
+
return pipelineExecutorWithCallback(inputParameters, async (newOngoingResult) => {
|
|
5045
|
+
var _a, _b;
|
|
5046
|
+
updateOngoingResult(newOngoingResult);
|
|
5047
|
+
// Calculate and update tldr based on pipeline progress
|
|
5048
|
+
const cv = newOngoingResult;
|
|
5049
|
+
// Calculate progress based on parameters resolved vs total parameters
|
|
5050
|
+
const totalParameters = pipeline.parameters.filter(p => !p.isInput).length;
|
|
5051
|
+
let resolvedParameters = 0;
|
|
5052
|
+
let currentTaskTitle = '';
|
|
5053
|
+
// Get the resolved parameters from output parameters
|
|
5054
|
+
if (cv === null || cv === void 0 ? void 0 : cv.outputParameters) {
|
|
5055
|
+
// Count how many output parameters have non-empty values
|
|
5056
|
+
resolvedParameters = Object.values(cv.outputParameters).filter(value => value !== undefined && value !== null && String(value).trim() !== '').length;
|
|
5053
5057
|
}
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
|
|
5060
|
-
|
|
5061
|
-
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
|
|
5065
|
-
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
|
|
5075
|
-
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5058
|
+
// Try to determine current task from execution report
|
|
5059
|
+
if (((_a = cv === null || cv === void 0 ? void 0 : cv.executionReport) === null || _a === void 0 ? void 0 : _a.promptExecutions) && cv.executionReport.promptExecutions.length > 0) {
|
|
5060
|
+
const lastExecution = cv.executionReport.promptExecutions[cv.executionReport.promptExecutions.length - 1];
|
|
5061
|
+
if ((_b = lastExecution === null || lastExecution === void 0 ? void 0 : lastExecution.prompt) === null || _b === void 0 ? void 0 : _b.title) {
|
|
5062
|
+
currentTaskTitle = lastExecution.prompt.title;
|
|
5063
|
+
}
|
|
5064
|
+
}
|
|
5065
|
+
// Calculate base progress percentage
|
|
5066
|
+
let percent = totalParameters > 0 ? resolvedParameters / totalParameters : 0;
|
|
5067
|
+
// Add time-based progress for current task if we haven't completed all parameters
|
|
5068
|
+
if (resolvedParameters < totalParameters) {
|
|
5069
|
+
const elapsedMs = new Date().getTime() - startTime;
|
|
5070
|
+
const estimatedTotalMs = totalParameters * 30 * 1000; // Estimate 30 seconds per parameter
|
|
5071
|
+
const timeProgress = Math.min(elapsedMs / estimatedTotalMs, 0.9); // Cap at 90% for time-based progress
|
|
5072
|
+
// If we have time progress but no parameter progress, show time progress
|
|
5073
|
+
if (percent === 0 && timeProgress > 0) {
|
|
5074
|
+
percent = Math.min(timeProgress, 0.1); // Show some progress but not more than 10%
|
|
5075
|
+
}
|
|
5076
|
+
else if (percent < 1) {
|
|
5077
|
+
// Add partial progress for current task
|
|
5078
|
+
const taskProgress = totalParameters > 0 ? (1 / totalParameters) * 0.5 : 0; // 50% of task progress
|
|
5079
|
+
percent = Math.min(percent + taskProgress, 0.95); // Cap at 95% until fully complete
|
|
5080
|
+
}
|
|
5081
|
+
}
|
|
5082
|
+
// Clamp to [0,1]
|
|
5083
|
+
percent = Math.min(Math.max(percent, 0), 1);
|
|
5084
|
+
// Generate message
|
|
5085
|
+
let message = '';
|
|
5086
|
+
if (currentTaskTitle) {
|
|
5087
|
+
message = `Executing: ${currentTaskTitle}`;
|
|
5088
|
+
}
|
|
5089
|
+
else if (resolvedParameters === 0) {
|
|
5090
|
+
message = 'Starting pipeline execution';
|
|
5091
|
+
}
|
|
5092
|
+
else if (resolvedParameters < totalParameters) {
|
|
5093
|
+
message = `Processing pipeline (${resolvedParameters}/${totalParameters} parameters resolved)`;
|
|
5094
|
+
}
|
|
5095
|
+
else {
|
|
5096
|
+
message = 'Completing pipeline execution';
|
|
5097
|
+
}
|
|
5098
|
+
updateTldr({
|
|
5099
|
+
percent: percent,
|
|
5100
|
+
message,
|
|
5101
|
+
});
|
|
5084
5102
|
});
|
|
5085
|
-
}
|
|
5086
|
-
}
|
|
5087
|
-
}
|
|
5103
|
+
},
|
|
5104
|
+
});
|
|
5105
|
+
};
|
|
5088
5106
|
// <- TODO: Make types such as there is no need to do `as` for `createTask`
|
|
5089
5107
|
return pipelineExecutor;
|
|
5090
5108
|
}
|
|
@@ -5220,7 +5238,7 @@
|
|
|
5220
5238
|
const result = await preparePersonaExecutor({
|
|
5221
5239
|
availableModels /* <- Note: Passing as JSON */,
|
|
5222
5240
|
personaDescription,
|
|
5223
|
-
}).asPromise();
|
|
5241
|
+
}).asPromise({ isCrashedOnError: true });
|
|
5224
5242
|
const { outputParameters } = result;
|
|
5225
5243
|
const { modelsRequirements: modelsRequirementsJson } = outputParameters;
|
|
5226
5244
|
let modelsRequirementsUnchecked = jsonParse(modelsRequirementsJson);
|
|
@@ -6110,7 +6128,7 @@
|
|
|
6110
6128
|
});
|
|
6111
6129
|
const result = await prepareTitleExecutor({
|
|
6112
6130
|
book: sources.map(({ content }) => content).join('\n\n'),
|
|
6113
|
-
}).asPromise();
|
|
6131
|
+
}).asPromise({ isCrashedOnError: true });
|
|
6114
6132
|
const { outputParameters } = result;
|
|
6115
6133
|
const { title: titleRaw } = outputParameters;
|
|
6116
6134
|
if (isVerbose) {
|
|
@@ -10818,31 +10836,23 @@
|
|
|
10818
10836
|
return content;
|
|
10819
10837
|
}
|
|
10820
10838
|
|
|
10839
|
+
/**
|
|
10840
|
+
* @private internal for `preserve`
|
|
10841
|
+
*/
|
|
10842
|
+
const _preserved = [];
|
|
10821
10843
|
/**
|
|
10822
10844
|
* Does nothing, but preserves the function in the bundle
|
|
10823
10845
|
* Compiler is tricked into thinking the function is used
|
|
10824
10846
|
*
|
|
10825
10847
|
* @param value any function to preserve
|
|
10826
10848
|
* @returns nothing
|
|
10827
|
-
* @private
|
|
10828
|
-
*/
|
|
10829
|
-
function preserve(
|
|
10830
|
-
|
|
10831
|
-
(async () => {
|
|
10832
|
-
// TODO: [💩] Change to `await forEver` or `forTime(Infinity)`
|
|
10833
|
-
await waitasecond.forTime(100000000);
|
|
10834
|
-
// [1]
|
|
10835
|
-
try {
|
|
10836
|
-
await func();
|
|
10837
|
-
}
|
|
10838
|
-
finally {
|
|
10839
|
-
// do nothing
|
|
10840
|
-
}
|
|
10841
|
-
})();
|
|
10849
|
+
* @private within the repository
|
|
10850
|
+
*/
|
|
10851
|
+
function $preserve(...value) {
|
|
10852
|
+
_preserved.push(...value);
|
|
10842
10853
|
}
|
|
10843
10854
|
/**
|
|
10844
|
-
*
|
|
10845
|
-
* TODO: [1] This maybe does memory leak
|
|
10855
|
+
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
10846
10856
|
*/
|
|
10847
10857
|
|
|
10848
10858
|
// Note: [💎]
|
|
@@ -10870,25 +10880,25 @@
|
|
|
10870
10880
|
// Note: [💎]
|
|
10871
10881
|
// Note: Using direct eval, following variables are in same scope as eval call so they are accessible from inside the evaluated script:
|
|
10872
10882
|
const spaceTrim = (_) => spaceTrim__default["default"](_);
|
|
10873
|
-
preserve(spaceTrim);
|
|
10883
|
+
$preserve(spaceTrim);
|
|
10874
10884
|
const removeQuotes$1 = removeQuotes;
|
|
10875
|
-
preserve(removeQuotes$1);
|
|
10885
|
+
$preserve(removeQuotes$1);
|
|
10876
10886
|
const unwrapResult$1 = unwrapResult;
|
|
10877
|
-
preserve(unwrapResult$1);
|
|
10887
|
+
$preserve(unwrapResult$1);
|
|
10878
10888
|
const trimEndOfCodeBlock$1 = trimEndOfCodeBlock;
|
|
10879
|
-
preserve(trimEndOfCodeBlock$1);
|
|
10889
|
+
$preserve(trimEndOfCodeBlock$1);
|
|
10880
10890
|
const trimCodeBlock$1 = trimCodeBlock;
|
|
10881
|
-
preserve(trimCodeBlock$1);
|
|
10891
|
+
$preserve(trimCodeBlock$1);
|
|
10882
10892
|
// TODO: DRY [🍯]
|
|
10883
10893
|
const trim = (str) => str.trim();
|
|
10884
|
-
preserve(trim);
|
|
10894
|
+
$preserve(trim);
|
|
10885
10895
|
// TODO: DRY [🍯]
|
|
10886
10896
|
const reverse = (str) => str.split('').reverse().join('');
|
|
10887
|
-
preserve(reverse);
|
|
10897
|
+
$preserve(reverse);
|
|
10888
10898
|
const removeEmojis$1 = removeEmojis;
|
|
10889
|
-
preserve(removeEmojis$1);
|
|
10899
|
+
$preserve(removeEmojis$1);
|
|
10890
10900
|
const prettifyMarkdown$1 = prettifyMarkdown;
|
|
10891
|
-
preserve(prettifyMarkdown$1);
|
|
10901
|
+
$preserve(prettifyMarkdown$1);
|
|
10892
10902
|
//-------[n12:]---
|
|
10893
10903
|
const capitalize$1 = capitalize;
|
|
10894
10904
|
const decapitalize$1 = decapitalize;
|
|
@@ -10904,18 +10914,18 @@
|
|
|
10904
10914
|
// TODO: DRY [🍯]
|
|
10905
10915
|
Array.from(parseKeywordsFromString(input)).join(', '); /* <- TODO: [🧠] What is the best format comma list, bullet list,...? */
|
|
10906
10916
|
const normalizeTo_SCREAMING_CASE$1 = normalizeTo_SCREAMING_CASE;
|
|
10907
|
-
preserve(capitalize$1);
|
|
10908
|
-
preserve(decapitalize$1);
|
|
10909
|
-
preserve(nameToUriPart$1);
|
|
10910
|
-
preserve(nameToUriParts$1);
|
|
10911
|
-
preserve(removeDiacritics$1);
|
|
10912
|
-
preserve(normalizeWhitespaces$1);
|
|
10913
|
-
preserve(normalizeToKebabCase$1);
|
|
10914
|
-
preserve(normalizeTo_camelCase$1);
|
|
10915
|
-
preserve(normalizeTo_snake_case$1);
|
|
10916
|
-
preserve(normalizeTo_PascalCase$1);
|
|
10917
|
-
preserve(parseKeywords);
|
|
10918
|
-
preserve(normalizeTo_SCREAMING_CASE$1);
|
|
10917
|
+
$preserve(capitalize$1);
|
|
10918
|
+
$preserve(decapitalize$1);
|
|
10919
|
+
$preserve(nameToUriPart$1);
|
|
10920
|
+
$preserve(nameToUriParts$1);
|
|
10921
|
+
$preserve(removeDiacritics$1);
|
|
10922
|
+
$preserve(normalizeWhitespaces$1);
|
|
10923
|
+
$preserve(normalizeToKebabCase$1);
|
|
10924
|
+
$preserve(normalizeTo_camelCase$1);
|
|
10925
|
+
$preserve(normalizeTo_snake_case$1);
|
|
10926
|
+
$preserve(normalizeTo_PascalCase$1);
|
|
10927
|
+
$preserve(parseKeywords);
|
|
10928
|
+
$preserve(normalizeTo_SCREAMING_CASE$1);
|
|
10919
10929
|
//-------[/n12]---
|
|
10920
10930
|
if (!script.includes('return')) {
|
|
10921
10931
|
script = `return ${script}`;
|