@promptbook/remote-server 0.66.0-9 → 0.67.0-0

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.
Files changed (59) hide show
  1. package/esm/index.es.js +402 -40
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/src/_packages/core.index.d.ts +6 -4
  4. package/esm/typings/src/_packages/types.index.d.ts +7 -1
  5. package/esm/typings/src/_packages/utils.index.d.ts +14 -8
  6. package/esm/typings/src/commands/EXPECT/ExpectFormatCommand.d.ts +2 -0
  7. package/esm/typings/src/config.d.ts +6 -0
  8. package/esm/typings/src/errors/{ReferenceError.d.ts → PipelineUrlError.d.ts} +2 -2
  9. package/esm/typings/src/errors/index.d.ts +27 -0
  10. package/esm/typings/src/errors/utils/ErrorJson.d.ts +20 -0
  11. package/esm/typings/src/errors/utils/deserializeError.d.ts +7 -0
  12. package/esm/typings/src/errors/utils/deserializeError.test.d.ts +1 -0
  13. package/esm/typings/src/errors/utils/serializeError.d.ts +7 -0
  14. package/esm/typings/src/errors/utils/serializeError.test.d.ts +1 -0
  15. package/esm/typings/src/execution/ExecutionTools.d.ts +4 -1
  16. package/esm/typings/src/execution/PipelineExecutor.d.ts +1 -47
  17. package/esm/typings/src/execution/PipelineExecutorResult.d.ts +49 -0
  18. package/esm/typings/src/execution/PromptResult.d.ts +5 -4
  19. package/esm/typings/src/execution/PromptResultUsage.d.ts +4 -0
  20. package/esm/typings/src/execution/UncertainNumber.d.ts +1 -0
  21. package/esm/typings/src/execution/assertsExecutionSuccessful.d.ts +2 -2
  22. package/esm/typings/src/llm-providers/_common/utils/cache/CacheItem.d.ts +0 -1
  23. package/esm/typings/src/llm-providers/mocked/$fakeTextToExpectations.d.ts +2 -2
  24. package/esm/typings/src/llm-providers/mocked/MockedFackedLlmExecutionTools.d.ts +3 -3
  25. package/esm/typings/src/llm-providers/remote/RemoteLlmExecutionTools.d.ts +1 -0
  26. package/esm/typings/src/llm-providers/remote/interfaces/PromptbookServer_Error.d.ts +2 -6
  27. package/esm/typings/src/llm-providers/remote/startRemoteServer.d.ts +1 -0
  28. package/esm/typings/src/scripting/javascript/JavascriptExecutionToolsOptions.d.ts +2 -2
  29. package/esm/typings/src/storage/_common/PromptbookStorage.d.ts +1 -1
  30. package/esm/typings/src/types/ModelRequirements.d.ts +5 -5
  31. package/esm/typings/src/types/PipelineJson/Expectations.d.ts +3 -1
  32. package/esm/typings/src/types/PipelineJson/KnowledgePieceJson.d.ts +2 -0
  33. package/esm/typings/src/types/PipelineJson/KnowledgeSourceJson.d.ts +4 -0
  34. package/esm/typings/src/types/PipelineJson/LlmTemplateJson.d.ts +2 -0
  35. package/esm/typings/src/types/PipelineJson/PersonaJson.d.ts +4 -0
  36. package/esm/typings/src/types/PipelineJson/PipelineJson.d.ts +2 -0
  37. package/esm/typings/src/types/PipelineJson/PromptDialogJson.d.ts +1 -0
  38. package/esm/typings/src/types/PipelineJson/PromptTemplateJson.d.ts +2 -0
  39. package/esm/typings/src/types/PipelineJson/PromptTemplateJsonCommon.d.ts +2 -2
  40. package/esm/typings/src/types/PipelineJson/PromptTemplateParameterJson.d.ts +2 -0
  41. package/esm/typings/src/types/PipelineJson/ScriptJson.d.ts +1 -0
  42. package/esm/typings/src/types/PipelineJson/SimpleTemplateJson.d.ts +1 -0
  43. package/esm/typings/src/types/Prompt.d.ts +7 -7
  44. package/esm/typings/src/types/ScriptLanguage.d.ts +2 -0
  45. package/esm/typings/src/types/execution-report/ExecutionPromptReportJson.d.ts +24 -0
  46. package/esm/typings/src/types/execution-report/ExecutionReportJson.d.ts +3 -20
  47. package/esm/typings/src/types/typeAliases.d.ts +7 -0
  48. package/esm/typings/src/utils/environment/$getGlobalScope.d.ts +1 -4
  49. package/esm/typings/src/utils/serialization/$asDeeplyFrozenSerializableJson.d.ts +17 -0
  50. package/esm/typings/src/utils/{deepFreeze.d.ts → serialization/$deepFreeze.d.ts} +0 -10
  51. package/esm/typings/src/utils/serialization/checkSerializableAsJson.d.ts +27 -0
  52. package/esm/typings/src/utils/{clonePipeline.d.ts → serialization/clonePipeline.d.ts} +1 -1
  53. package/esm/typings/src/utils/serialization/isSerializableAsJson.d.ts +24 -0
  54. package/esm/typings/src/utils/serialization/isSerializableAsJson.test.d.ts +1 -0
  55. package/package.json +2 -2
  56. package/umd/index.umd.js +402 -40
  57. package/umd/index.umd.js.map +1 -1
  58. package/esm/typings/src/errors/VersionMismatchError.d.ts +0 -10
  59. /package/esm/typings/src/utils/{deepClone.d.ts → serialization/deepClone.d.ts} +0 -0
