@promptbook/pdf 0.92.0-31 β 0.92.0-33
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 +36 -26
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/types.index.d.ts +2 -0
- package/esm/typings/src/execution/ExecutionTask.d.ts +19 -1
- package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.d.ts +6 -0
- package/esm/typings/src/llm-providers/azure-openai/AzureOpenAiExecutionToolsOptions.d.ts +4 -4
- package/esm/typings/src/storage/local-storage/getIndexedDbStorage.d.ts +2 -1
- package/esm/typings/src/storage/local-storage/utils/IndexedDbStorageOptions.d.ts +14 -0
- package/esm/typings/src/storage/local-storage/utils/makePromptbookStorageFromIndexedDb.d.ts +2 -1
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +2 -2
- package/umd/index.umd.js +36 -26
- package/umd/index.umd.js.map +1 -1
|
@@ -134,6 +134,7 @@ import type { JavascriptExecutionToolsOptions } from '../scripting/javascript/Ja
|
|
|
134
134
|
import type { PostprocessingFunction } from '../scripting/javascript/JavascriptExecutionToolsOptions';
|
|
135
135
|
import type { PromptbookStorage } from '../storage/_common/PromptbookStorage';
|
|
136
136
|
import type { FileCacheStorageOptions } from '../storage/file-cache-storage/FileCacheStorageOptions';
|
|
137
|
+
import type { IndexedDbStorageOptions } from '../storage/local-storage/utils/IndexedDbStorageOptions';
|
|
137
138
|
import type { IntermediateFilesStrategy } from '../types/IntermediateFilesStrategy';
|
|
138
139
|
import type { ModelRequirements } from '../types/ModelRequirements';
|
|
139
140
|
import type { CompletionModelRequirements } from '../types/ModelRequirements';
|
|
@@ -431,6 +432,7 @@ export type { JavascriptExecutionToolsOptions };
|
|
|
431
432
|
export type { PostprocessingFunction };
|
|
432
433
|
export type { PromptbookStorage };
|
|
433
434
|
export type { FileCacheStorageOptions };
|
|
435
|
+
export type { IndexedDbStorageOptions };
|
|
434
436
|
export type { IntermediateFilesStrategy };
|
|
435
437
|
export type { ModelRequirements };
|
|
436
438
|
export type { CompletionModelRequirements };
|
|
@@ -2,6 +2,7 @@ import type { Observable } from 'rxjs';
|
|
|
2
2
|
import { PartialDeep } from 'type-fest';
|
|
3
3
|
import type { task_id } from '../types/typeAliases';
|
|
4
4
|
import type { string_SCREAMING_CASE } from '../utils/normalization/normalizeTo_SCREAMING_CASE';
|
|
5
|
+
import type { string_promptbook_version } from '../version';
|
|
5
6
|
import type { AbstractTaskResult } from './AbstractTaskResult';
|
|
6
7
|
import type { PipelineExecutorResult } from './PipelineExecutorResult';
|
|
7
8
|
/**
|
|
@@ -12,12 +13,21 @@ type CreateTaskOptions<TTaskResult extends AbstractTaskResult> = {
|
|
|
12
13
|
* The type of task to create
|
|
13
14
|
*/
|
|
14
15
|
readonly taskType: AbstractTask<TTaskResult>['taskType'];
|
|
16
|
+
/**
|
|
17
|
+
* Human-readable title of the task - used for displaying in the UI
|
|
18
|
+
*/
|
|
19
|
+
readonly title: AbstractTask<TTaskResult>['title'];
|
|
15
20
|
/**
|
|
16
21
|
* Callback that processes the task and updates the ongoing result
|
|
17
22
|
* @param ongoingResult The partial result of the task processing
|
|
18
23
|
* @returns The final task result
|
|
19
24
|
*/
|
|
20
|
-
taskProcessCallback(updateOngoingResult: (newOngoingResult: PartialDeep<TTaskResult>
|
|
25
|
+
taskProcessCallback(updateOngoingResult: (newOngoingResult: PartialDeep<TTaskResult> & {
|
|
26
|
+
/**
|
|
27
|
+
* Optional update of the task title
|
|
28
|
+
*/
|
|
29
|
+
readonly title?: AbstractTask<TTaskResult>['title'];
|
|
30
|
+
}) => void): Promise<TTaskResult>;
|
|
21
31
|
};
|
|
22
32
|
/**
|
|
23
33
|
* Helper to create a new task
|
|
@@ -52,10 +62,18 @@ export type AbstractTask<TTaskResult extends AbstractTaskResult> = {
|
|
|
52
62
|
* Type of the task
|
|
53
63
|
*/
|
|
54
64
|
readonly taskType: string_SCREAMING_CASE;
|
|
65
|
+
/**
|
|
66
|
+
* Version of the promptbook used to run the task
|
|
67
|
+
*/
|
|
68
|
+
readonly promptbookVersion: string_promptbook_version;
|
|
55
69
|
/**
|
|
56
70
|
* Unique identifier for the task
|
|
57
71
|
*/
|
|
58
72
|
readonly taskId: task_id;
|
|
73
|
+
/**
|
|
74
|
+
* Human-readable title of the task - used for displaying in the UI
|
|
75
|
+
*/
|
|
76
|
+
readonly title: string;
|
|
59
77
|
/**
|
|
60
78
|
* Status of the task
|
|
61
79
|
*/
|
|
@@ -2,6 +2,7 @@ import Anthropic from '@anthropic-ai/sdk';
|
|
|
2
2
|
import type { AvailableModel } from '../../execution/AvailableModel';
|
|
3
3
|
import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
|
|
4
4
|
import type { ChatPromptResult } from '../../execution/PromptResult';
|
|
5
|
+
import type { CompletionPromptResult } from '../../execution/PromptResult';
|
|
5
6
|
import type { Prompt } from '../../types/Prompt';
|
|
6
7
|
import type { string_markdown } from '../../types/typeAliases';
|
|
7
8
|
import type { string_markdown_text } from '../../types/typeAliases';
|
|
@@ -19,6 +20,7 @@ export declare class AnthropicClaudeExecutionTools implements LlmExecutionTools
|
|
|
19
20
|
* Anthropic Claude API client.
|
|
20
21
|
*/
|
|
21
22
|
private client;
|
|
23
|
+
private limiter;
|
|
22
24
|
/**
|
|
23
25
|
* Creates Anthropic Claude Execution Tools.
|
|
24
26
|
*
|
|
@@ -40,6 +42,10 @@ export declare class AnthropicClaudeExecutionTools implements LlmExecutionTools
|
|
|
40
42
|
* Calls Anthropic Claude API to use a chat model.
|
|
41
43
|
*/
|
|
42
44
|
callChatModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements'>): Promise<ChatPromptResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Calls Anthropic Claude API to use a completion model.
|
|
47
|
+
*/
|
|
48
|
+
callCompletionModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements'>): Promise<CompletionPromptResult>;
|
|
43
49
|
/**
|
|
44
50
|
* Get the model that should be used as default
|
|
45
51
|
*/
|
|
@@ -9,6 +9,10 @@ import type { string_user_id } from '../../types/typeAliases';
|
|
|
9
9
|
* @public exported from `@promptbook/azure-openai`
|
|
10
10
|
*/
|
|
11
11
|
export type AzureOpenAiExecutionToolsOptions = CommonToolsOptions & {
|
|
12
|
+
/**
|
|
13
|
+
* The API key of the Azure OpenAI resource
|
|
14
|
+
*/
|
|
15
|
+
readonly apiKey: string_token;
|
|
12
16
|
/**
|
|
13
17
|
* The resource name of the Azure OpenAI resource
|
|
14
18
|
*
|
|
@@ -23,10 +27,6 @@ export type AzureOpenAiExecutionToolsOptions = CommonToolsOptions & {
|
|
|
23
27
|
* Note: Typically you have one resource and multiple deployments.
|
|
24
28
|
*/
|
|
25
29
|
readonly deploymentName: string_name;
|
|
26
|
-
/**
|
|
27
|
-
* The API key of the Azure OpenAI resource
|
|
28
|
-
*/
|
|
29
|
-
readonly apiKey: string_token;
|
|
30
30
|
/**
|
|
31
31
|
* A unique identifier representing your end-user, which can help Azure OpenAI to monitor
|
|
32
32
|
* and detect abuse.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { PromptbookStorage } from '../_common/PromptbookStorage';
|
|
2
|
+
import type { IndexedDbStorageOptions } from './utils/IndexedDbStorageOptions';
|
|
2
3
|
/**
|
|
3
4
|
* Gets wrapper around IndexedDB which can be used as PromptbookStorage
|
|
4
5
|
*
|
|
5
6
|
* @public exported from `@promptbook/browser`
|
|
6
7
|
*/
|
|
7
|
-
export declare function getIndexedDbStorage<TItem>(): PromptbookStorage<TItem>;
|
|
8
|
+
export declare function getIndexedDbStorage<TItem>(options: IndexedDbStorageOptions): PromptbookStorage<TItem>;
|
|
8
9
|
/**
|
|
9
10
|
* Note: [π΅] Code in this file should never be published outside of `@promptbook/browser`
|
|
10
11
|
*/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { string_name } from '../../../types/typeAliases';
|
|
2
|
+
/**
|
|
3
|
+
* Options for IndexedDB storage
|
|
4
|
+
*/
|
|
5
|
+
export type IndexedDbStorageOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* Name of the database
|
|
8
|
+
*/
|
|
9
|
+
databaseName: string_name;
|
|
10
|
+
/**
|
|
11
|
+
* Name of the object store (table) in the database
|
|
12
|
+
*/
|
|
13
|
+
storeName: string_name;
|
|
14
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { PromptbookStorage } from '../../_common/PromptbookStorage';
|
|
2
|
+
import type { IndexedDbStorageOptions } from './IndexedDbStorageOptions';
|
|
2
3
|
/**
|
|
3
4
|
* Creates a PromptbookStorage backed by IndexedDB.
|
|
4
5
|
* Uses a single object store named 'promptbook'.
|
|
5
6
|
* @private for `getIndexedDbStorage`
|
|
6
7
|
*/
|
|
7
|
-
export declare function makePromptbookStorageFromIndexedDb<TValue>(
|
|
8
|
+
export declare function makePromptbookStorageFromIndexedDb<TValue>(options: IndexedDbStorageOptions): PromptbookStorage<TValue>;
|
|
@@ -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.92.0-
|
|
18
|
+
* It follows semantic versioning (e.g., `0.92.0-32`).
|
|
19
19
|
*
|
|
20
20
|
* @generated
|
|
21
21
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/pdf",
|
|
3
|
-
"version": "0.92.0-
|
|
3
|
+
"version": "0.92.0-33",
|
|
4
4
|
"description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"module": "./esm/index.es.js",
|
|
52
52
|
"typings": "./esm/typings/src/_packages/pdf.index.d.ts",
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@promptbook/core": "0.92.0-
|
|
54
|
+
"@promptbook/core": "0.92.0-33"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"crypto": "1.0.1",
|
package/umd/index.umd.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* @generated
|
|
26
26
|
* @see https://github.com/webgptorg/promptbook
|
|
27
27
|
*/
|
|
28
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-
|
|
28
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-33';
|
|
29
29
|
/**
|
|
30
30
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
31
31
|
* Note: [π] Ignore a discrepancy between file name and entity name
|
|
@@ -2513,6 +2513,7 @@
|
|
|
2513
2513
|
*/
|
|
2514
2514
|
function createTask(options) {
|
|
2515
2515
|
const { taskType, taskProcessCallback } = options;
|
|
2516
|
+
let { title } = options;
|
|
2516
2517
|
// TODO: [π] DRY
|
|
2517
2518
|
const taskId = `${taskType.toLowerCase().substring(0, 4)}-${$randomToken(8 /* <- TODO: To global config + Use Base58 to avoid simmilar char conflicts */)}`;
|
|
2518
2519
|
let status = 'RUNNING';
|
|
@@ -2524,6 +2525,10 @@
|
|
|
2524
2525
|
const partialResultSubject = new rxjs.Subject();
|
|
2525
2526
|
// <- Note: Not using `BehaviorSubject` because on error we can't access the last value
|
|
2526
2527
|
const finalResultPromise = /* not await */ taskProcessCallback((newOngoingResult) => {
|
|
2528
|
+
if (newOngoingResult.title) {
|
|
2529
|
+
title = newOngoingResult.title;
|
|
2530
|
+
}
|
|
2531
|
+
updatedAt = new Date();
|
|
2527
2532
|
Object.assign(currentValue, newOngoingResult);
|
|
2528
2533
|
// <- TODO: assign deep
|
|
2529
2534
|
partialResultSubject.next(newOngoingResult);
|
|
@@ -2569,17 +2574,24 @@
|
|
|
2569
2574
|
return {
|
|
2570
2575
|
taskType,
|
|
2571
2576
|
taskId,
|
|
2577
|
+
get promptbookVersion() {
|
|
2578
|
+
return PROMPTBOOK_ENGINE_VERSION;
|
|
2579
|
+
},
|
|
2580
|
+
get title() {
|
|
2581
|
+
return title;
|
|
2582
|
+
// <- Note: [1] Theese must be getters to allow changing the value in the future
|
|
2583
|
+
},
|
|
2572
2584
|
get status() {
|
|
2573
2585
|
return status;
|
|
2574
|
-
// <- Note: [1]
|
|
2586
|
+
// <- Note: [1] --||--
|
|
2575
2587
|
},
|
|
2576
2588
|
get createdAt() {
|
|
2577
2589
|
return createdAt;
|
|
2578
|
-
// <- Note: [1]
|
|
2590
|
+
// <- Note: [1] --||--
|
|
2579
2591
|
},
|
|
2580
2592
|
get updatedAt() {
|
|
2581
2593
|
return updatedAt;
|
|
2582
|
-
// <- Note: [1]
|
|
2594
|
+
// <- Note: [1] --||--
|
|
2583
2595
|
},
|
|
2584
2596
|
asPromise,
|
|
2585
2597
|
asObservable() {
|
|
@@ -2587,15 +2599,15 @@
|
|
|
2587
2599
|
},
|
|
2588
2600
|
get errors() {
|
|
2589
2601
|
return errors;
|
|
2590
|
-
// <- Note: [1]
|
|
2602
|
+
// <- Note: [1] --||--
|
|
2591
2603
|
},
|
|
2592
2604
|
get warnings() {
|
|
2593
2605
|
return warnings;
|
|
2594
|
-
// <- Note: [1]
|
|
2606
|
+
// <- Note: [1] --||--
|
|
2595
2607
|
},
|
|
2596
2608
|
get currentValue() {
|
|
2597
2609
|
return currentValue;
|
|
2598
|
-
// <- Note: [1]
|
|
2610
|
+
// <- Note: [1] --||--
|
|
2599
2611
|
},
|
|
2600
2612
|
};
|
|
2601
2613
|
}
|
|
@@ -2842,23 +2854,17 @@
|
|
|
2842
2854
|
* Check the configuration of all execution tools
|
|
2843
2855
|
*/
|
|
2844
2856
|
async checkConfiguration() {
|
|
2845
|
-
//
|
|
2846
|
-
|
|
2847
|
-
await llmExecutionTools.checkConfiguration();
|
|
2848
|
-
}
|
|
2857
|
+
// Note: Run checks in parallel
|
|
2858
|
+
await Promise.all(this.llmExecutionTools.map((tools) => tools.checkConfiguration()));
|
|
2849
2859
|
}
|
|
2850
2860
|
/**
|
|
2851
2861
|
* List all available models that can be used
|
|
2852
2862
|
* This lists is a combination of all available models from all execution tools
|
|
2853
2863
|
*/
|
|
2854
2864
|
async listModels() {
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
const models = await llmExecutionTools.listModels();
|
|
2859
|
-
availableModels.push(...models);
|
|
2860
|
-
}
|
|
2861
|
-
return availableModels;
|
|
2865
|
+
// Obtain all models in parallel and flatten
|
|
2866
|
+
const modelArrays = await Promise.all(this.llmExecutionTools.map((tools) => tools.listModels()));
|
|
2867
|
+
return modelArrays.flat();
|
|
2862
2868
|
}
|
|
2863
2869
|
/**
|
|
2864
2870
|
* Calls the best available chat model
|
|
@@ -5369,7 +5375,7 @@
|
|
|
5369
5375
|
});
|
|
5370
5376
|
const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
|
|
5371
5377
|
const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
|
|
5372
|
-
console.log('!!! Embedding', {
|
|
5378
|
+
console.log('!!! `getKnowledgeForTask` Embedding', {
|
|
5373
5379
|
task,
|
|
5374
5380
|
taskEmbeddingPrompt,
|
|
5375
5381
|
taskEmbeddingResult,
|
|
@@ -5405,6 +5411,7 @@
|
|
|
5405
5411
|
*/
|
|
5406
5412
|
async function getReservedParametersForTask(options) {
|
|
5407
5413
|
const { tools, preparedPipeline, task, parameters, pipelineIdentification } = options;
|
|
5414
|
+
console.log('!!! getReservedParametersForTask', options);
|
|
5408
5415
|
const context = await getContextForTask(); // <- [π]
|
|
5409
5416
|
const knowledge = await getKnowledgeForTask({ tools, preparedPipeline, task, parameters });
|
|
5410
5417
|
const examples = await getExamplesForTask();
|
|
@@ -5441,6 +5448,7 @@
|
|
|
5441
5448
|
*/
|
|
5442
5449
|
async function executeTask(options) {
|
|
5443
5450
|
const { currentTask, preparedPipeline, parametersToPass, tools, onProgress, $executionReport, pipelineIdentification, maxExecutionAttempts, maxParallelCount, csvSettings, isVerbose, rootDirname, cacheDirname, intermediateFilesStrategy, isAutoInstalled, isNotPreparedWarningSupressed, } = options;
|
|
5451
|
+
console.log('!!! executeTask', options);
|
|
5444
5452
|
const priority = preparedPipeline.tasks.length - preparedPipeline.tasks.indexOf(currentTask);
|
|
5445
5453
|
// Note: Check consistency of used and dependent parameters which was also done in `validatePipeline`, but itβs good to doublecheck
|
|
5446
5454
|
const usedParameterNames = extractParameterNamesFromTask(currentTask);
|
|
@@ -5464,14 +5472,15 @@
|
|
|
5464
5472
|
|
|
5465
5473
|
`));
|
|
5466
5474
|
}
|
|
5475
|
+
const reservedParameters = await getReservedParametersForTask({
|
|
5476
|
+
tools,
|
|
5477
|
+
preparedPipeline,
|
|
5478
|
+
task: currentTask,
|
|
5479
|
+
pipelineIdentification,
|
|
5480
|
+
parameters: parametersToPass,
|
|
5481
|
+
});
|
|
5467
5482
|
const definedParameters = Object.freeze({
|
|
5468
|
-
...
|
|
5469
|
-
tools,
|
|
5470
|
-
preparedPipeline,
|
|
5471
|
-
task: currentTask,
|
|
5472
|
-
pipelineIdentification,
|
|
5473
|
-
parameters: parametersToPass,
|
|
5474
|
-
})),
|
|
5483
|
+
...reservedParameters,
|
|
5475
5484
|
...parametersToPass,
|
|
5476
5485
|
});
|
|
5477
5486
|
const definedParameterNames = new Set(Object.keys(definedParameters));
|
|
@@ -5918,6 +5927,7 @@
|
|
|
5918
5927
|
};
|
|
5919
5928
|
const pipelineExecutor = (inputParameters) => createTask({
|
|
5920
5929
|
taskType: 'EXECUTION',
|
|
5930
|
+
title: pipeline.title,
|
|
5921
5931
|
taskProcessCallback(updateOngoingResult) {
|
|
5922
5932
|
return pipelineExecutorWithCallback(inputParameters, async (newOngoingResult) => {
|
|
5923
5933
|
updateOngoingResult(newOngoingResult);
|