@promptbook/editable 0.102.0-11 → 0.102.0-16

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 (30) hide show
  1. package/esm/index.es.js +915 -1
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/src/_packages/color.index.d.ts +2 -0
  4. package/esm/typings/src/_packages/components.index.d.ts +4 -0
  5. package/esm/typings/src/_packages/core.index.d.ts +6 -0
  6. package/esm/typings/src/_packages/utils.index.d.ts +2 -0
  7. package/esm/typings/src/book-components/Chat/Chat/ChatMessageItem.d.ts +5 -1
  8. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +4 -0
  9. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +43 -5
  10. package/esm/typings/src/book-components/Chat/save/html/htmlSaveFormatDefinition.d.ts +6 -2
  11. package/esm/typings/src/book-components/Chat/save/index.d.ts +38 -8
  12. package/esm/typings/src/book-components/Chat/save/json/jsonSaveFormatDefinition.d.ts +6 -2
  13. package/esm/typings/src/book-components/Chat/save/markdown/mdSaveFormatDefinition.d.ts +5 -1
  14. package/esm/typings/src/book-components/Chat/save/pdf/pdfSaveFormatDefinition.d.ts +6 -2
  15. package/esm/typings/src/book-components/Chat/save/react/reactSaveFormatDefinition.d.ts +16 -0
  16. package/esm/typings/src/book-components/Chat/save/text/txtSaveFormatDefinition.d.ts +5 -1
  17. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  18. package/esm/typings/src/book-components/icons/SaveIcon.d.ts +10 -0
  19. package/esm/typings/src/config.d.ts +26 -4
  20. package/esm/typings/src/utils/color/Color.d.ts +8 -0
  21. package/esm/typings/src/utils/color/operators/darken.d.ts +2 -1
  22. package/esm/typings/src/utils/color/operators/grayscale.d.ts +2 -1
  23. package/esm/typings/src/utils/color/operators/lighten.d.ts +2 -1
  24. package/esm/typings/src/utils/color/operators/mixWithColor.d.ts +2 -1
  25. package/esm/typings/src/utils/color/operators/saturate.d.ts +13 -0
  26. package/esm/typings/src/utils/serialization/serializeToPromptbookJavascript.d.ts +22 -0
  27. package/esm/typings/src/version.d.ts +1 -1
  28. package/package.json +2 -2
  29. package/umd/index.umd.js +915 -1
  30. package/umd/index.umd.js.map +1 -1
@@ -1,13 +1,51 @@
1
+ import type { Promisable } from 'type-fest';
1
2
  import type { string_file_extension, string_mime_type } from '../../../../types/typeAliases';
2
3
  import type { ChatMessage } from '../../types/ChatMessage';
4
+ import { ChatParticipant } from '../../types/ChatParticipant';
3
5
  /**
4
6
  * Plugin contract for chat export formatNames
7
+ *
5
8
  * @public exported from `@promptbook/components`
6
9
  */
7
10
  export type ChatSaveFormatDefinition = {
8
- formatName: string_file_extension | string_mime_type | string;
9
- label: string;
10
- getContent: (messages: ChatMessage[]) => string;
11
- mimeType: string;
12
- fileExtension: string;
11
+ /**
12
+ * A unique name for the format (e.g. 'json', 'txt', 'md', 'html', 'pdf', etc.)
13
+ */
14
+ readonly formatName: string_file_extension | string_mime_type | string;
15
+ /**
16
+ * A human-readable label for the format (e.g. 'JSON', 'Plain Text', 'Markdown', 'HTML', 'PDF', etc.) shown in UI
17
+ */
18
+ readonly label: string;
19
+ /**
20
+ * MIME type (e.g. 'application/json', 'text/plain', 'text/markdown', 'text/html', 'application/pdf', etc.)
21
+ */
22
+ readonly mimeType: string;
23
+ /**
24
+ * File extension without leading dot (e.g. 'json', 'txt', 'md', 'html', 'pdf', etc.)
25
+ */
26
+ readonly fileExtension: string;
27
+ /**
28
+ * The function that generates the content of the file to be saved
29
+ */
30
+ getContent(chatExportData: ChatExportData): Promisable<string>;
13
31
  };
32
+ /**
33
+ * Plugin contract for the data passed to `ChatSaveFormatDefinition.getContent()`
34
+ *
35
+ * @public exported from `@promptbook/components`
36
+ */
37
+ type ChatExportData = {
38
+ /**
39
+ * The title of the chat (used for file naming, etc.)
40
+ */
41
+ readonly title: string;
42
+ /**
43
+ * The chat messages to be exported
44
+ */
45
+ readonly messages: ReadonlyArray<ChatMessage>;
46
+ /**
47
+ * The participants in the chat
48
+ */
49
+ readonly participants: ReadonlyArray<ChatParticipant>;
50
+ };
51
+ export {};
@@ -5,8 +5,12 @@
5
5
  */