@@ -3,6 +3,8 @@ import type { ExpectationUnit } from '../types/PipelineJson/Expectations';
3
3
  import type { UncertainNumber } from './UncertainNumber';
4
4
  /**
5
5
  * Usage statistics for one or many prompt results
6
+ *
7
+ * Note: [🚉] This is fully serializable as JSON
6
8
  */
7
9
  export type PromptResultUsage = {
8
10
  /**
@@ -22,6 +24,8 @@ export type PromptResultUsage = {
22
24
  };
23
25
  /**
24
26
  * Record of all possible measurable units
27
+ *
28
+ * Note: [🚉] This is fully serializable as JSON
25
29
  */
26
30
  export type PromptResultUsageCounts = Record<`${KebabCase<'TOKENS' | ExpectationUnit>}Count`, UncertainNumber>;
27
31
  /**
@@ -3,6 +3,7 @@ import type { number_usd } from '../types/typeAliases';
3
3
  /**
4
4
  * Number which can be uncertain
5
5
  *
6
+ * Note: [🚉] This is fully serializable as JSON
6
7
  * Note: If the value is completelly unknown, the value 0 and isUncertain is true
7
8
  * Note: Not using NaN or null because it looses the value which is better to be uncertain then not to be at all
8
9
  */
@@ -1,8 +1,8 @@
1
1
  import type { PipelineExecutor } from './PipelineExecutor';
2
2
  /**
3
- * Asserts that the execution of a promptnook is successful
3
+ * Asserts that the execution of a Promptbook is successful
4
4
  *
5
- * @param executionResult - The partial result of the promptnook execution
5
+ * @param executionResult - The partial result of the Promptbook execution
6
6
  * @throws {PipelineExecutionError} If the execution is not successful or if multiple errors occurred
7
7
  * @public exported from `@promptbook/core`
8
8
  */
@@ -25,5 +25,4 @@ export type CacheItem = {
25
25
  };
26
26
  /**
27
27
  * TODO: [🧠] Should be this exported alongsite `cacheLlmTools` through `@promptbook/utils` OR through `@promptbook/types`
28
- * TODO: [🛫] `prompt` is NOT fully serializable as JSON, it contains functions which are not serializable, fix it
29
28
  */
@@ -1,5 +1,5 @@
1
- import type { PostprocessingFunction } from '../../scripting/javascript/JavascriptExecutionToolsOptions';
2
1
  import type { Expectations } from '../../types/PipelineJson/Expectations';
2
+ import type { string_postprocessing_function_name } from '../../types/typeAliases';
3
3
  /**
4
4
  * Gets the expectations and creates a fake text that meets the expectations
5
5
  *
@@ -9,7 +9,7 @@ import type { Expectations } from '../../types/PipelineJson/Expectations';
9
9
  *
10
10
  * @private internal utility for MockedFackedLlmExecutionTools
11
11
  */
12
- export declare function $fakeTextToExpectations(expectations: Expectations, postprocessing?: Array<PostprocessingFunction>): Promise<string>;
12
+ export declare function $fakeTextToExpectations(expectations: Expectations, postprocessingFunctionNames?: Array<string_postprocessing_function_name>): Promise<string>;
13
13
  /**
14
14
  * TODO: [💝] Unite object for expecting amount and format - use here also a format
15
15
  */
@@ -29,15 +29,15 @@ export declare class MockedFackedLlmExecutionTools implements LlmExecutionTools
29
29
  /**
30
30
  * Fakes chat model
31
31
  */
32
- callChatModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessing'>): Promise<ChatPromptResult & CompletionPromptResult>;
32
+ callChatModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessingFunctionNames'>): Promise<ChatPromptResult & CompletionPromptResult>;
33
33
  /**
34
34
  * Fakes completion model
35
35
  */
36
- callCompletionModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessing'>): Promise<CompletionPromptResult>;
36
+ callCompletionModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessingFunctionNames'>): Promise<CompletionPromptResult>;
37
37
  /**
38
38
  * Fakes embedding model
39
39
  */
40
- callEmbeddingModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessing'>): Promise<EmbeddingPromptResult>;
40
+ callEmbeddingModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements' | 'expectations' | 'postprocessingFunctionNames'>): Promise<EmbeddingPromptResult>;
41
41
  }
