@promptbook/markdown-utils 0.88.0 → 0.89.0-11
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 +7 -1
- package/esm/index.es.js +162 -89
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/core.index.d.ts +18 -6
- package/esm/typings/src/_packages/remote-client.index.d.ts +6 -8
- package/esm/typings/src/_packages/remote-server.index.d.ts +6 -6
- package/esm/typings/src/_packages/types.index.d.ts +18 -10
- package/esm/typings/src/cli/cli-commands/login.d.ts +15 -0
- package/esm/typings/src/cli/common/$addGlobalOptionsToCommand.d.ts +7 -0
- package/esm/typings/src/cli/common/$provideLlmToolsForCli.d.ts +15 -0
- package/esm/typings/src/config.d.ts +15 -8
- package/esm/typings/src/errors/0-index.d.ts +6 -0
- package/esm/typings/src/errors/AuthenticationError.d.ts +9 -0
- package/esm/typings/src/errors/PromptbookFetchError.d.ts +9 -0
- package/esm/typings/src/execution/PipelineExecutorResult.d.ts +2 -2
- package/esm/typings/src/execution/PromptResult.d.ts +2 -2
- package/esm/typings/src/execution/{PromptResultUsage.d.ts → Usage.d.ts} +5 -5
- package/esm/typings/src/execution/utils/addUsage.d.ts +2 -2
- package/esm/typings/src/execution/utils/computeUsageCounts.d.ts +3 -3
- package/esm/typings/src/execution/utils/usage-constants.d.ts +77 -60
- package/esm/typings/src/execution/utils/usageToHuman.d.ts +5 -5
- package/esm/typings/src/execution/utils/usageToWorktime.d.ts +5 -5
- package/esm/typings/src/llm-providers/_common/register/$provideEnvFilename.d.ts +12 -0
- package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsConfigurationFromEnv.d.ts +2 -8
- package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForTestingAndScriptsAndPlayground.d.ts +2 -0
- package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForWizzardOrCli.d.ts +36 -1
- package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsFromEnv.d.ts +1 -0
- package/esm/typings/src/llm-providers/_common/utils/count-total-usage/LlmExecutionToolsWithTotalUsage.d.ts +9 -2
- package/esm/typings/src/llm-providers/_common/utils/count-total-usage/{countTotalUsage.d.ts → countUsage.d.ts} +1 -1
- package/esm/typings/src/llm-providers/_common/utils/count-total-usage/limitTotalUsage.d.ts +2 -2
- package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionToolsOptions.d.ts +1 -1
- package/esm/typings/src/llm-providers/anthropic-claude/computeAnthropicClaudeUsage.d.ts +2 -2
- package/esm/typings/src/llm-providers/anthropic-claude/register-configuration.d.ts +1 -1
- package/esm/typings/src/llm-providers/openai/OpenAiExecutionTools.d.ts +0 -9
- package/esm/typings/src/llm-providers/openai/computeOpenAiUsage.d.ts +2 -2
- package/esm/typings/src/pipeline/PipelineJson/PreparationJson.d.ts +2 -2
- package/esm/typings/src/playground/playground.d.ts +5 -0
- package/esm/typings/src/remote-server/RemoteServer.d.ts +23 -0
- package/esm/typings/src/remote-server/socket-types/_subtypes/{PromptbookServer_Identification.d.ts → Identification.d.ts} +5 -4
- package/esm/typings/src/remote-server/socket-types/listModels/PromptbookServer_ListModels_Request.d.ts +2 -2
- package/esm/typings/src/remote-server/socket-types/prepare/PromptbookServer_PreparePipeline_Request.d.ts +2 -2
- package/esm/typings/src/remote-server/socket-types/prompt/PromptbookServer_Prompt_Request.d.ts +2 -2
- package/esm/typings/src/remote-server/startRemoteServer.d.ts +2 -2
- package/esm/typings/src/remote-server/types/RemoteClientOptions.d.ts +4 -12
- package/esm/typings/src/remote-server/types/RemoteServerOptions.d.ts +88 -6
- package/esm/typings/src/scrapers/_common/utils/{scraperFetch.d.ts → promptbookFetch.d.ts} +2 -2
- package/esm/typings/src/storage/env-storage/$EnvStorage.d.ts +37 -0
- package/esm/typings/src/types/typeAliases.d.ts +8 -2
- package/esm/typings/src/utils/organization/TODO_narrow.d.ts +6 -0
- package/package.json +1 -1
- package/umd/index.umd.js +162 -89
- package/umd/index.umd.js.map +1 -1
|
@@ -1,57 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the uncertain value
|
|
3
|
+
*
|
|
4
|
+
* @public exported from `@promptbook/core`
|
|
5
|
+
*/
|
|
6
|
+
export declare const ZERO_VALUE: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
7
|
+
readonly value: 0;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Represents the uncertain value
|
|
11
|
+
*
|
|
12
|
+
* @public exported from `@promptbook/core`
|
|
13
|
+
*/
|
|
14
|
+
export declare const UNCERTAIN_ZERO_VALUE: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
15
|
+
readonly value: 0;
|
|
16
|
+
readonly isUncertain: true;
|
|
17
|
+
}>;
|
|
1
18
|
/**
|
|
2
19
|
* Represents the usage with no resources consumed
|
|
3
20
|
*
|
|
4
21
|
* @public exported from `@promptbook/core`
|
|
5
22
|
*/
|
|
6
23
|
export declare const ZERO_USAGE: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
7
|
-
readonly price: {
|
|
24
|
+
readonly price: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
8
25
|
readonly value: 0;
|
|
9
|
-
}
|
|
26
|
+
}>;
|
|
10
27
|
readonly input: {
|
|
11
|
-
readonly tokensCount: {
|
|
28
|
+
readonly tokensCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
12
29
|
readonly value: 0;
|
|
13
|
-
}
|
|
14
|
-
readonly charactersCount: {
|
|
30
|
+
}>;
|
|
31
|
+
readonly charactersCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
15
32
|
readonly value: 0;
|
|
16
|
-
}
|
|
17
|
-
readonly wordsCount: {
|
|
33
|
+
}>;
|
|
34
|
+
readonly wordsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
18
35
|
readonly value: 0;
|
|
19
|
-
}
|
|
20
|
-
readonly sentencesCount: {
|
|
36
|
+
}>;
|
|
37
|
+
readonly sentencesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
21
38
|
readonly value: 0;
|
|
22
|
-
}
|
|
23
|
-
readonly linesCount: {
|
|
39
|
+
}>;
|
|
40
|
+
readonly linesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
24
41
|
readonly value: 0;
|
|
25
|
-
}
|
|
26
|
-
readonly paragraphsCount: {
|
|
42
|
+
}>;
|
|
43
|
+
readonly paragraphsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
27
44
|
readonly value: 0;
|
|
28
|
-
}
|
|
29
|
-
readonly pagesCount: {
|
|
45
|
+
}>;
|
|
46
|
+
readonly pagesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
30
47
|
readonly value: 0;
|
|
31
|
-
}
|
|
48
|
+
}>;
|
|
32
49
|
};
|
|
33
50
|
readonly output: {
|
|
34
|
-
readonly tokensCount: {
|
|
51
|
+
readonly tokensCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
35
52
|
readonly value: 0;
|
|
36
|
-
}
|
|
37
|
-
readonly charactersCount: {
|
|
53
|
+
}>;
|
|
54
|
+
readonly charactersCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
38
55
|
readonly value: 0;
|
|
39
|
-
}
|
|
40
|
-
readonly wordsCount: {
|
|
56
|
+
}>;
|
|
57
|
+
readonly wordsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
41
58
|
readonly value: 0;
|
|
42
|
-
}
|
|
43
|
-
readonly sentencesCount: {
|
|
59
|
+
}>;
|
|
60
|
+
readonly sentencesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
44
61
|
readonly value: 0;
|
|
45
|
-
}
|
|
46
|
-
readonly linesCount: {
|
|
62
|
+
}>;
|
|
63
|
+
readonly linesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
47
64
|
readonly value: 0;
|
|
48
|
-
}
|
|
49
|
-
readonly paragraphsCount: {
|
|
65
|
+
}>;
|
|
66
|
+
readonly paragraphsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
50
67
|
readonly value: 0;
|
|
51
|
-
}
|
|
52
|
-
readonly pagesCount: {
|
|
68
|
+
}>;
|
|
69
|
+
readonly pagesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
53
70
|
readonly value: 0;
|
|
54
|
-
}
|
|
71
|
+
}>;
|
|
55
72
|
};
|
|
56
73
|
}>;
|
|
57
74
|
/**
|
|
@@ -60,69 +77,69 @@ export declare const ZERO_USAGE: import("type-fest/source/readonly-deep").Readon
|
|
|
60
77
|
* @public exported from `@promptbook/core`
|
|
61
78
|
*/
|
|
62
79
|
export declare const UNCERTAIN_USAGE: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
63
|
-
readonly price: {
|
|
80
|
+
readonly price: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
64
81
|
readonly value: 0;
|
|
65
82
|
readonly isUncertain: true;
|
|
66
|
-
}
|
|
83
|
+
}>;
|
|
67
84
|
readonly input: {
|
|
68
|
-
readonly tokensCount: {
|
|
85
|
+
readonly tokensCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
69
86
|
readonly value: 0;
|
|
70
87
|
readonly isUncertain: true;
|
|
71
|
-
}
|
|
72
|
-
readonly charactersCount: {
|
|
88
|
+
}>;
|
|
89
|
+
readonly charactersCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
73
90
|
readonly value: 0;
|
|
74
91
|
readonly isUncertain: true;
|
|
75
|
-
}
|
|
76
|
-
readonly wordsCount: {
|
|
92
|
+
}>;
|
|
93
|
+
readonly wordsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
77
94
|
readonly value: 0;
|
|
78
95
|
readonly isUncertain: true;
|
|
79
|
-
}
|
|
80
|
-
readonly sentencesCount: {
|
|
96
|
+
}>;
|
|
97
|
+
readonly sentencesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
81
98
|
readonly value: 0;
|
|
82
99
|
readonly isUncertain: true;
|
|
83
|
-
}
|
|
84
|
-
readonly linesCount: {
|
|
100
|
+
}>;
|
|
101
|
+
readonly linesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
85
102
|
readonly value: 0;
|
|
86
103
|
readonly isUncertain: true;
|
|
87
|
-
}
|
|
88
|
-
readonly paragraphsCount: {
|
|
104
|
+
}>;
|
|
105
|
+
readonly paragraphsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
89
106
|
readonly value: 0;
|
|
90
107
|
readonly isUncertain: true;
|
|
91
|
-
}
|
|
92
|
-
readonly pagesCount: {
|
|
108
|
+
}>;
|
|
109
|
+
readonly pagesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
93
110
|
readonly value: 0;
|
|
94
111
|
readonly isUncertain: true;
|
|
95
|
-
}
|
|
112
|
+
}>;
|
|
96
113
|
};
|
|
97
114
|
readonly output: {
|
|
98
|
-
readonly tokensCount: {
|
|
115
|
+
readonly tokensCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
99
116
|
readonly value: 0;
|
|
100
117
|
readonly isUncertain: true;
|
|
101
|
-
}
|
|
102
|
-
readonly charactersCount: {
|
|
118
|
+
}>;
|
|
119
|
+
readonly charactersCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
103
120
|
readonly value: 0;
|
|
104
121
|
readonly isUncertain: true;
|
|
105
|
-
}
|
|
106
|
-
readonly wordsCount: {
|
|
122
|
+
}>;
|
|
123
|
+
readonly wordsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
107
124
|
readonly value: 0;
|
|
108
125
|
readonly isUncertain: true;
|
|
109
|
-
}
|
|
110
|
-
readonly sentencesCount: {
|
|
126
|
+
}>;
|
|
127
|
+
readonly sentencesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
111
128
|
readonly value: 0;
|
|
112
129
|
readonly isUncertain: true;
|
|
113
|
-
}
|
|
114
|
-
readonly linesCount: {
|
|
130
|
+
}>;
|
|
131
|
+
readonly linesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
115
132
|
readonly value: 0;
|
|
116
133
|
readonly isUncertain: true;
|
|
117
|
-
}
|
|
118
|
-
readonly paragraphsCount: {
|
|
134
|
+
}>;
|
|
135
|
+
readonly paragraphsCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
119
136
|
readonly value: 0;
|
|
120
137
|
readonly isUncertain: true;
|
|
121
|
-
}
|
|
122
|
-
readonly pagesCount: {
|
|
138
|
+
}>;
|
|
139
|
+
readonly pagesCount: import("type-fest/source/readonly-deep").ReadonlyObjectDeep<{
|
|
123
140
|
readonly value: 0;
|
|
124
141
|
readonly isUncertain: true;
|
|
125
|
-
}
|
|
142
|
+
}>;
|
|
126
143
|
};
|
|
127
144
|
}>;
|
|
128
145
|
/**
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import type { string_markdown } from '../../types/typeAliases';
|
|
2
|
-
import type { PromptResultUsage } from '../PromptResultUsage';
|
|
3
2
|
import type { UncertainNumber } from '../UncertainNumber';
|
|
3
|
+
import type { Usage } from '../Usage';
|
|
4
4
|
/**
|
|
5
5
|
* Minimal usage information required to calculate worktime
|
|
6
6
|
*/
|
|
7
|
-
type
|
|
7
|
+
type PartialUsage = Partial<Usage> & {
|
|
8
8
|
price: UncertainNumber;
|
|
9
|
-
input: Pick<
|
|
10
|
-
output: Pick<
|
|
9
|
+
input: Pick<Usage['input'], 'wordsCount'>;
|
|
10
|
+
output: Pick<Usage['output'], 'wordsCount' | 'charactersCount'>;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
13
|
* Function `usageToHuman` will take usage and convert it to human readable report
|
|
14
14
|
*
|
|
15
15
|
* @public exported from `@promptbook/core`
|
|
16
16
|
*/
|
|
17
|
-
export declare function usageToHuman(usage:
|
|
17
|
+
export declare function usageToHuman(usage: PartialUsage): string_markdown;
|
|
18
18
|
export {};
|
|
19
19
|
/**
|
|
20
20
|
* TODO: [🍓][🧞♂️] Use "$1" not "1 USD"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { PromptResultUsage } from '../PromptResultUsage';
|
|
2
1
|
import type { UncertainNumber } from '../UncertainNumber';
|
|
2
|
+
import type { Usage } from '../Usage';
|
|
3
3
|
/**
|
|
4
4
|
* Minimal usage information required to calculate worktime
|
|
5
5
|
*/
|
|
6
|
-
type
|
|
7
|
-
input: Pick<
|
|
8
|
-
output: Pick<
|
|
6
|
+
type PartialUsage = Pick<Usage, 'input' | 'output'> & {
|
|
7
|
+
input: Pick<Usage['input'], 'wordsCount'>;
|
|
8
|
+
output: Pick<Usage['output'], 'wordsCount'>;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* Function usageToWorktime will take usage and estimate saved worktime in hours of reading / writing
|
|
@@ -16,5 +16,5 @@ type PartialPromptResultUsage = Pick<PromptResultUsage, 'input' | 'output'> & {
|
|
|
16
16
|
*
|
|
17
17
|
* @public exported from `@promptbook/core`
|
|
18
18
|
*/
|
|
19
|
-
export declare function usageToWorktime(usage:
|
|
19
|
+
export declare function usageToWorktime(usage: PartialUsage): UncertainNumber;
|
|
20
20
|
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { string_filename } from '../../../types/typeAliases';
|
|
2
|
+
/**
|
|
3
|
+
* Provides the path to the `.env` file
|
|
4
|
+
*
|
|
5
|
+
* Note: `$` is used to indicate that this function is not a pure function - it uses filesystem to access `.env` file
|
|
6
|
+
*
|
|
7
|
+
* @private within the repository - for CLI utils
|
|
8
|
+
*/
|
|
9
|
+
export declare function $provideEnvFilename(): Promise<string_filename | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
|
|
12
|
+
*/
|
package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsConfigurationFromEnv.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { LlmToolsConfiguration } from './LlmToolsConfiguration';
|
|
|
3
3
|
* @@@
|
|
4
4
|
*
|
|
5
5
|
* @@@ .env
|
|
6
|
+
* Note: `$` is used to indicate that this function is not a pure function - it uses filesystem to access `.env` file
|
|
6
7
|
*
|
|
7
8
|
* It looks for environment variables:
|
|
8
9
|
* - `process.env.OPENAI_API_KEY`
|
|
@@ -14,12 +15,5 @@ import type { LlmToolsConfiguration } from './LlmToolsConfiguration';
|
|
|
14
15
|
*/
|
|
15
16
|
export declare function $provideLlmToolsConfigurationFromEnv(): Promise<LlmToolsConfiguration>;
|
|
16
17
|
/**
|
|
17
|
-
* TODO: [🧠][🪁] Maybe do allow to do auto-install if package not registered and not found
|
|
18
|
-
* TODO: Add Azure OpenAI
|
|
19
|
-
* TODO: [🧠][🍛]
|
|
20
|
-
* TODO: [🧠] Is there some meaningfull way how to test this util
|
|
21
18
|
* Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
|
|
22
|
-
|
|
23
|
-
* TODO: This should be maybe not under `_common` but under `utils`
|
|
24
|
-
* TODO: [🧠][⚛] Maybe pass env as argument
|
|
25
|
-
* TODO: [®] DRY Register logic */
|
|
19
|
+
*/
|
|
@@ -12,6 +12,8 @@ type GetLlmToolsForTestingAndScriptsAndPlaygroundOptions = CreateLlmToolsFromCon
|
|
|
12
12
|
/**
|
|
13
13
|
* Returns LLM tools for testing purposes
|
|
14
14
|
*
|
|
15
|
+
* Note: `$` is used to indicate that this function is not a pure function - it uses filesystem to access `.env` file
|
|
16
|
+
*
|
|
15
17
|
* @private within the repository - JUST FOR TESTS, SCRIPTS AND PLAYGROUND
|
|
16
18
|
*/
|
|
17
19
|
export declare function $provideLlmToolsForTestingAndScriptsAndPlayground(options?: GetLlmToolsForTestingAndScriptsAndPlaygroundOptions): Promise<LlmExecutionToolsWithTotalUsage>;
|
|
@@ -1,11 +1,46 @@
|
|
|
1
|
+
import { Promisable } from 'type-fest';
|
|
2
|
+
import type { Identification } from '../../../remote-server/socket-types/_subtypes/Identification';
|
|
3
|
+
import type { string_app_id } from '../../../types/typeAliases';
|
|
4
|
+
import type { string_url } from '../../../types/typeAliases';
|
|
5
|
+
import type { really_any } from '../../../utils/organization/really_any';
|
|
1
6
|
import type { CacheLlmToolsOptions } from '../utils/cache/CacheLlmToolsOptions';
|
|
2
7
|
import type { LlmExecutionToolsWithTotalUsage } from '../utils/count-total-usage/LlmExecutionToolsWithTotalUsage';
|
|
8
|
+
type ProvideLlmToolsForWizzardOrCliOptions = Pick<CacheLlmToolsOptions, 'isCacheReloaded'> & ({
|
|
9
|
+
/**
|
|
10
|
+
* Use local keys and execute LLMs directly
|
|
11
|
+
*/
|
|
12
|
+
readonly strategy: 'BRING_YOUR_OWN_KEYS';
|
|
13
|
+
} | {
|
|
14
|
+
/**
|
|
15
|
+
* Do not use local keys but login to Promptbook server and execute LLMs there
|
|
16
|
+
*/
|
|
17
|
+
readonly strategy: 'REMOTE_SERVER';
|
|
18
|
+
/**
|
|
19
|
+
* URL of the remote server
|
|
20
|
+
*
|
|
21
|
+
* @default `DEFAULT_REMOTE_SERVER_URL`
|
|
22
|
+
*/
|
|
23
|
+
readonly remoteServerUrl?: string_url;
|
|
24
|
+
/**
|
|
25
|
+
* Identifier of the application which will be passed to the remote server identification
|
|
26
|
+
*
|
|
27
|
+
* Note: This can be some id or some semantic name like "email-agent"
|
|
28
|
+
*/
|
|
29
|
+
readonly appId: string_app_id;
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
33
|
+
loginPrompt(): Promisable<Identification<really_any>>;
|
|
34
|
+
});
|
|
3
35
|
/**
|
|
4
36
|
* Returns LLM tools for CLI
|
|
5
37
|
*
|
|
38
|
+
* Note: `$` is used to indicate that this function is not a pure function - it uses filesystem to access `.env` file and also writes this .env file
|
|
39
|
+
*
|
|
6
40
|
* @private within the repository - for CLI utils
|
|
7
41
|
*/
|
|
8
|
-
export declare function $provideLlmToolsForWizzardOrCli(options?:
|
|
42
|
+
export declare function $provideLlmToolsForWizzardOrCli(options?: ProvideLlmToolsForWizzardOrCliOptions): Promise<LlmExecutionToolsWithTotalUsage>;
|
|
43
|
+
export {};
|
|
9
44
|
/**
|
|
10
45
|
* Note: [🟢] Code in this file should never be never released in packages that could be imported into browser environment
|
|
11
46
|
* TODO: [👷♂️] @@@ Manual about construction of llmTools
|
|
@@ -6,6 +6,7 @@ import type { CreateLlmToolsFromConfigurationOptions } from './createLlmToolsFro
|
|
|
6
6
|
* Note: This function is not cached, every call creates new instance of `MultipleLlmExecutionTools`
|
|
7
7
|
*
|
|
8
8
|
* @@@ .env
|
|
9
|
+
* Note: `$` is used to indicate that this function is not a pure function - it uses filesystem to access `.env` file
|
|
9
10
|
*
|
|
10
11
|
* It looks for environment variables:
|
|
11
12
|
* - `process.env.OPENAI_API_KEY`
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
1
2
|
import type { LlmExecutionTools } from '../../../../execution/LlmExecutionTools';
|
|
2
|
-
import type {
|
|
3
|
+
import type { Usage } from '../../../../execution/Usage';
|
|
3
4
|
/**
|
|
4
5
|
* LLM tools with option to get total usage of the execution
|
|
5
6
|
*/
|
|
@@ -7,7 +8,13 @@ export type LlmExecutionToolsWithTotalUsage = LlmExecutionTools & {
|
|
|
7
8
|
/**
|
|
8
9
|
* Get total cost of the execution up to this point
|
|
9
10
|
*/
|
|
10
|
-
getTotalUsage():
|
|
11
|
+
getTotalUsage(): Usage;
|
|
12
|
+
/**
|
|
13
|
+
* Observable of total cost of the execution up to this point
|
|
14
|
+
*
|
|
15
|
+
* Note: This does report the cost of the last prompt, not the total cost of the execution up to this point
|
|
16
|
+
*/
|
|
17
|
+
spending(): Observable<Usage>;
|
|
11
18
|
};
|
|
12
19
|
/**
|
|
13
20
|
* TODO: [👷♂️] @@@ Manual about construction of llmTools
|
|
@@ -7,7 +7,7 @@ import type { LlmExecutionToolsWithTotalUsage } from './LlmExecutionToolsWithTot
|
|
|
7
7
|
* @returns LLM tools with same functionality with added total cost counting
|
|
8
8
|
* @public exported from `@promptbook/core`
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function countUsage(llmTools: LlmExecutionTools): LlmExecutionToolsWithTotalUsage;
|
|
11
11
|
/**
|
|
12
12
|
* TODO: [🧠][💸] Maybe make some common abstraction `interceptLlmTools` and use here (or use javascript Proxy?)
|
|
13
13
|
* TODO: [🧠] Is there some meaningfull way how to test this util
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LlmExecutionTools } from '../../../../execution/LlmExecutionTools';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Usage } from '../../../../execution/Usage';
|
|
3
3
|
import type { PromptbookStorage } from '../../../../storage/_common/PromptbookStorage';
|
|
4
4
|
import type { TODO_any } from '../../../../utils/organization/TODO_any';
|
|
5
5
|
import type { LlmExecutionToolsWithTotalUsage } from './LlmExecutionToolsWithTotalUsage';
|
|
@@ -12,7 +12,7 @@ type LimitTotalUsageOptions = {
|
|
|
12
12
|
*
|
|
13
13
|
* @default ZERO_USAGE
|
|
14
14
|
*/
|
|
15
|
-
maxTotalUsage:
|
|
15
|
+
maxTotalUsage: Usage;
|
|
16
16
|
/**
|
|
17
17
|
* @@@
|
|
18
18
|
*
|
package/esm/typings/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionToolsOptions.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export type AnthropicClaudeExecutionToolsDirectOptions = CommonToolsOptions & Cl
|
|
|
25
25
|
*/
|
|
26
26
|
export type AnthropicClaudeExecutionToolsProxiedOptions = CommonToolsOptions & ClientOptions & {
|
|
27
27
|
isProxied: true;
|
|
28
|
-
} & Pick<RemoteClientOptions<undefined>, '
|
|
28
|
+
} & Pick<RemoteClientOptions<undefined>, 'remoteServerUrl'>;
|
|
29
29
|
/**
|
|
30
30
|
* TODO: [🧠][🤺] Pass `userId`
|
|
31
31
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Anthropic from '@anthropic-ai/sdk';
|
|
2
2
|
import type { PartialDeep } from 'type-fest';
|
|
3
|
-
import type {
|
|
3
|
+
import type { Usage } from '../../execution/Usage';
|
|
4
4
|
import type { Prompt } from '../../types/Prompt';
|
|
5
5
|
/**
|
|
6
6
|
* Computes the usage of the Anthropic Claude API based on the response from Anthropic Claude
|
|
@@ -12,7 +12,7 @@ import type { Prompt } from '../../types/Prompt';
|
|
|
12
12
|
* @private internal utility of `AnthropicClaudeExecutionTools`
|
|
13
13
|
*/
|
|
14
14
|
export declare function computeAnthropicClaudeUsage(promptContent: Prompt['content'], // <- Note: Intentionally using [] to access type properties to bring jsdoc from Prompt/PromptResult to consumer
|
|
15
|
-
resultContent: string, rawResponse: PartialDeep<Pick<Anthropic.Messages.Message, 'model' | 'usage'>>):
|
|
15
|
+
resultContent: string, rawResponse: PartialDeep<Pick<Anthropic.Messages.Message, 'model' | 'usage'>>): Usage;
|
|
16
16
|
/**
|
|
17
17
|
* TODO: [🤝] DRY Maybe some common abstraction between `computeOpenAiUsage` and `computeAnthropicClaudeUsage`
|
|
18
18
|
*/
|
|
@@ -8,8 +8,6 @@ import type { Prompt } from '../../types/Prompt';
|
|
|
8
8
|
import type { string_markdown } from '../../types/typeAliases';
|
|
9
9
|
import type { string_markdown_text } from '../../types/typeAliases';
|
|
10
10
|
import type { string_title } from '../../types/typeAliases';
|
|
11
|
-
import type { string_token } from '../../types/typeAliases';
|
|
12
|
-
import { OpenAiAssistantExecutionTools } from './OpenAiAssistantExecutionTools';
|
|
13
11
|
import type { OpenAiExecutionToolsOptions } from './OpenAiExecutionToolsOptions';
|
|
14
12
|
/**
|
|
15
13
|
* Execution Tools for calling OpenAI API
|
|
@@ -31,13 +29,6 @@ export declare class OpenAiExecutionTools implements LlmExecutionTools {
|
|
|
31
29
|
get title(): string_title & string_markdown_text;
|
|
32
30
|
get description(): string_markdown;
|
|
33
31
|
getClient(): Promise<OpenAI>;
|
|
34
|
-
/**
|
|
35
|
-
* Create (sub)tools for calling OpenAI API Assistants
|
|
36
|
-
*
|
|
37
|
-
* @param assistantId Which assistant to use
|
|
38
|
-
* @returns Tools for calling OpenAI API Assistants with same token
|
|
39
|
-
*/
|
|
40
|
-
createAssistantSubtools(assistantId: string_token): OpenAiAssistantExecutionTools;
|
|
41
32
|
/**
|
|
42
33
|
* Check the `options` passed to `constructor`
|
|
43
34
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type OpenAI from 'openai';
|
|
2
2
|
import type { PartialDeep } from 'type-fest';
|
|
3
|
-
import type {
|
|
3
|
+
import type { Usage } from '../../execution/Usage';
|
|
4
4
|
import type { Prompt } from '../../types/Prompt';
|
|
5
5
|
/**
|
|
6
6
|
* Computes the usage of the OpenAI API based on the response from OpenAI
|
|
@@ -12,7 +12,7 @@ import type { Prompt } from '../../types/Prompt';
|
|
|
12
12
|
* @private internal utility of `OpenAiExecutionTools`
|
|
13
13
|
*/
|
|
14
14
|
export declare function computeOpenAiUsage(promptContent: Prompt['content'], // <- Note: Intentionally using [] to access type properties to bring jsdoc from Prompt/PromptResult to consumer
|
|
15
|
-
resultContent: string, rawResponse: PartialDeep<Pick<OpenAI.Chat.Completions.ChatCompletion | OpenAI.Completions.Completion | OpenAI.Embeddings.CreateEmbeddingResponse, 'model' | 'usage'>>):
|
|
15
|
+
resultContent: string, rawResponse: PartialDeep<Pick<OpenAI.Chat.Completions.ChatCompletion | OpenAI.Completions.Completion | OpenAI.Embeddings.CreateEmbeddingResponse, 'model' | 'usage'>>): Usage;
|
|
16
16
|
/**
|
|
17
17
|
* TODO: [🤝] DRY Maybe some common abstraction between `computeOpenAiUsage` and `computeAnthropicClaudeUsage`
|
|
18
18
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Usage } from '../../execution/Usage';
|
|
2
2
|
import type { number_id } from '../../types/typeAliases';
|
|
3
3
|
import type { string_promptbook_version } from '../../version';
|
|
4
4
|
export type PreparationJson = {
|
|
@@ -13,7 +13,7 @@ export type PreparationJson = {
|
|
|
13
13
|
/**
|
|
14
14
|
* Usage of the prompt execution
|
|
15
15
|
*/
|
|
16
|
-
readonly usage:
|
|
16
|
+
readonly usage: Usage;
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* TODO: [🍙] Make some standard order of json properties
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { IDestroyable } from 'destroyable';
|
|
3
|
+
import express from 'express';
|
|
4
|
+
import http from 'http';
|
|
5
|
+
import { DefaultEventsMap, Server } from 'socket.io';
|
|
6
|
+
import type { TODO_any } from '../utils/organization/TODO_any';
|
|
7
|
+
import type { TODO_narrow } from '../utils/organization/TODO_narrow';
|
|
8
|
+
export type RemoteServer = IDestroyable & {
|
|
9
|
+
/**
|
|
10
|
+
* HTTP server instance
|
|
11
|
+
*/
|
|
12
|
+
readonly httpServer: http.Server<TODO_any>;
|
|
13
|
+
/**
|
|
14
|
+
* Express application instance
|
|
15
|
+
*
|
|
16
|
+
* Note: This is useful for adding custom routes
|
|
17
|
+
*/
|
|
18
|
+
readonly expressApp: express.Express;
|
|
19
|
+
/**
|
|
20
|
+
* Socket.io server instance
|
|
21
|
+
*/
|
|
22
|
+
readonly socketIoServer: Server<TODO_narrow<DefaultEventsMap>, TODO_narrow<DefaultEventsMap>, TODO_narrow<DefaultEventsMap>, TODO_any>;
|
|
23
|
+
};
|
|
@@ -7,14 +7,14 @@ import type { ApplicationRemoteServerClientOptions } from '../../types/RemoteSer
|
|
|
7
7
|
* @public exported from `@promptbook/remote-server`
|
|
8
8
|
* @public exported from `@promptbook/remote-client`
|
|
9
9
|
*/
|
|
10
|
-
export type
|
|
10
|
+
export type Identification<TCustomOptions> = ApplicationModeIdentification<TCustomOptions> | AnonymousModeIdentification;
|
|
11
11
|
/**
|
|
12
12
|
* Application mode is situation when you run known and well-defined books with your own api keys
|
|
13
13
|
*
|
|
14
14
|
* @public exported from `@promptbook/remote-server`
|
|
15
15
|
* @public exported from `@promptbook/remote-client`
|
|
16
16
|
*/
|
|
17
|
-
export type
|
|
17
|
+
export type ApplicationModeIdentification<TCustomOptions> = ApplicationRemoteServerClientOptions<TCustomOptions> & {
|
|
18
18
|
/**
|
|
19
19
|
* Application mode
|
|
20
20
|
*/
|
|
@@ -29,7 +29,7 @@ export type PromptbookServer_ApplicationIdentification<TCustomOptions> = Applica
|
|
|
29
29
|
* @public exported from `@promptbook/remote-server`
|
|
30
30
|
* @public exported from `@promptbook/remote-client`
|
|
31
31
|
*/
|
|
32
|
-
export type
|
|
32
|
+
export type AnonymousModeIdentification = {
|
|
33
33
|
/**
|
|
34
34
|
* Anonymous mode
|
|
35
35
|
*/
|
|
@@ -37,7 +37,8 @@ export type PromptbookServer_AnonymousIdentification = {
|
|
|
37
37
|
/**
|
|
38
38
|
* Identifier of the end user
|
|
39
39
|
*
|
|
40
|
-
* Note:
|
|
40
|
+
* Note: This can be either some id or email or any other identifier
|
|
41
|
+
* Note: In anonymous mode, this is passed to the certain model providers to identify misuse
|
|
41
42
|
* Note: In anonymous mode, there is no need to identify yourself, nor does it change the actual configuration of LLM Tools (unlike in application mode)
|
|
42
43
|
*/
|
|
43
44
|
readonly userId?: string_user_id;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Identification } from '../_subtypes/Identification';
|
|
2
2
|
/**
|
|
3
3
|
* List models available in the server
|
|
4
4
|
*
|
|
@@ -10,7 +10,7 @@ export type PromptbookServer_ListModels_Request<TCustomOptions> = {
|
|
|
10
10
|
/**
|
|
11
11
|
* Identifier of the end user or application
|
|
12
12
|
*/
|
|
13
|
-
readonly identification:
|
|
13
|
+
readonly identification: Identification<TCustomOptions>;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* TODO: [🧠] Listing models inanonymous mode does not make sence - keeping only to preserve consistency
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PipelineJson } from '../../../pipeline/PipelineJson/PipelineJson';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Identification } from '../_subtypes/Identification';
|
|
3
3
|
/**
|
|
4
4
|
* This is a request from client to server to prepare a pipeline
|
|
5
5
|
*
|
|
@@ -9,7 +9,7 @@ export type PromptbookServer_PreparePipeline_Request<TCustomOptions> = {
|
|
|
9
9
|
/**
|
|
10
10
|
* Identifier of the end user or application
|
|
11
11
|
*/
|
|
12
|
-
readonly identification:
|
|
12
|
+
readonly identification: Identification<TCustomOptions>;
|
|
13
13
|
/**
|
|
14
14
|
* The Pipeline to prepare
|
|
15
15
|
*/
|
package/esm/typings/src/remote-server/socket-types/prompt/PromptbookServer_Prompt_Request.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Prompt } from '../../../types/Prompt';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Identification } from '../_subtypes/Identification';
|
|
3
3
|
/**
|
|
4
4
|
* This is a request from client to server to execute a prompt
|
|
5
5
|
*
|
|
@@ -9,7 +9,7 @@ export type PromptbookServer_Prompt_Request<TCustomOptions> = {
|
|
|
9
9
|
/**
|
|
10
10
|
* Identifier of the end user or application
|
|
11
11
|
*/
|
|
12
|
-
readonly identification:
|
|
12
|
+
readonly identification: Identification<TCustomOptions>;
|
|
13
13
|
/**
|
|
14
14
|
* The Prompt to execute
|
|
15
15
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RemoteServer } from './RemoteServer';
|
|
2
2
|
import type { RemoteServerOptions } from './types/RemoteServerOptions';
|
|
3
3
|
/**
|
|
4
4
|
* Remote server is a proxy server that uses its execution tools internally and exposes the executor interface externally.
|
|
@@ -9,7 +9,7 @@ import type { RemoteServerOptions } from './types/RemoteServerOptions';
|
|
|
9
9
|
* @see https://github.com/webgptorg/promptbook#remote-server
|
|
10
10
|
* @public exported from `@promptbook/remote-server`
|
|
11
11
|
*/
|
|
12
|
-
export declare function startRemoteServer<TCustomOptions = undefined>(options: RemoteServerOptions<TCustomOptions>):
|
|
12
|
+
export declare function startRemoteServer<TCustomOptions = undefined>(options: RemoteServerOptions<TCustomOptions>): RemoteServer;
|
|
13
13
|
/**
|
|
14
14
|
* TODO: !! Add CORS and security - probbably via `helmet`
|
|
15
15
|
* TODO: [👩🏾🤝🧑🏾] Allow to pass custom fetch function here - PromptbookFetch
|