@promptbook/legacy-documents 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/legacy-documents",
|
|
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/legacy-documents.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
|
"colors": "1.4.0",
|
package/umd/index.umd.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* @generated
|
|
27
27
|
* @see https://github.com/webgptorg/promptbook
|
|
28
28
|
*/
|
|
29
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-
|
|
29
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-33';
|
|
30
30
|
/**
|
|
31
31
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
32
32
|
* Note: [π] Ignore a discrepancy between file name and entity name
|
|
@@ -2673,6 +2673,7 @@
|
|
|
2673
2673
|
*/
|
|
2674
2674
|
function createTask(options) {
|
|
2675
2675
|
const { taskType, taskProcessCallback } = options;
|
|
2676
|
+
let { title } = options;
|
|
2676
2677
|
// TODO: [π] DRY
|
|
2677
2678
|
const taskId = `${taskType.toLowerCase().substring(0, 4)}-${$randomToken(8 /* <- TODO: To global config + Use Base58 to avoid simmilar char conflicts */)}`;
|
|
2678
2679
|
let status = 'RUNNING';
|
|
@@ -2684,6 +2685,10 @@
|
|
|
2684
2685
|
const partialResultSubject = new rxjs.Subject();
|
|
2685
2686
|
// <- Note: Not using `BehaviorSubject` because on error we can't access the last value
|
|
2686
2687
|
const finalResultPromise = /* not await */ taskProcessCallback((newOngoingResult) => {
|
|
2688
|
+
if (newOngoingResult.title) {
|
|
2689
|
+
title = newOngoingResult.title;
|
|
2690
|
+
}
|
|
2691
|
+
updatedAt = new Date();
|
|
2687
2692
|
Object.assign(currentValue, newOngoingResult);
|
|
2688
2693
|
// <- TODO: assign deep
|
|
2689
2694
|
partialResultSubject.next(newOngoingResult);
|
|
@@ -2729,17 +2734,24 @@
|
|
|
2729
2734
|
return {
|
|
2730
2735
|
taskType,
|
|
2731
2736
|
taskId,
|
|
2737
|
+
get promptbookVersion() {
|
|
2738
|
+
return PROMPTBOOK_ENGINE_VERSION;
|
|
2739
|
+
},
|
|
2740
|
+
get title() {
|
|
2741
|
+
return title;
|
|
2742
|
+
// <- Note: [1] Theese must be getters to allow changing the value in the future
|
|
2743
|
+
},
|
|
2732
2744
|
get status() {
|
|
2733
2745
|
return status;
|
|
2734
|
-
// <- Note: [1]
|
|
2746
|
+
// <- Note: [1] --||--
|
|
2735
2747
|
},
|
|
2736
2748
|
get createdAt() {
|
|
2737
2749
|
return createdAt;
|
|
2738
|
-
// <- Note: [1]
|
|
2750
|
+
// <- Note: [1] --||--
|
|
2739
2751
|
},
|
|
2740
2752
|
get updatedAt() {
|
|
2741
2753
|
return updatedAt;
|
|
2742
|
-
// <- Note: [1]
|
|
2754
|
+
// <- Note: [1] --||--
|
|
2743
2755
|
},
|
|
2744
2756
|
asPromise,
|
|
2745
2757
|
asObservable() {
|
|
@@ -2747,15 +2759,15 @@
|
|
|
2747
2759
|
},
|
|
2748
2760
|
get errors() {
|
|
2749
2761
|
return errors;
|
|
2750
|
-
// <- Note: [1]
|
|
2762
|
+
// <- Note: [1] --||--
|
|
2751
2763
|
},
|
|
2752
2764
|
get warnings() {
|
|
2753
2765
|
return warnings;
|
|
2754
|
-
// <- Note: [1]
|
|
2766
|
+
// <- Note: [1] --||--
|
|
2755
2767
|
},
|
|
2756
2768
|
get currentValue() {
|
|
2757
2769
|
return currentValue;
|
|
2758
|
-
// <- Note: [1]
|
|
2770
|
+
// <- Note: [1] --||--
|
|
2759
2771
|
},
|
|
2760
2772
|
};
|
|
2761
2773
|
}
|
|
@@ -3002,23 +3014,17 @@
|
|
|
3002
3014
|
* Check the configuration of all execution tools
|
|
3003
3015
|
*/
|
|
3004
3016
|
async checkConfiguration() {
|
|
3005
|
-
//
|
|
3006
|
-
|
|
3007
|
-
await llmExecutionTools.checkConfiguration();
|
|
3008
|
-
}
|
|
3017
|
+
// Note: Run checks in parallel
|
|
3018
|
+
await Promise.all(this.llmExecutionTools.map((tools) => tools.checkConfiguration()));
|
|
3009
3019
|
}
|
|
3010
3020
|
/**
|
|
3011
3021
|
* List all available models that can be used
|
|
3012
3022
|
* This lists is a combination of all available models from all execution tools
|
|
3013
3023
|
*/
|
|
3014
3024
|
async listModels() {
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
const models = await llmExecutionTools.listModels();
|
|
3019
|
-
availableModels.push(...models);
|
|
3020
|
-
}
|
|
3021
|
-
return availableModels;
|
|
3025
|
+
// Obtain all models in parallel and flatten
|
|
3026
|
+
const modelArrays = await Promise.all(this.llmExecutionTools.map((tools) => tools.listModels()));
|
|
3027
|
+
return modelArrays.flat();
|
|
3022
3028
|
}
|
|
3023
3029
|
/**
|
|
3024
3030
|
* Calls the best available chat model
|
|
@@ -5519,7 +5525,7 @@
|
|
|
5519
5525
|
});
|
|
5520
5526
|
const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
|
|
5521
5527
|
const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
|
|
5522
|
-
console.log('!!! Embedding', {
|
|
5528
|
+
console.log('!!! `getKnowledgeForTask` Embedding', {
|
|
5523
5529
|
task,
|
|
5524
5530
|
taskEmbeddingPrompt,
|
|
5525
5531
|
taskEmbeddingResult,
|
|
@@ -5555,6 +5561,7 @@
|
|
|
5555
5561
|
*/
|
|
5556
5562
|
async function getReservedParametersForTask(options) {
|
|
5557
5563
|
const { tools, preparedPipeline, task, parameters, pipelineIdentification } = options;
|
|
5564
|
+
console.log('!!! getReservedParametersForTask', options);
|
|
5558
5565
|
const context = await getContextForTask(); // <- [π]
|
|
5559
5566
|
const knowledge = await getKnowledgeForTask({ tools, preparedPipeline, task, parameters });
|
|
5560
5567
|
const examples = await getExamplesForTask();
|
|
@@ -5591,6 +5598,7 @@
|
|
|
5591
5598
|
*/
|
|
5592
5599
|
async function executeTask(options) {
|
|
5593
5600
|
const { currentTask, preparedPipeline, parametersToPass, tools, onProgress, $executionReport, pipelineIdentification, maxExecutionAttempts, maxParallelCount, csvSettings, isVerbose, rootDirname, cacheDirname, intermediateFilesStrategy, isAutoInstalled, isNotPreparedWarningSupressed, } = options;
|
|
5601
|
+
console.log('!!! executeTask', options);
|
|
5594
5602
|
const priority = preparedPipeline.tasks.length - preparedPipeline.tasks.indexOf(currentTask);
|
|
5595
5603
|
// Note: Check consistency of used and dependent parameters which was also done in `validatePipeline`, but itβs good to doublecheck
|
|
5596
5604
|
const usedParameterNames = extractParameterNamesFromTask(currentTask);
|
|
@@ -5614,14 +5622,15 @@
|
|
|
5614
5622
|
|
|
5615
5623
|
`));
|
|
5616
5624
|
}
|
|
5625
|
+
const reservedParameters = await getReservedParametersForTask({
|
|
5626
|
+
tools,
|
|
5627
|
+
preparedPipeline,
|
|
5628
|
+
task: currentTask,
|
|
5629
|
+
pipelineIdentification,
|
|
5630
|
+
parameters: parametersToPass,
|
|
5631
|
+
});
|
|
5617
5632
|
const definedParameters = Object.freeze({
|
|
5618
|
-
...
|
|
5619
|
-
tools,
|
|
5620
|
-
preparedPipeline,
|
|
5621
|
-
task: currentTask,
|
|
5622
|
-
pipelineIdentification,
|
|
5623
|
-
parameters: parametersToPass,
|
|
5624
|
-
})),
|
|
5633
|
+
...reservedParameters,
|
|
5625
5634
|
...parametersToPass,
|
|
5626
5635
|
});
|
|
5627
5636
|
const definedParameterNames = new Set(Object.keys(definedParameters));
|
|
@@ -6068,6 +6077,7 @@
|
|
|
6068
6077
|
};
|
|
6069
6078
|
const pipelineExecutor = (inputParameters) => createTask({
|
|
6070
6079
|
taskType: 'EXECUTION',
|
|
6080
|
+
title: pipeline.title,
|
|
6071
6081
|
taskProcessCallback(updateOngoingResult) {
|
|
6072
6082
|
return pipelineExecutorWithCallback(inputParameters, async (newOngoingResult) => {
|
|
6073
6083
|
updateOngoingResult(newOngoingResult);
|