42
42
  /**
43
43
  * TODO: [🧠][🈁] Maybe use `isDeterministic` from options
@@ -54,6 +54,7 @@ export declare class RemoteLlmExecutionTools implements LlmExecutionTools {
54
54
  private callCommonModel;
55
55
  }
56
56
  /**
57
+ * TODO: Maybe use `$asDeeplyFrozenSerializableJson`
57
58
  * TODO: [🧠][🛍] Maybe not `isAnonymous: boolean` BUT `mode: 'ANONYMOUS'|'COLLECTION'`
58
59
  * TODO: [🍓] Allow to list compatible models with each variant
59
60
  * TODO: [🗯] RemoteLlmExecutionTools should extend Destroyable and implement IDestroyable
@@ -1,11 +1,7 @@
1
+ import type { ErrorJson } from '../../../errors/utils/ErrorJson';
1
2
  /**
2
3
  * Socket.io error for remote text generation
3
4
  *
4
5
  * This is sent from server to client when error occurs and stops the process
5
6
  */
6
- export type PromptbookServer_Error = {
7
- /**
8
- * The error message which caused the error
9
- */
10
- readonly errorMessage: string;
11
- };
7
+ export type PromptbookServer_Error = ErrorJson;
@@ -11,6 +11,7 @@ import type { RemoteServerOptions } from './interfaces/RemoteServerOptions';
11
11
  */
12
12
  export declare function startRemoteServer(options: RemoteServerOptions): IDestroyable;
13
13
  /**
14
+ * TODO: Maybe use `$asDeeplyFrozenSerializableJson`
14
15
  * TODO: [🧠][🛍] Maybe not `isAnonymous: boolean` BUT `mode: 'ANONYMOUS'|'COLLECTION'`
15
16
  * TODO: [⚖] Expose the collection to be able to connect to same collection via createCollectionFromUrl
16
17
  * TODO: Handle progress - support streaming
@@ -1,6 +1,6 @@
1
1
  import type { Promisable } from 'type-fest';
2
2
  import type { CommonExecutionToolsOptions } from '../../execution/CommonExecutionToolsOptions';
3
- import type { string_javascript_name } from '../../types/typeAliases';
3
+ import type { string_postprocessing_function_name } from '../../types/typeAliases';
4
4
  /**
5
5
  * Options for `JavascriptExecutionTools`
6
6
  */
@@ -15,7 +15,7 @@ export type JavascriptExecutionToolsOptions = CommonExecutionToolsOptions & {
15
15
  * Note: There are also some built-in functions available:
16
16
  * @see ./JavascriptEvalExecutionTools.ts
17
17
  */
18
- functions?: Record<string_javascript_name, PostprocessingFunction>;
18
+ functions?: Record<string_postprocessing_function_name, PostprocessingFunction>;
19
19
  };
20
20
  /**
21
21
  * Function that can be used to postprocess the output of the LLM
@@ -20,5 +20,5 @@ export type PromptbookStorage<TItem> = {
20
20
  removeItem(key: string): Promisable<void>;
21
21
  };
22
22
  /**
23
- * TODO: [🧠][🛫] Constrain `TItem` to JSON-serializable objects only
23
+ * TODO: [💺] Constrain `TItem` to [🚉] JSON-serializable objects only in type level
24
24
  */
@@ -7,14 +7,14 @@ import type { string_system_message } from './typeAliases';
7
7
  * Abstract way to specify the LLM.
8
8
  * It does not specify the LLM with concrete version itself, only the requirements for the LLM.
9
9
  *
10
- * Note: This is fully serializable as JSON
10
+ * Note: [🚉] This is fully serializable as JSON
11
11
  * @see https://github.com/webgptorg/promptbook#model-requirements
12
12
  */
13
13
  export type ModelRequirements = CompletionModelRequirements | ChatModelRequirements | EmbeddingModelRequirements;