6
6
  export declare const htmlSaveFormatDefinition: {
7
7
  readonly formatName: "html";
8
- readonly label: "HTML";
9
- readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
8
+ readonly label: "Html";
9
+ readonly getContent: ({ messages }: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
10
14
  readonly mimeType: "text/html";
11
15
  readonly fileExtension: "html";
12
16
  };
@@ -5,32 +5,62 @@
5
5
  */
6
6
  export declare const CHAT_SAVE_FORMATS: readonly [{
7
7
  readonly formatName: "json";
8
- readonly label: "JSON (full)";
9
- readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
8
+ readonly label: "Json";
9
+ readonly getContent: ({ messages }: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
10
14
  readonly mimeType: "application/json";
11
15
  readonly fileExtension: "json";
12
16
  }, {
13
17
  readonly formatName: "txt";
14
18
  readonly label: "Plain Text";
15
- readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
19
+ readonly getContent: ({ messages }: {
20
+ readonly title: string;
21
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
22
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
23
+ }) => string;
16
24
  readonly mimeType: "text/plain";
17
25
  readonly fileExtension: "txt";
18
26
  }, {
19
27
  readonly formatName: "md";
20
28
  readonly label: "Markdown";
21
- readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
29
+ readonly getContent: ({ messages }: {
30
+ readonly title: string;
31
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
32
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
33
+ }) => string;
22
34
  readonly mimeType: "text/markdown";
23
35
  readonly fileExtension: "md";
24
36
  }, {
25
37
  readonly formatName: "html";
26
- readonly label: "HTML";
27
- readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
38
+ readonly label: "Html";
39
+ readonly getContent: ({ messages }: {
40
+ readonly title: string;
41
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
42
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
43
+ }) => string;
28
44
  readonly mimeType: "text/html";
29
45
  readonly fileExtension: "html";
46
+ }, {
47
+ readonly formatName: "jsx";
48
+ readonly label: "React";
49
+ readonly getContent: (chatExportData: {
50
+ readonly title: string;
51
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
52
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
53
+ }) => string;
54
+ readonly mimeType: "application/javascript";
55
+ readonly fileExtension: "jsx";
30
56
  }, {
31
57
  readonly formatName: "pdf";
32
- readonly label: "PDF";
33
- readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
58
+ readonly label: "Pdf";
59
+ readonly getContent: (chatExportData: {
60
+ readonly title: string;
61
+ readonly messages: readonly import("../types/ChatMessage").ChatMessage[];
62
+ readonly participants: readonly import("../types/ChatParticipant").ChatParticipant[];
63
+ }) => Promise<string>;
34
64
  readonly mimeType: "application/pdf";
35
65
  readonly fileExtension: "pdf";
36
66
  }];
@@ -5,8 +5,12 @@
5
5
  */
6
6
  export declare const jsonSaveFormatDefinition: {
7
7
  readonly formatName: "json";
8
- readonly label: "JSON (full)";
9
- readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
8
+ readonly label: "Json";
9
+ readonly getContent: ({ messages }: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
10
14
  readonly mimeType: "application/json";
11
15
  readonly fileExtension: "json";
12
16
  };
@@ -6,7 +6,11 @@
6
6
  export declare const mdSaveFormatDefinition: {
7
7
  readonly formatName: "md";
8
8
  readonly label: "Markdown";
9
- readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
9
+ readonly getContent: ({ messages }: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
10
14
  readonly mimeType: "text/markdown";
11
15
  readonly fileExtension: "md";
12
16
  };
@@ -5,8 +5,12 @@
5
5
  */
6
6
  export declare const pdfSaveFormatDefinition: {
7
7
  readonly formatName: "pdf";
8
- readonly label: "PDF";
9
- readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
8
+ readonly label: "Pdf";
9
+ readonly getContent: (chatExportData: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => Promise<string>;
10
14
  readonly mimeType: "application/pdf";
11
15
  readonly fileExtension: "pdf";
12
16
  };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * React <jsx/> export plugin (full metadata)
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const reactSaveFormatDefinition: {
7
+ readonly formatName: "jsx";
8
+ readonly label: "React";
9
+ readonly getContent: (chatExportData: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
14
+ readonly mimeType: "application/javascript";
15
+ readonly fileExtension: "jsx";
16
+ };
@@ -6,7 +6,11 @@
6
6
  export declare const txtSaveFormatDefinition: {
7
7
  readonly formatName: "txt";
8
8
  readonly label: "Plain Text";
9
- readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
9
+ readonly getContent: ({ messages }: {
10
+ readonly title: string;
11
+ readonly messages: readonly import("../../types/ChatMessage").ChatMessage[];
12
+ readonly participants: readonly import("../../types/ChatParticipant").ChatParticipant[];
13
+ }) => string;
10
14
  readonly mimeType: "text/plain";
11
15
  readonly fileExtension: "txt";
12
16
  };
@@ -25,7 +25,7 @@ export type ChatParticipant = {
25
25
  /**
26
26
  * Color associated with the participant
27
27
  */
28
- color: string_color | Color;
28
+ color?: string_color | Color;
29
29
  };
30
30
  /**
31
31
  * TODO: [🕛] Unite `AgentBasicInformation`, `ChatParticipant`, `LlmExecutionTools` + `LlmToolsMetadata`
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ /**
3
+ * @@@
4
+ *
5
+ * @public exported from `@promptbook/components`
6
+ */
7
+ export declare function SaveIcon({ size, color, ...props }: {
8
+ size?: number;
9
+ color?: string;
10
+ } & React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,7 @@
1
+ import { Color } from './_packages/color.index';
1
2
  import type { CsvSettings } from './formats/csv/CsvSettings';
2
3
  import type { IntermediateFilesStrategy } from './types/IntermediateFilesStrategy';
3
- import type { string_app_id } from './types/typeAliases';
4
- import type { string_email } from './types/typeAliases';
5
- import type { string_name } from './types/typeAliases';
6
- import type { string_promptbook_server_url } from './types/typeAliases';
4
+ import type { string_app_id, string_email, string_name, string_promptbook_server_url } from './types/typeAliases';
7
5
  /**
8
6
  * Warning message for the generated sections and files files
9
7
  *
@@ -38,6 +36,30 @@ export declare const ADMIN_GITHUB_NAME: string_name;
38
36
  * @public exported from `@promptbook/core`
39
37
  */
40
38
  export declare const CLAIM = "It's time for a paradigm shift. The future of software in plain English, French or Latin";
39
+ /**
40
+ * Color of the Promptbook
41
+ *
42
+ * TODO: [🗽] Unite branding and make single place for it
43
+ *
44
+ * @public exported from `@promptbook/core`
45
+ */
46
+ export declare const PROMPTBOOK_COLOR: import("./utils/take/interfaces/ITakeChain").WithTake<Color>;
47
+ /**
48
+ * Dark color of the Promptbook
49
+ *
50
+ * TODO: [🗽] Unite branding and make single place for it
51
+ *
52
+ * @public exported from `@promptbook/core`
53
+ */
54
+ export declare const PROMPTBOOK_CHAT_COLOR: import("./utils/take/interfaces/ITakeChain").WithTake<Color>;
55
+ /**
56
+ * Color of the user (in chat)
57
+ *
58
+ * TODO: [🗽] Unite branding and make single place for it
59
+ *
60
+ * @public exported from `@promptbook/core`
61
+ */
62
+ export declare const USER_CHAT_COLOR: import("./utils/take/interfaces/ITakeChain").WithTake<Color>;
41
63
  /**
42
64
  * When the title is not provided, the default title is used
43
65
  *
@@ -111,6 +111,13 @@ export declare class Color {
111
111
  * @return {value is WithTake<Color>} Returns true if the value is a valid Color object, false otherwise.
112
112
  */
113
113
  static isColor(value: unknown): value is WithTake<Color>;
114
+ /**
115
+ * Checks if the given value is a valid hex color string
116
+ *
117
+ * @param value - value to check
118
+ * @returns true if the value is a valid hex color string (e.g., `#009edd`, `#fff`, etc.)
119
+ */
120
+ static isHexColorString(value: unknown): value is string_color;
114
121
  /**
115
122
  * Creates new Color object
116
123
  *
@@ -163,6 +170,7 @@ export declare class Color {
163
170
  toHsl(): string_color;
164
171
  }
165
172
  /**
173
+ * TODO: [🥻] Split Color class and color type
166
174
  * TODO: For each method a corresponding static method should be created
167
175
  * Like clone can be done by color.clone() OR Color.clone(color)
168
176
  * TODO: Probably as an independent LIB OR add to LIB xyzt (ask @roseckyj)
@@ -1,3 +1,4 @@
1
+ import { number_percent } from '../../../types/typeAliases';
1
2
  import type { ColorTransformer } from './ColorTransformer';
2
3
  /**
3
4
  * Makes color transformer which darker the given color
@@ -6,4 +7,4 @@ import type { ColorTransformer } from './ColorTransformer';
6
7
  *
7
8
  * @public exported from `@promptbook/color`
8
9
  */
9
- export declare function darken(amount: number): ColorTransformer;
10
+ export declare function darken(amount: number_percent): ColorTransformer;
@@ -1,3 +1,4 @@
1
+ import { number_percent } from '../../../types/typeAliases';
1
2
  import type { ColorTransformer } from './ColorTransformer';
2
3
  /**
3
4
  * Makes color transformer which returns a grayscale version of the color
@@ -6,4 +7,4 @@ import type { ColorTransformer } from './ColorTransformer';
6
7
  *
7
8
  * @public exported from `@promptbook/color`
8
9
  */
9
- export declare function grayscale(amount: number): ColorTransformer;
10
+ export declare function grayscale(amount: number_percent): ColorTransformer;
@@ -1,4 +1,5 @@
1
1
  import type { ColorTransformer } from './ColorTransformer';
2
+ import { number_percent } from '../../../types/typeAliases';
2
3
  /**
3
4
  * Makes color transformer which lighten the given color
4
5
  *
@@ -6,7 +7,7 @@ import type { ColorTransformer } from './ColorTransformer';
6
7
  *
7
8
  * @public exported from `@promptbook/color`
8
9
  */
9
- export declare function lighten(amount: number): ColorTransformer;
10
+ export declare function lighten(amount: number_percent): ColorTransformer;
10
11
  /**
11
12
  * TODO: Maybe implement by mix+hsl
12
13
  */
@@ -1,5 +1,6 @@
1
1
  import { Color } from '../Color';
2
2
  import type { ColorTransformer } from './ColorTransformer';
3
+ import { number_percent } from '../../../types/typeAliases';
3
4
  /**
4
5
  * Makes color transformer which returns a mix of two colors based on a ratio
5
6
  *
@@ -8,4 +9,4 @@ import type { ColorTransformer } from './ColorTransformer';
8
9
  *
9
10
  * @public exported from `@promptbook/color`
10
11
  */
11
- export declare function mixWithColor(ratio: number, additionalColor: Color): ColorTransformer;
12
+ export declare function mixWithColor(ratio: number_percent, additionalColor: Color): ColorTransformer;
@@ -0,0 +1,13 @@
1
+ import { number_percent } from '../../../types/typeAliases';
2
+ import type { ColorTransformer } from './ColorTransformer';
3
+ /**
4
+ * Makes color transformer which saturate the given color
5
+ *
6
+ * @param amount from -1 to 1
7
+ *
8
+ * @public exported from `@promptbook/color`
9
+ */
10
+ export declare function saturate(amount: number_percent): ColorTransformer;
11
+ /**
12
+ * TODO: Maybe implement by mix+hsl
13
+ */
@@ -0,0 +1,22 @@
1
+ import { string_javascript } from '../../types/typeAliases';
2
+ import { TODO_any } from '../organization/TODO_any';
3
+ type SerializeToPromptbookJavascriptReturn = {
4
+ /**
5
+ * Array of import statements required for the `value` to work
6
+ */
7
+ readonly imports: ReadonlyArray<string_javascript>;
8
+ /**
9
+ * The serialized value as a string of JavaScript code
10
+ */
11
+ readonly value: string_javascript;
12
+ };
13
+ /**
14
+ * Function `serializeToPromptbookJavascript` will serialize a value to a javascript representation using `@promptbook/*` entities where possible.
15
+ *
16
+ * @public exported from `@promptbook/utils`
17
+ */
18
+ export declare function serializeToPromptbookJavascript(value: TODO_any): SerializeToPromptbookJavascriptReturn;
19
+ export {};
20
+ /**
21
+ * TODO: Dynamic indentation passable through options in a second argument
22
+ */
@@ -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.102.0-10`).
18
+ * It follows semantic versioning (e.g., `0.102.0-15`).
19
19
  *
20
20
  * @generated
21
21
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/editable",
3
- "version": "0.102.0-11",
3
+ "version": "0.102.0-16",
4
4
  "description": "Promptbook: Run AI apps in plain human language across multiple models and platforms",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -95,7 +95,7 @@
95
95
  "module": "./esm/index.es.js",
96
96
  "typings": "./esm/typings/src/_packages/editable.index.d.ts",
97
97
  "peerDependencies": {
98
- "@promptbook/core": "0.102.0-11"
98
+ "@promptbook/core": "0.102.0-16"
99
99
  },
100
100
  "dependencies": {
101
101
  "crypto-js": "4.2.0",