14
14
  /**
15
15
  * Model requirements for the completion variant
16
16
  *
17
- * Note: This is fully serializable as JSON
17
+ * Note: [🚉] This is fully serializable as JSON
18
18
  */
19
19
  export type CompletionModelRequirements = CommonModelRequirements & {
20
20
  /**
@@ -25,7 +25,7 @@ export type CompletionModelRequirements = CommonModelRequirements & {
25
25
  /**
26
26
  * Model requirements for the chat variant
27
27
  *
28
- * Note: This is fully serializable as JSON
28
+ * Note: [🚉] This is fully serializable as JSON
29
29
  */
30
30
  export type ChatModelRequirements = CommonModelRequirements & {
31
31
  /**
@@ -40,7 +40,7 @@ export type ChatModelRequirements = CommonModelRequirements & {
40
40
  /**
41
41
  * Model requirements for the embedding variant
42
42
  *
43
- * Note: This is fully serializable as JSON
43
+ * Note: [🚉] This is fully serializable as JSON
44
44
  */
45
45
  export type EmbeddingModelRequirements = CommonModelRequirements & {
46
46
  /**
@@ -51,7 +51,7 @@ export type EmbeddingModelRequirements = CommonModelRequirements & {
51
51
  /**
52
52
  * Common properties for all model requirements variants
53
53
  *
54
- * Note: This is fully serializable as JSON
54
+ * Note: [🚉] This is fully serializable as JSON
55
55
  */
56
56
  export type CommonModelRequirements = {
57
57
  /**
@@ -7,7 +7,7 @@ import type { number_positive } from '../typeAliases';
7
7
  * For example 5 words, 3 sentences, 2 paragraphs, ...
8
8
  *
9
9
  * Note: Expectations are performed after all postprocessing steps
10
- *
10
+ * Note: [🚉] This is fully serializable as JSON
11
11
  * @see https://github.com/webgptorg/promptbook/discussions/30
12
12
  */
13
13
  export type Expectations = Partial<Record<Lowercase<ExpectationUnit>, {
@@ -17,6 +17,7 @@ export type Expectations = Partial<Record<Lowercase<ExpectationUnit>, {
17
17
  /**
18
18
  * Unit of text measurement
19
19
  *
20
+ * Note: [🚉] This is fully serializable as JSON
20
21
  * @see https://github.com/webgptorg/promptbook/discussions/30
21
22
  */
22
23
  export type ExpectationUnit = TupleToUnion<typeof EXPECTATION_UNITS>;
@@ -30,6 +31,7 @@ export declare const EXPECTATION_UNITS: readonly ["CHARACTERS", "WORDS", "SENTEN
30
31
  /**
31
32
  * Amount of text measurement
32
33
  *
34
+ * Note: [🚉] This is fully serializable as JSON
33
35
  * @see https://github.com/webgptorg/promptbook/discussions/30
34
36
  */
35
37
  export type ExpectationAmount = number_integer & (number_positive | 0);
@@ -11,6 +11,8 @@ import type { string_name } from '../typeAliases';
11
11
  *
12
12
  * Note: Knowledge piece is by definition prepared
13
13
  *
14
+ * Note: [🚉] This is fully serializable as JSON
15
+ *
14
16
  * @see https://github.com/webgptorg/promptbook/discussions/41
15
17
  */
16
18
  export type KnowledgePiecePreparedJson = {
@@ -5,6 +5,8 @@ import type { string_name } from '../typeAliases';
5
5
  * Defines one source of knowledge in the pipeline
6
6
  * For example, a source of information, a fact, a quote, a definition, website, etc.
7
7
  *
8
+ * Note: [🚉] This is fully serializable as JSON
9
+ *
8
10
  * @see https://github.com/webgptorg/promptbook/discussions/41
9
11
  */
10
12
  export type KnowledgeSourceJson = {
@@ -20,6 +22,8 @@ export type KnowledgeSourceJson = {
20
22
  /**
21
23
  * Defines one source of knowledge in the pipeline after it has been prepared
22
24
  *
25
+ * Note: [🚉] This is fully serializable as JSON
26
+ *
23
27
  * @see https://github.com/webgptorg/promptbook/discussions/41
24
28
  */
25
29
  export type KnowledgeSourcePreparedJson = KnowledgeSourceJson & {
@@ -3,6 +3,8 @@ import type { string_name } from '../typeAliases';
3
3
  import type { PromptTemplateJsonCommon } from './PromptTemplateJsonCommon';
4
4
  /**
5
5
  * Template for prompt to LLM
6
+ *
7
+ * Note: [🚉] This is fully serializable as JSON
6
8
  */
7
9
  export type LlmTemplateJson = PromptTemplateJsonCommon & {
8
10
  readonly blockType: 'PROMPT_TEMPLATE';
@@ -5,6 +5,8 @@ import type { string_persona_description } from '../typeAliases';
5
5
  /**
6
6
  * Defines a persona in the pipeline
7
7
  *
8
+ * Note: [🚉] This is fully serializable as JSON
9
+ *
8
10
  * @see https://github.com/webgptorg/promptbook/discussions/22
9
11
  */
10
12
  export type PersonaJson = {
@@ -22,6 +24,8 @@ export type PersonaJson = {
22
24
  /**
23
25
  * Defines a persona in the pipeline after it has been prepared
24
26
  *
27
+ * Note: [🚉] This is fully serializable as JSON
28
+ *
25
29
  * @see https://github.com/webgptorg/promptbook/discussions/22
26
30
  */
27
31
  export type PersonaPreparedJson = PersonaJson & {
@@ -14,6 +14,8 @@ import type { PromptTemplateParameterJson } from './PromptTemplateParameterJson'
14
14
  * Promptbook is the **core concept of this package**.
15
15
  * It represents a series of prompt templates chained together to form a pipeline / one big prompt template with input and result parameters.
16
16
  *
17
+ * Note: [🚉] This is fully serializable as JSON
18
+ *
17
19
  * @see @@@ https://github.com/webgptorg/promptbook#promptbook
18
20
  */
19
21
  export type PipelineJson = {
@@ -2,6 +2,7 @@ import type { PromptTemplateJsonCommon } from './PromptTemplateJsonCommon';
2
2
  /**
3
3
  * Template for prompt to user
4
4
  *
5
+ * Note: [🚉] This is fully serializable as JSON
5
6
  * @see https://github.com/webgptorg/promptbook/discussions/76
6
7
  */
7
8
  export type PromptDialogJson = PromptTemplateJsonCommon & {
@@ -5,6 +5,8 @@ import type { ScriptJson } from './ScriptJson';
5
5
  import type { SimpleTemplateJson } from './SimpleTemplateJson';
6
6
  /**
7
7
  * Describes one prompt template in the promptbook
8
+ *
9
+ * Note: [🚉] This is fully serializable as JSON
8
10
  */
9
11
  export type PromptTemplateJson = LlmTemplateJson | SimpleTemplateJson | ScriptJson | PromptDialogJson | ___ | ___ | ___ | ___;
10
12
  /**
@@ -1,11 +1,11 @@
1
1
  import type { BlockType } from '../../commands/BLOCK/BlockTypes';
2
2
  import type { ExpectFormatCommand } from '../../commands/EXPECT/ExpectFormatCommand';
3
3
  import type { string_javascript } from '../typeAliases';
4
- import type { string_javascript_name } from '../typeAliases';
5
4
  import type { string_markdown } from '../typeAliases';
6
5
  import type { string_markdown_text } from '../typeAliases';
7
6
  import type { string_name } from '../typeAliases';
8
7
  import type { string_parameter_name } from '../typeAliases';
8
+ import type { string_postprocessing_function_name } from '../typeAliases';
9
9
  import type { string_prompt } from '../typeAliases';
10
10
  import type { string_template } from '../typeAliases';
11
11
  import type { Expectations } from './Expectations';
@@ -66,7 +66,7 @@ export interface PromptTemplateJsonCommon {
66
66
  *
67
67
  * @see https://github.com/webgptorg/promptbook/discussions/31
68
68
  */
69
- readonly postprocessingFunctionNames?: Array<string_javascript_name>;
69
+ readonly postprocessingFunctionNames?: Array<string_postprocessing_function_name>;
70
70
  /**
71
71
  * Expect this amount of each unit in the answer
72
72
  *
@@ -3,6 +3,8 @@ import type { string_parameter_name } from '../typeAliases';
3
3
  import type { string_parameter_value } from '../typeAliases';
4
4
  /**
5
5
  * Describes one parameter of the promptbook
6
+ *
7
+ * Note: [🚉] This is fully serializable as JSON
6
8
  */
7
9
  export type PromptTemplateParameterJson = {
8
10
  /**
@@ -3,6 +3,7 @@ import type { PromptTemplateJsonCommon } from './PromptTemplateJsonCommon';
3
3
  /**
4
4
  * Template for script execution
5
5
  *
6
+ * Note: [🚉] This is fully serializable as JSON
6
7
  * @see https://github.com/webgptorg/promptbook/discussions/77
7
8
  */
8
9
  export type ScriptJson = PromptTemplateJsonCommon & {
@@ -2,6 +2,7 @@ import type { PromptTemplateJsonCommon } from './PromptTemplateJsonCommon';
2
2
  /**
3
3
  * Template for simple concatenation of strings
4
4
  *
5
+ * Note: [🚉] This is fully serializable as JSON
5
6
  * @see https://github.com/webgptorg/promptbook/discussions/17
6
7
  */
7
8
  export type SimpleTemplateJson = PromptTemplateJsonCommon & {
@@ -1,5 +1,4 @@
1
1
  import type { ExpectFormatCommand } from '../commands/EXPECT/ExpectFormatCommand';
2
- import type { PostprocessingFunction } from '../scripting/javascript/JavascriptExecutionToolsOptions';
3
2
  import type { ChatModelRequirements } from './ModelRequirements';
4
3
  import type { CompletionModelRequirements } from './ModelRequirements';
5
4
  import type { EmbeddingModelRequirements } from './ModelRequirements';
@@ -7,20 +6,21 @@ import type { ModelRequirements } from './ModelRequirements';
7
6
  import type { Expectations } from './PipelineJson/Expectations';
8
7
  import type { Parameters } from './typeAliases';
9
8
  import type { string_pipeline_url_with_hashtemplate } from './typeAliases';
9
+ import type { string_postprocessing_function_name } from './typeAliases';
10
10
  import type { string_prompt } from './typeAliases';
11
11
  import type { string_template } from './typeAliases';
12
12
  import type { string_title } from './typeAliases';
13
13
  /**
14
14
  * Prompt in a text along with model requirements, but without any execution or templating logic.
15
15
  *
16
- * Note: [🛫] This is NOT fully serializable as JSON, it contains functions which are not serializable
16
+ * Note: [🚉] This is fully serializable as JSON
17
17
  * @see https://github.com/webgptorg/promptbook#prompt
18
18
  */
19
19
  export type Prompt = CompletionPrompt | ChatPrompt | EmbeddingPrompt;
20
20
  /**
21
21
  * Completion prompt
22
22
  *
23
- * Note: [🛫] This is NOT fully serializable as JSON, it contains functions which are not serializable
23
+ * Note: [🚉] This is fully serializable as JSON
24
24
  */
25
25
  export type CompletionPrompt = CommonPrompt & {
26
26
  /**
@@ -31,7 +31,7 @@ export type CompletionPrompt = CommonPrompt & {
31
31
  /**
32
32
  * Chat prompt
33
33
  *
34
- * Note: [🛫] This is NOT fully serializable as JSON, it contains functions which are not serializable
34
+ * Note: [🚉] This is fully serializable as JSON
35
35
  */
36
36
  export type ChatPrompt = CommonPrompt & {
37
37
  /**
@@ -42,7 +42,7 @@ export type ChatPrompt = CommonPrompt & {
42
42
  /**
43
43
  * Embedding prompt
44
44
  *
45
- * Note: [🛫] This is NOT fully serializable as JSON, it contains functions which are not serializable
45
+ * Note: [🚉] This is fully serializable as JSON
46
46
  */
47
47
  export type EmbeddingPrompt = CommonPrompt & {
48
48
  /**
@@ -53,7 +53,7 @@ export type EmbeddingPrompt = CommonPrompt & {
53
53
  /**
54
54
  * Common properties for all prompt results
55
55
  *
56
- * Note: This is fully serializable as JSON
56
+ * Note: [🚉] This is fully serializable as JSON
57
57
  */
58
58
  export type CommonPrompt = {
59
59
  /**
@@ -75,7 +75,7 @@ export type CommonPrompt = {
75
75
  /**
76
76
  * List of postprocessing steps that are executed after the prompt
77
77
  */
78
- readonly postprocessing?: Array<PostprocessingFunction>;
78
+ readonly postprocessingFunctionNames?: Array<string_postprocessing_function_name>;
79
79
  /**
80
80
  * Expectations for the answer
81
81
  *
@@ -1,6 +1,8 @@
1
1
  import type { TupleToUnion } from 'type-fest';
2
2
  /**
3
3
  * Script language
4
+ *
5
+ * Note: [🚉] This is fully serializable as JSON
4
6
  */
5
7
  export type ScriptLanguage = TupleToUnion<typeof SUPPORTED_SCRIPT_LANGUAGES>;
6
8
  /**
@@ -0,0 +1,24 @@
1
+ import type { ErrorJson } from '../../errors/utils/ErrorJson';
2
+ import type { PromptResult } from '../../execution/PromptResult';
3
+ import type { Prompt } from '../Prompt';
4
+ /**
5
+ * Report of single prompt execution
6
+ *
7
+ * Note: [🚉] This is fully serializable as JSON
8
+ */
9
+ export type ExecutionPromptReportJson = {
10
+ /**
11
+ * The prompt wich was executed
12
+ */
13
+ readonly prompt: Omit<Prompt, 'pipelineUrl'>;
14
+ /**
15
+ * Result of the prompt execution (if not failed during LLM execution)
16
+ */
17
+ readonly result?: PromptResult;
18
+ /**
19
+ * The error which occured during LLM execution or during postprocessing or expectation checking
20
+ *
21
+ * Note: It makes sense to have both error and result defined, for example when the result not pass expectations
22
+ */
23
+ readonly error?: ErrorJson;
24
+ };
@@ -1,8 +1,7 @@
1
- import type { PromptResult } from '../../execution/PromptResult';
2
- import type { Prompt } from '../Prompt';
3
1
  import type { string_markdown_text } from '../typeAliases';
4
2
  import type { string_pipeline_url } from '../typeAliases';
5
3
  import type { string_semantic_version } from '../typeAliases';
4
+ import type { ExecutionPromptReportJson } from './ExecutionPromptReportJson';
6
5
  /**
7
6
  * ExecutionReport is result of executing one promptbook
8
7
  * It is kind of a variant of the promptbook usefull for debugging, logging and transparency for users.
@@ -11,6 +10,7 @@ import type { string_semantic_version } from '../typeAliases';
11
10
  * - **.md file** created from the **JSON** format
12
11
  * - _(this)_ **JSON** format
13
12
  *
13
+ * Note: [🚉] This is fully serializable as JSON
14
14
  * @see https://github.com/webgptorg/promptbook#execution-report
15
15
  */
16
16
  export type ExecutionReportJson = {
@@ -37,22 +37,5 @@ export type ExecutionReportJson = {
37
37
  /**
38
38
  * Sequence of prompt templates in order which were executed
39
39
  */
40
- readonly promptExecutions: Array<{
41
- /**
42
- * The prompt wich was executed
43
- */
44
- readonly prompt: Omit<Prompt, 'pipelineUrl'>;
45
- /**
46
- * Result of the prompt execution (if not failed during LLM execution)
47
- */
48
- readonly result?: PromptResult;
49
- /**
50
- * The error which occured during LLM execution or during postprocessing or expectation checking
51
- *
52
- * Note: It makes sense to have both error and result defined, for example when the result not pass expectations
53
- */
54
- readonly error?: {
55
- readonly message: string;
56
- };
57
- }>;
40
+ readonly promptExecutions: Array<ExecutionPromptReportJson>;
58
41
  };
@@ -103,6 +103,7 @@ export type string_parameter_value = string;
103
103
  * - **Intermediate parameters** are used internally in the pipeline.
104
104
  * - **OUTPUT PARAMETERs** are not used internally in the pipeline, but are returned as the result of the pipeline execution.
105
105
  *
106
+ * Note: [🚉] This is fully serializable as JSON
106
107
  * @see https://ptbk.io/parameters
107
108
  */
108
109
  export type Parameters = Exclude<Record<string_parameter_name, string_parameter_value>, ReservedParameters>;
@@ -115,6 +116,8 @@ export type Parameters = Exclude<Record<string_parameter_name, string_parameter_
115
116
  export type string_reserved_parameter_name = TupleToUnion<typeof RESERVED_PARAMETER_NAMES>;
116
117
  /**
117
118
  * @@@
119
+ *
120
+ * Note: [🚉] This is fully serializable as JSON
118
121
  */
119
122
  export type ReservedParameters = Record<string_reserved_parameter_name, string_parameter_value>;
120
123
  /**
@@ -514,6 +517,10 @@ export type string_translate_language = 'en' | 'cs';
514
517
  * Semantic helper; For example "callbackName" or "renderMe"
515
518
  */
516
519
  export type string_javascript_name = string;
520
+ /**
521
+ * Semantic helper; For example "unwrapResult" or "spaceTrim"
522
+ */
523
+ export type string_postprocessing_function_name = string;
517
524
  export type string_token = string;
518
525
  export type string_license_token = string_token;
519
526
  export type string_password = string;
@@ -4,9 +4,6 @@ import type { really_any } from '../organization/really_any';
4
4
  *
5
5
  * Note: `$` is used to indicate that this function is not a pure function - it access global scope
6
6
  *
7
- * @public exported from `@promptbook/utils`
7
+ * @private internal function of `$Register`
8
8
  */
9
9
  export declare function $getGlobalScope(): really_any;
10
- /***
11
- * TODO: !!!!! Make private and promptbook registry from this
12
- */
@@ -0,0 +1,17 @@
1
+ import type { string_name } from '../../types/typeAliases';
2
+ /**
3
+ * @@@
4
+ * @@@
5
+ *
6
+ * Note: This function mutates the object and returns the original (but mutated-deep-freezed) object
7
+ *
8
+ * @param name - Name of the object for debugging purposes
9
+ * @param objectValue - Object to be deeply frozen
10
+ * @returns The same object as the input, but deeply frozen
11
+ * @private this is in comparison to `deepFreeze` a more specific utility and maybe not very good practice to use without specific reason and considerations
12
+ */
13
+ export declare function $asDeeplyFrozenSerializableJson<TObject>(name: string_name, objectValue: TObject): TObject;
14
+ /**
15
+ * TODO: [🧠][🛣] More elegant way to tracking than passing `name`
16
+ * TODO: [🧠] Is there a way how to meaningfully test this utility
17
+ */
@@ -9,16 +9,6 @@ import type { ReadonlyDeep } from 'type-fest';
9
9
  * @public exported from `@promptbook/utils`
10
10
  */
11
11
  export declare function $deepFreeze<TObject>(objectValue: TObject): ReadonlyDeep<TObject>;
12
- /**
13
- * @@@
14
- * @@@
15
- *
16
- * Note: This function mutates the object and returns the original (but mutated-deep-freezed) object
17
- *
18
- * @returns The same object as the input, but deeply frozen
19
- * @private this is in comparison to `deepFreeze` a more specific utility and maybe not very good practice to use without specific reason and considerations
20
- */
21
- export declare function deepFreezeWithSameType<TObject>(objectValue: TObject): TObject;
22
12
  /**
23
13
  * TODO: [🧠] Is there a way how to meaningfully test this utility
24
14
  */
@@ -0,0 +1,27 @@
1
+ import type { string_name } from '../../types/typeAliases';
2
+ /**
3
+ * Checks if the value is [🚉] serializable as JSON
4
+ * If not, throws an UnexpectedError with a rich error message and tracking
5
+ *
6
+ * - Almost all primitives are serializable BUT:
7
+ * - `undefined` is not serializable
8
+ * - `NaN` is not serializable
9
+ * - Objects and arrays are serializable if all their properties are serializable
10
+ * - Functions are not serializable
11
+ * - Circular references are not serializable
12
+ * - `Date` objects are not serializable
13
+ * - `Map` and `Set` objects are not serializable
14
+ * - `RegExp` objects are not serializable
15
+ * - `Error` objects are not serializable
16
+ * - `Symbol` objects are not serializable
17
+ * - And much more...
18
+ *
19
+ * @throws UnexpectedError if the value is not serializable as JSON
20
+ * @public exported from `@promptbook/utils`
21
+ */
22
+ export declare function checkSerializableAsJson(name: string_name, value: unknown): void;
23
+ /**
24
+ * TODO: [🧠][🛣] More elegant way to tracking than passing `name`
25
+ * TODO: [🧠] !!! In-memory cache of same values to prevent multiple checks
26
+ * Note: [🐠] This is how `checkSerializableAsJson` + `isSerializableAsJson` together can just retun true/false or rich error message
27
+ */
@@ -1,4 +1,4 @@
1
- import type { PipelineJson } from '../types/PipelineJson/PipelineJson';
1
+ import type { PipelineJson } from '../../types/PipelineJson/PipelineJson';
2
2
  /**
3
3
  * @@@
4
4
  *
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Tests if the value is [🚉] serializable as JSON
3
+ *
4
+ * - Almost all primitives are serializable BUT:
5
+ * - `undefined` is not serializable
6
+ * - `NaN` is not serializable
7
+ * - Objects and arrays are serializable if all their properties are serializable
8
+ * - Functions are not serializable
9
+ * - Circular references are not serializable
10
+ * - `Date` objects are not serializable
11
+ * - `Map` and `Set` objects are not serializable
12
+ * - `RegExp` objects are not serializable
13
+ * - `Error` objects are not serializable
14
+ * - `Symbol` objects are not serializable
15
+ * - And much more...
16
+ *
17
+ *
18
+ * @public exported from `@promptbook/utils`
19
+ */
20
+ export declare function isSerializableAsJson(value: unknown): boolean;
21
+ /**
22
+ * TODO: [🧠] !!! In-memory cache of same values to prevent multiple checks
23
+ * TODO: [🧠][💺] Can be done this on type-level?
24
+ */