@promptbook/javascript 0.102.0-1 → 0.102.0-10

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 (115) hide show
  1. package/esm/index.es.js +55 -87
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/books/index.d.ts +81 -0
  4. package/esm/typings/src/_packages/components.index.d.ts +21 -13
  5. package/esm/typings/src/_packages/markdown-utils.index.d.ts +4 -0
  6. package/esm/typings/src/_packages/types.index.d.ts +13 -9
  7. package/esm/typings/src/_packages/utils.index.d.ts +12 -14
  8. package/esm/typings/src/book-2.0/agent-source/createAgentModelRequirements.d.ts +1 -1
  9. package/esm/typings/src/book-2.0/utils/generateGravatarUrl.d.ts +1 -1
  10. package/esm/typings/src/book-2.0/utils/generatePlaceholderAgentProfileImageUrl.d.ts +1 -1
  11. package/esm/typings/src/book-components/BookEditor/BookEditor.d.ts +1 -1
  12. package/esm/typings/src/book-components/BookEditor/BookEditorInner.d.ts +1 -1
  13. package/esm/typings/src/book-components/Chat/Chat/Chat.d.ts +1 -5
  14. package/esm/typings/src/book-components/Chat/Chat/ChatMessageItem.d.ts +35 -0
  15. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +29 -7
  16. package/esm/typings/src/book-components/Chat/Chat/constants.d.ts +7 -0
  17. package/esm/typings/src/book-components/Chat/LlmChat/LlmChatProps.d.ts +19 -1
  18. package/esm/typings/src/book-components/Chat/MockedChat/MockedChat.d.ts +1 -1
  19. package/esm/typings/src/book-components/Chat/MockedChat/constants.d.ts +1 -1
  20. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +13 -0
  21. package/esm/typings/src/book-components/Chat/save/_common/getChatSaveFormatDefinitions.d.ts +8 -0
  22. package/esm/typings/src/book-components/Chat/save/_common/string_chat_format_name.d.ts +6 -0
  23. package/esm/typings/src/book-components/Chat/save/html/htmlSaveFormatDefinition.d.ts +12 -0
  24. package/esm/typings/src/book-components/Chat/save/index.d.ts +39 -0
  25. package/esm/typings/src/book-components/Chat/save/json/jsonSaveFormatDefinition.d.ts +12 -0
  26. package/esm/typings/src/book-components/Chat/save/markdown/mdSaveFormatDefinition.d.ts +12 -0
  27. package/esm/typings/src/book-components/Chat/save/pdf/pdfSaveFormatDefinition.d.ts +12 -0
  28. package/esm/typings/src/book-components/Chat/save/text/txtSaveFormatDefinition.d.ts +12 -0
  29. package/esm/typings/src/book-components/Chat/types/ChatMessage.d.ts +31 -5
  30. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +3 -3
  31. package/esm/typings/src/book-components/Chat/utils/exportChatHistory.d.ts +3 -0
  32. package/esm/typings/src/book-components/icons/AttachmentIcon.d.ts +11 -0
  33. package/esm/typings/src/book-components/icons/CloseIcon.d.ts +11 -0
  34. package/esm/typings/src/execution/LlmExecutionToolsConstructor.d.ts +1 -1
  35. package/esm/typings/src/execution/execution-report/countWorkingDuration.d.ts +1 -1
  36. package/esm/typings/src/llm-providers/_common/register/$llmToolsMetadataRegister.d.ts +1 -1
  37. package/esm/typings/src/llm-providers/_common/register/$llmToolsRegister.d.ts +1 -1
  38. package/esm/typings/src/llm-providers/_common/register/$registeredLlmToolsMessage.d.ts +1 -2
  39. package/esm/typings/src/llm-providers/_common/register/LlmToolsConfiguration.d.ts +1 -1
  40. package/esm/typings/src/llm-providers/_common/register/LlmToolsMetadata.d.ts +1 -1
  41. package/esm/typings/src/llm-providers/_multiple/joinLlmExecutionTools.d.ts +1 -1
  42. package/esm/typings/src/llm-providers/agent/register-configuration.d.ts +1 -1
  43. package/esm/typings/src/llm-providers/agent/register-constructor.d.ts +1 -1
  44. package/esm/typings/src/llm-providers/anthropic-claude/register-configuration.d.ts +1 -1
  45. package/esm/typings/src/llm-providers/anthropic-claude/register-constructor.d.ts +1 -1
  46. package/esm/typings/src/llm-providers/azure-openai/register-configuration.d.ts +1 -1
  47. package/esm/typings/src/llm-providers/azure-openai/register-constructor.d.ts +1 -1
  48. package/esm/typings/src/llm-providers/deepseek/register-configuration.d.ts +1 -1
  49. package/esm/typings/src/llm-providers/deepseek/register-constructor.d.ts +1 -1
  50. package/esm/typings/src/llm-providers/google/register-configuration.d.ts +1 -1
  51. package/esm/typings/src/llm-providers/google/register-constructor.d.ts +1 -1
  52. package/esm/typings/src/llm-providers/ollama/register-configuration.d.ts +1 -1
  53. package/esm/typings/src/llm-providers/ollama/register-constructor.d.ts +1 -1
  54. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionTools.d.ts +1 -3
  55. package/esm/typings/src/llm-providers/openai/OpenAiCompatibleExecutionTools.d.ts +5 -5
  56. package/esm/typings/src/llm-providers/openai/register-configuration.d.ts +1 -1
  57. package/esm/typings/src/llm-providers/openai/register-constructor.d.ts +1 -1
  58. package/esm/typings/src/remote-server/ui/ServerApp.d.ts +13 -0
  59. package/esm/typings/src/remote-server/ui/renderServerIndexHtml.d.ts +7 -0
  60. package/esm/typings/src/remote-server/ui/types.d.ts +16 -0
  61. package/esm/typings/src/scrapers/_boilerplate/register-constructor.d.ts +1 -1
  62. package/esm/typings/src/scrapers/_boilerplate/register-metadata.d.ts +1 -1
  63. package/esm/typings/src/scrapers/_common/register/$scrapersMetadataRegister.d.ts +1 -1
  64. package/esm/typings/src/scrapers/_common/register/$scrapersRegister.d.ts +1 -1
  65. package/esm/typings/src/scrapers/_common/register/ScraperAndConverterMetadata.d.ts +2 -4
  66. package/esm/typings/src/scrapers/_common/register/ScraperConstructor.d.ts +1 -1
  67. package/esm/typings/src/scrapers/document/register-constructor.d.ts +1 -1
  68. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -1
  69. package/esm/typings/src/scrapers/document-legacy/register-constructor.d.ts +1 -1
  70. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -1
  71. package/esm/typings/src/scrapers/markdown/register-constructor.d.ts +1 -1
  72. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -1
  73. package/esm/typings/src/scrapers/markitdown/register-constructor.d.ts +1 -1
  74. package/esm/typings/src/scrapers/markitdown/register-metadata.d.ts +1 -1
  75. package/esm/typings/src/scrapers/pdf/register-constructor.d.ts +1 -1
  76. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +1 -1
  77. package/esm/typings/src/scrapers/website/register-constructor.d.ts +1 -1
  78. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -1
  79. package/esm/typings/src/scripting/javascript/postprocessing-functions.d.ts +6 -6
  80. package/esm/typings/src/types/Prompt.d.ts +5 -0
  81. package/esm/typings/src/utils/markdown/createMarkdownChart.d.ts +1 -1
  82. package/esm/typings/src/utils/markdown/humanizeAiText.d.ts +1 -1
  83. package/esm/typings/src/utils/markdown/humanizeAiTextEllipsis.d.ts +1 -1
  84. package/esm/typings/src/utils/markdown/humanizeAiTextEmdashed.d.ts +1 -1
  85. package/esm/typings/src/utils/markdown/humanizeAiTextQuotes.d.ts +1 -1
  86. package/esm/typings/src/utils/markdown/humanizeAiTextWhitespace.d.ts +1 -1
  87. package/esm/typings/src/utils/markdown/prettifyMarkdown.d.ts +2 -0
  88. package/esm/typings/src/utils/markdown/promptbookifyAiText.d.ts +1 -1
  89. package/esm/typings/src/utils/{trimCodeBlock.d.ts → markdown/trimCodeBlock.d.ts} +1 -1
  90. package/esm/typings/src/utils/{trimEndOfCodeBlock.d.ts → markdown/trimEndOfCodeBlock.d.ts} +1 -1
  91. package/esm/typings/src/utils/{$Register.d.ts → misc/$Register.d.ts} +2 -2
  92. package/esm/typings/src/utils/{$getCurrentDate.d.ts → misc/$getCurrentDate.d.ts} +1 -1
  93. package/esm/typings/src/utils/{arrayableToArray.d.ts → misc/arrayableToArray.d.ts} +1 -1
  94. package/esm/typings/src/utils/misc/debounce.d.ts +5 -0
  95. package/esm/typings/src/utils/{emojis.d.ts → misc/emojis.d.ts} +1 -1
  96. package/esm/typings/src/utils/misc/injectCssModuleIntoShadowRoot.d.ts +20 -0
  97. package/esm/typings/src/version.d.ts +1 -1
  98. package/package.json +2 -2
  99. package/umd/index.umd.js +55 -87
  100. package/umd/index.umd.js.map +1 -1
  101. package/esm/typings/src/book-components/BookEditor/injectCssModuleIntoShadowRoot.d.ts +0 -11
  102. package/esm/typings/src/book-components/Chat/save/savePlugins.d.ts +0 -105
  103. /package/esm/typings/src/{utils/arrayableToArray.test.d.ts → book-2.0/agent-source/createAgentModelRequirementsWithCommitments.delete.test.d.ts} +0 -0
  104. /package/esm/typings/src/utils/{trimCodeBlock.test.d.ts → markdown/trimCodeBlock.test.d.ts} +0 -0
  105. /package/esm/typings/src/utils/{trimEndOfCodeBlock.test.d.ts → markdown/trimEndOfCodeBlock.test.d.ts} +0 -0
  106. /package/esm/typings/src/utils/{FromtoItems.d.ts → misc/FromtoItems.d.ts} +0 -0
  107. /package/esm/typings/src/utils/{markdown/prettifyMarkdown.test.d.ts → misc/arrayableToArray.test.d.ts} +0 -0
  108. /package/esm/typings/src/utils/{parseNumber.d.ts → misc/parseNumber.d.ts} +0 -0
  109. /package/esm/typings/src/utils/{parseNumber.test.d.ts → misc/parseNumber.test.d.ts} +0 -0
  110. /package/esm/typings/src/utils/{removeEmojis.d.ts → normalization/removeEmojis.d.ts} +0 -0
  111. /package/esm/typings/src/utils/{removeEmojis.test.d.ts → normalization/removeEmojis.test.d.ts} +0 -0
  112. /package/esm/typings/src/utils/{removeQuotes.d.ts → normalization/removeQuotes.d.ts} +0 -0
  113. /package/esm/typings/src/utils/{removeQuotes.test.d.ts → normalization/removeQuotes.test.d.ts} +0 -0
  114. /package/esm/typings/src/utils/{unwrapResult.d.ts → normalization/unwrapResult.d.ts} +0 -0
  115. /package/esm/typings/src/utils/{unwrapResult.test.d.ts → normalization/unwrapResult.test.d.ts} +0 -0
@@ -11,7 +11,6 @@ import { jsonParse } from '../formats/json/utils/jsonParse';
11
11
  import { isValidXmlString } from '../formats/xml/utils/isValidXmlString';
12
12
  import { prompt } from '../pipeline/prompt-notation';
13
13
  import { promptTemplate } from '../pipeline/prompt-notation';
14
- import { $getCurrentDate } from '../utils/$getCurrentDate';
15
14
  import { $isRunningInBrowser } from '../utils/environment/$isRunningInBrowser';
16
15
  import { $isRunningInJest } from '../utils/environment/$isRunningInJest';
17
16
  import { $isRunningInNode } from '../utils/environment/$isRunningInNode';
@@ -26,6 +25,9 @@ import { splitIntoSentences } from '../utils/expectation-counters/countSentences
26
25
  import { countSentences } from '../utils/expectation-counters/countSentences';
27
26
  import { countWords } from '../utils/expectation-counters/countWords';
28
27
  import { CountUtils } from '../utils/expectation-counters/index';
28
+ import { $getCurrentDate } from '../utils/misc/$getCurrentDate';
29
+ import { debounce } from '../utils/misc/debounce';
30
+ import { parseNumber } from '../utils/misc/parseNumber';
29
31
  import { capitalize } from '../utils/normalization/capitalize';
30
32
  import { decapitalize } from '../utils/normalization/decapitalize';
31
33
  import { DIACRITIC_VARIANTS_LETTERS } from '../utils/normalization/DIACRITIC_VARIANTS_LETTERS';
@@ -48,17 +50,17 @@ import { orderJson } from '../utils/normalization/orderJson';
48
50
  import { parseKeywords } from '../utils/normalization/parseKeywords';
49
51
  import { parseKeywordsFromString } from '../utils/normalization/parseKeywordsFromString';
50
52
  import { removeDiacritics } from '../utils/normalization/removeDiacritics';
53
+ import { removeEmojis } from '../utils/normalization/removeEmojis';
54
+ import { removeQuotes } from '../utils/normalization/removeQuotes';
51
55
  import { searchKeywords } from '../utils/normalization/searchKeywords';
52
56
  import { suffixUrl } from '../utils/normalization/suffixUrl';
53
57
  import { titleToName } from '../utils/normalization/titleToName';
58
+ import { unwrapResult } from '../utils/normalization/unwrapResult';
54
59
  import { spaceTrim } from '../utils/organization/spaceTrim';
55
60
  import { extractParameterNames } from '../utils/parameters/extractParameterNames';
56
61
  import { numberToString } from '../utils/parameters/numberToString';
57
62
  import { templateParameters } from '../utils/parameters/templateParameters';
58
63
  import { valueToString } from '../utils/parameters/valueToString';
59
- import { parseNumber } from '../utils/parseNumber';
60
- import { removeEmojis } from '../utils/removeEmojis';
61
- import { removeQuotes } from '../utils/removeQuotes';
62
64
  import { $deepFreeze } from '../utils/serialization/$deepFreeze';
63
65
  import { checkSerializableAsJson } from '../utils/serialization/checkSerializableAsJson';
64
66
  import { clonePipeline } from '../utils/serialization/clonePipeline';
@@ -69,9 +71,6 @@ import { jsonStringsToJsons } from '../utils/serialization/jsonStringsToJsons';
69
71
  import { difference } from '../utils/sets/difference';
70
72
  import { intersection } from '../utils/sets/intersection';
71
73
  import { union } from '../utils/sets/union';
72
- import { trimCodeBlock } from '../utils/trimCodeBlock';
73
- import { trimEndOfCodeBlock } from '../utils/trimEndOfCodeBlock';
74
- import { unwrapResult } from '../utils/unwrapResult';
75
74
  import { isValidEmail } from '../utils/validators/email/isValidEmail';
76
75
  import { isRootPath } from '../utils/validators/filePath/isRootPath';
77
76
  import { isValidFilePath } from '../utils/validators/filePath/isValidFilePath';
@@ -96,7 +95,6 @@ export { jsonParse };
96
95
  export { isValidXmlString };
97
96
  export { prompt };
98
97
  export { promptTemplate };
99
- export { $getCurrentDate };
100
98
  export { $isRunningInBrowser };
101
99
  export { $isRunningInJest };
102
100
  export { $isRunningInNode };
@@ -111,6 +109,9 @@ export { splitIntoSentences };
111
109
  export { countSentences };
112
110
  export { countWords };
113
111
  export { CountUtils };
112
+ export { $getCurrentDate };
113
+ export { debounce };
114
+ export { parseNumber };
114
115
  export { capitalize };
115
116
  export { decapitalize };
116
117
  export { DIACRITIC_VARIANTS_LETTERS };
@@ -133,17 +134,17 @@ export { orderJson };
133
134
  export { parseKeywords };
134
135
  export { parseKeywordsFromString };
135
136
  export { removeDiacritics };
137
+ export { removeEmojis };
138
+ export { removeQuotes };
136
139
  export { searchKeywords };
137
140
  export { suffixUrl };
138
141
  export { titleToName };
142
+ export { unwrapResult };
139
143
  export { spaceTrim };
140
144
  export { extractParameterNames };
141
145
  export { numberToString };
142
146
  export { templateParameters };
143
147
  export { valueToString };
144
- export { parseNumber };
145
- export { removeEmojis };
146
- export { removeQuotes };
147
148
  export { $deepFreeze };
148
149
  export { checkSerializableAsJson };
149
150
  export { clonePipeline };
@@ -154,9 +155,6 @@ export { jsonStringsToJsons };
154
155
  export { difference };
155
156
  export { intersection };
156
157
  export { union };
157
- export { trimCodeBlock };
158
- export { trimEndOfCodeBlock };
159
- export { unwrapResult };
160
158
  export { isValidEmail };
161
159
  export { isRootPath };
162
160
  export { isValidFilePath };
@@ -1,5 +1,5 @@
1
1
  import type { AvailableModel } from '../../execution/AvailableModel';
2
- import { LlmExecutionTools } from '../../execution/LlmExecutionTools';
2
+ import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
3
3
  import type { string_model_name } from '../../types/typeAliases';
4
4
  import type { AgentModelRequirements } from './AgentModelRequirements';
5
5
  import type { string_book } from './string_book';
@@ -1,4 +1,4 @@
1
- import { string_agent_name } from '../../types/typeAliases';
1
+ import type { string_agent_name } from '../../types/typeAliases';
2
2
  /**
3
3
  * Generates a gravatar URL based on agent name for fallback avatar
4
4
  *
@@ -1,4 +1,4 @@
1
- import { string_agent_name, string_url_image } from '../../types/typeAliases';
1
+ import type { string_agent_name, string_url_image } from '../../types/typeAliases';
2
2
  /**
3
3
  * Generates an image for the agent to use as profile image
4
4
  *
@@ -1,7 +1,7 @@
1
1
  import type { CSSProperties } from 'react';
2
2
  import type { Promisable } from 'type-fest';
3
3
  import type { string_book } from '../../book-2.0/agent-source/string_book';
4
- import { string_knowledge_source_content } from '../../types/typeAliases';
4
+ import type { string_knowledge_source_content } from '../../types/typeAliases';
5
5
  /**
6
6
  * Props of `BookEditor`
7
7
  *
@@ -1,4 +1,4 @@
1
- import { BookEditorProps } from './BookEditor';
1
+ import type { BookEditorProps } from './BookEditor';
2
2
  /**
3
3
  * @private util of `<BookEditor />`
4
4
  */
@@ -1,4 +1,3 @@
1
- import { string_chat_format_name } from '../save/savePlugins';
2
1
  import type { ChatProps } from './ChatProps';
3
2
  /**
4
3
  * Renders a chat with messages and input for new messages
@@ -13,7 +12,4 @@ import type { ChatProps } from './ChatProps';
13
12
  *
14
13
  * @public exported from `@promptbook/components`
15
14
  */
16
- export declare function Chat(props: ChatProps & {
17
- saveFormats?: string_chat_format_name[];
18
- isSaveButtonEnabled?: boolean;
19
- }): import("react/jsx-runtime").JSX.Element;
15
+ export declare function Chat(props: ChatProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ import type { id } from '../../../types/typeAliases';
3
+ import type { ChatMessage } from '../types/ChatMessage';
4
+ import type { ChatParticipant } from '../types/ChatParticipant';
5
+ import type { ChatProps } from './ChatProps';
6
+ /**
7
+ * Props for the `ChatMessageItem` component
8
+ *
9
+ * @private props for internal subcomponent
10
+ */
11
+ type ChatMessageItemProps = Pick<ChatProps, 'onMessage' | 'participants'> & {
12
+ message: ChatMessage;
13
+ participant: ChatParticipant | undefined;
14
+ isLastMessage: boolean;
15
+ setExpandedMessageId: (value: id | null) => void;
16
+ isExpanded: boolean;
17
+ currentRating: number;
18
+ handleRating: (message: ChatMessage, rating: number) => void;
19
+ mode: 'LIGHT' | 'DARK';
20
+ /**
21
+ * Enables the copy button for this message bubble.
22
+ */
23
+ isCopyButtonEnabled?: boolean;
24
+ /**
25
+ * Enables the feedback (rating) UI for this message bubble.
26
+ */
27
+ isFeedbackEnabled?: boolean;
28
+ };
29
+ /**
30
+ * Renders a single chat message item with avatar, content, buttons, and rating.
31
+ *
32
+ * @private internal subcomponent of `<Chat>` component
33
+ */
34
+ export declare const ChatMessageItem: import("react").MemoExoticComponent<({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, }: ChatMessageItemProps) => import("react/jsx-runtime").JSX.Element>;
35
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type { CSSProperties, ReactNode } from 'react';
2
2
  import type { Promisable } from 'type-fest';
3
+ import type { string_chat_format_name } from '../save/_common/string_chat_format_name';
3
4
  import type { ChatMessage } from '../types/ChatMessage';
4
5
  import type { ChatParticipant } from '../types/ChatParticipant';
5
6
  /**
@@ -91,12 +92,6 @@ export type ChatProps = {
91
92
  onAssistantVoiceResponse?: (content: string, isVoiceCall: boolean) => void;
92
93
  onVoiceCallStateChange?: (isVoiceCalling: boolean) => void;
93
94
  };
94
- /**
95
- * Indicates whether a the text is AI-generated and should be humanized
96
- *
97
- * @default true
98
- */
99
- readonly isAiTextHumanized?: boolean;
100
95
  /**
101
96
  * Indicates whether a voice call is currently active
102
97
  */
@@ -109,12 +104,24 @@ export type ChatProps = {
109
104
  * Whether the save button is enabled and shown
110
105
  */
111
106
  readonly isSaveButtonEnabled?: boolean;
107
+ /**
108
+ * List of formats in which the chat can be saved/exported
109
+ *
110
+ * @default * All supported formats (see `string_chat_format_name` type)
111
+ */
112
+ readonly saveFormats?: Array<string_chat_format_name>;
112
113
  /**
113
114
  * Is the writing textarea automatically focused?
114
115
  *
115
116
  * @default true on Desktop false on mobile (to prevent mobile keyboard from popping up)
116
117
  */
117
118
  readonly isFocusedOnLoad?: boolean;
119
+ /**
120
+ * Indicates whether the text shown in chat should be post-processed by removing AI artifacts and making it more "human-like" and "promptbook-like"
121
+ *
122
+ * @default true
123
+ */
124
+ readonly isAiTextHumanizedAndPromptbookified?: boolean;
118
125
  /**
119
126
  * Optional markdown header to include at the top of exported files.
120
127
  * Example: "## Discussion Topic\n\nSome topic here"
@@ -145,7 +152,22 @@ export type ChatProps = {
145
152
  expectedAnswer: string | null;
146
153
  url: string;
147
154
  }): Promisable<void>;
155
+ /**
156
+ * Optional callback for handling file uploads
157
+ * When provided, enables file upload functionality via drag-and-drop and file button
158
+ * The callback should process the file and return text content to be inserted into the message
159
+ *
160
+ * @param file - The uploaded file
161
+ * @returns Promise or string with the text content to insert into the chat message
162
+ */
163
+ onFileUpload?(file: File): Promisable<string>;
164
+ /**
165
+ * Enables the copy button for each message bubble.
166
+ * When true, a copy button appears in the top-right of each message.
167
+ * @default true
168
+ */
169
+ isCopyButtonEnabled?: boolean;
148
170
  };
149
171
  /**
150
172
  * TODO: [☁️] Export component prop types only to `@promptbook/components` (not `@promptbook/types`)
151
- */
173
+ */
@@ -3,6 +3,13 @@
3
3
  * @private util of `<Chat />`
4
4
  */
5
5
  export declare const LOADING_INTERACTIVE_IMAGE = "Loading...";
6
+ /**
7
+ * [🚉] Avatar dimensions constant to prevent layout jumps and maintain DRY principle
8
+ *
9
+ * @deprecated use `isComplete` instead
10
+ * @private util of `<Chat />`
11
+ */
12
+ export declare const AVATAR_SIZE = 40;
6
13
  /**
7
14
  * Note: [💞] Ignore a discrepancy between file name and entity name
8
15
  */
@@ -1,14 +1,20 @@
1
1
  import type { LlmExecutionTools } from '../../../execution/LlmExecutionTools';
2
+ import type { id } from '../../../types/typeAliases';
2
3
  import type { ChatProps } from '../Chat/ChatProps';
4
+ import type { SendMessageToLlmChatFunction } from '../hooks/useSendMessageToLlmChat';
3
5
  import type { ChatMessage } from '../types/ChatMessage';
4
6
  import type { ChatParticipant } from '../types/ChatParticipant';
5
- import type { SendMessageToLlmChatFunction } from '../hooks/useSendMessageToLlmChat';
6
7
  /**
7
8
  * Props for LlmChat component, derived from ChatProps but with LLM-specific modifications
8
9
  *
9
10
  * @public exported from `@promptbook/components`
10
11
  */
11
12
  export type LlmChatProps = Omit<ChatProps, 'messages' | 'onMessage' | 'onChange'> & {
13
+ /**
14
+ * Optional thread (full chat history) to be passed to LLM execution tools.
15
+ * If not provided, the internal messages state will be used.
16
+ */
17
+ readonly thread?: ReadonlyArray<ChatMessage>;
12
18
  /**
13
19
  * LLM execution tools for chatting with the model
14
20
  */
@@ -34,4 +40,16 @@ export type LlmChatProps = Omit<ChatProps, 'messages' | 'onMessage' | 'onChange'
34
40
  * When provided, LlmChat will attach its internal handler to it (no React context needed).
35
41
  */
36
42
  readonly sendMessage?: SendMessageToLlmChatFunction;
43
+ /**
44
+ * Name of the USER as participant in the chat
45
+ *
46
+ * @default 'USER'
47
+ */
48
+ readonly userParticipantName?: id;
49
+ /**
50
+ * Name of the LLM as participant in the chat
51
+ *
52
+ * @default 'ASSISTANT'
53
+ */
54
+ readonly llmParticipantName?: id;
37
55
  };
@@ -1,4 +1,4 @@
1
- import type { ChatProps } from '../../Chat/Chat/ChatProps';
1
+ import type { ChatProps } from '../Chat/ChatProps';
2
2
  /**
3
3
  * Delay configuration for the MockedChat component
4
4
  *
@@ -1,4 +1,4 @@
1
- import { MockedChatDelayConfig } from './MockedChat';
1
+ import type { MockedChatDelayConfig } from './MockedChat';
2
2
  /**
3
3
  * Normal flow of messages in the `MockedChat` component
4
4
  *
@@ -0,0 +1,13 @@
1
+ import type { string_file_extension, string_mime_type } from '../../../../types/typeAliases';
2
+ import type { ChatMessage } from '../../types/ChatMessage';
3
+ /**
4
+ * Plugin contract for chat export formatNames
5
+ * @public exported from `@promptbook/components`
6
+ */
7
+ 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;
13
+ };
@@ -0,0 +1,8 @@
1
+ import type { ChatSaveFormatDefinition } from './ChatSaveFormatDefinition';
2
+ import type { string_chat_format_name } from './string_chat_format_name';
3
+ /**
4
+ * Returns enabled chat save plugins filtered by formatNames (or all when omitted)
5
+ *
6
+ * @public exported from `@promptbook/components`
7
+ */
8
+ export declare function getChatSaveFormatDefinitions(formatNames?: ReadonlyArray<string_chat_format_name>): ReadonlyArray<ChatSaveFormatDefinition>;
@@ -0,0 +1,6 @@
1
+ import { CHAT_SAVE_FORMATS } from '../index';
2
+ /**
3
+ * Supported chat export formatNames
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export type string_chat_format_name = typeof CHAT_SAVE_FORMATS[number]['formatName'];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * HTML export plugin
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const htmlSaveFormatDefinition: {
7
+ readonly formatName: "html";
8
+ readonly label: "HTML";
9
+ readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "text/html";
11
+ readonly fileExtension: "html";
12
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Registry of all built-in chat save plugins
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const CHAT_SAVE_FORMATS: readonly [{
7
+ readonly formatName: "json";
8
+ readonly label: "JSON (full)";
9
+ readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "application/json";
11
+ readonly fileExtension: "json";
12
+ }, {
13
+ readonly formatName: "txt";
14
+ readonly label: "Plain Text";
15
+ readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
16
+ readonly mimeType: "text/plain";
17
+ readonly fileExtension: "txt";
18
+ }, {
19
+ readonly formatName: "md";
20
+ readonly label: "Markdown";
21
+ readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
22
+ readonly mimeType: "text/markdown";
23
+ readonly fileExtension: "md";
24
+ }, {
25
+ readonly formatName: "html";
26
+ readonly label: "HTML";
27
+ readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
28
+ readonly mimeType: "text/html";
29
+ readonly fileExtension: "html";
30
+ }, {
31
+ readonly formatName: "pdf";
32
+ readonly label: "PDF";
33
+ readonly getContent: (messages: import("../types/ChatMessage").ChatMessage[]) => string;
34
+ readonly mimeType: "application/pdf";
35
+ readonly fileExtension: "pdf";
36
+ }];
37
+ /**
38
+ * Note: [💞] Ignore a discrepancy between file name and entity name
39
+ */
@@ -0,0 +1,12 @@
1
+ /**
2
+ * JSON export plugin (full metadata)
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const jsonSaveFormatDefinition: {
7
+ readonly formatName: "json";
8
+ readonly label: "JSON (full)";
9
+ readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "application/json";
11
+ readonly fileExtension: "json";
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Markdown export plugin
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const mdSaveFormatDefinition: {
7
+ readonly formatName: "md";
8
+ readonly label: "Markdown";
9
+ readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "text/markdown";
11
+ readonly fileExtension: "md";
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PDF export plugin
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const pdfSaveFormatDefinition: {
7
+ readonly formatName: "pdf";
8
+ readonly label: "PDF";
9
+ readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "application/pdf";
11
+ readonly fileExtension: "pdf";
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Plain text export plugin (messages only)
3
+ *
4
+ * @public exported from `@promptbook/components`
5
+ */
6
+ export declare const txtSaveFormatDefinition: {
7
+ readonly formatName: "txt";
8
+ readonly label: "Plain Text";
9
+ readonly getContent: (messages: import("../../types/ChatMessage").ChatMessage[]) => string;
10
+ readonly mimeType: "text/plain";
11
+ readonly fileExtension: "txt";
12
+ };
@@ -1,16 +1,42 @@
1
- import type { string_markdown } from '../../../types/typeAliases';
2
- import type { string_name } from '../../../types/typeAliases';
1
+ import type { id, string_markdown } from '../../../types/typeAliases';
3
2
  /**
4
3
  * A message in the chat
5
4
  *
6
5
  * @public exported from `@promptbook/components`
7
6
  */
8
7
  export type ChatMessage = {
9
- id: string;
10
- date: Date;
11
- from: string_name;
8
+ /**
9
+ * Unique identifier of the message
10
+ */
11
+ id: id;
12
+ /**
13
+ * Date when the message was created
14
+ */
15
+ date?: Date;
16
+ /**
17
+ * The name of the participant who sent the message
18
+ */
19
+ from: id;
20
+ /**
21
+ * The content of the message with optional markdown formatting
22
+ */
12
23
  content: string_markdown;
24
+ /**
25
+ * Whether the message is complete (for example, if it's still being generated by an AI)
26
+ *
27
+ * @default true
28
+ */
13
29
  isComplete?: boolean;
30
+ /**
31
+ * @@@
32
+ */
14
33
  expectedAnswer?: string;
34
+ /**
35
+ * @@@
36
+ */
15
37
  isVoiceCall?: boolean;
16
38
  };
39
+ /**
40
+ * TODO: Delete `expectedAnswer` from ChatMessage
41
+ * TODO: Rename `date` into `created`+`modified`
42
+ */
@@ -1,4 +1,4 @@
1
- import type { string_color, string_name, string_person_fullname, string_url_image } from '../../../types/typeAliases';
1
+ import type { id, string_color, string_person_fullname, string_url_image } from '../../../types/typeAliases';
2
2
  import { Color } from '../../../utils/color/Color';
3
3
  /**
4
4
  * A participant in the chat
@@ -9,11 +9,11 @@ export type ChatParticipant = {
9
9
  /**
10
10
  * Identifies the participant by their name, same as `message.from`
11
11
  */
12
- name: string_name;
12
+ name: id;
13
13
  /**
14
14
  * Full name of the participant
15
15
  */
16
- fullname: string_person_fullname;
16
+ fullname?: string_person_fullname;
17
17
  /**
18
18
  * Am I the participant? (i.e. is this the user)
19
19
  */
@@ -7,3 +7,6 @@ import type { ExportFormat } from './ExportFormat';
7
7
  * @private utility of `<Chat/>` component
8
8
  */
9
9
  export declare function exportChatHistory(messages: ChatMessage[], format: ExportFormat, headerMarkdown?: string, participants?: ReadonlyArray<ChatParticipant>): Promise<void>;
10
+ /**
11
+ * TODO: !!!! Delete this parallel chat history export
12
+ */
@@ -0,0 +1,11 @@
1
+ type AttachmentIconProps = {
2
+ size?: number;
3
+ color?: string;
4
+ };
5
+ /**
6
+ * @@@
7
+ *
8
+ * @public exported from `@promptbook/components`
9
+ */
10
+ export declare function AttachmentIcon({ size, color }: AttachmentIconProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,11 @@
1
+ type CloseIconProps = {
2
+ size?: number;
3
+ color?: string;
4
+ };
5
+ /**
6
+ * @@@
7
+ *
8
+ * @public exported from `@promptbook/components`
9
+ */
10
+ export declare function CloseIcon({ size, color }: CloseIconProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -1,4 +1,4 @@
1
- import type { Registered } from '../utils/$Register';
1
+ import type { Registered } from '../utils/misc/$Register';
2
2
  import type { TODO_any } from '../utils/organization/TODO_any';
3
3
  import type { LlmExecutionTools } from './LlmExecutionTools';
4
4
  /**
@@ -1,4 +1,4 @@
1
- import type { FromtoItems } from '../../utils/FromtoItems';
1
+ import type { FromtoItems } from '../../utils/misc/FromtoItems';
2
2
  /**
3
3
  * Count the duration of working time
4
4
  *
@@ -1,4 +1,4 @@
1
- import { $Register } from '../../../utils/$Register';
1
+ import { $Register } from '../../../utils/misc/$Register';
2
2
  import type { LlmToolsMetadata } from './LlmToolsMetadata';
3
3
  /**
4
4
  * Register for LLM tools metadata.
@@ -1,5 +1,5 @@
1
1
  import type { LlmExecutionToolsConstructor } from '../../../execution/LlmExecutionToolsConstructor';
2
- import { $Register } from '../../../utils/$Register';
2
+ import { $Register } from '../../../utils/misc/$Register';
3
3
  /**
4
4
  * Register for LLM tools.
5
5
  *
@@ -1,5 +1,4 @@
1
- import type { string_filename } from '../../../types/typeAliases';
2
- import type { string_markdown } from '../../../types/typeAliases';
1
+ import type { string_filename, string_markdown } from '../../../types/typeAliases';
3
2
  /**
4
3
  * Pass the `.env` file which was used to configure LLM tools
5
4
  *
@@ -1,5 +1,5 @@
1
1
  import type { string_title } from '../../../types/typeAliases';
2
- import type { Registered } from '../../../utils/$Register';
2
+ import type { Registered } from '../../../utils/misc/$Register';
3
3
  import type { LlmToolsOptions } from './LlmToolsOptions';
4
4
  /**
5
5
  * Configuration definition for LLM execution tools, containing provider-specific settings
@@ -1,6 +1,6 @@
1
1
  import { MODEL_ORDERS, MODEL_TRUST_LEVELS } from '../../../constants';
2
2
  import type { string_name, string_title } from '../../../types/typeAliases';
3
- import type { Registered } from '../../../utils/$Register';
3
+ import type { Registered } from '../../../utils/misc/$Register';
4
4
  import type { string_SCREAMING_CASE } from '../../../utils/normalization/normalizeTo_SCREAMING_CASE';
5
5
  import type { LlmToolsConfiguration } from './LlmToolsConfiguration';
6
6
  /**
@@ -1,5 +1,5 @@
1
1
  import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
2
- import { string_markdown_text, string_title } from '../../types/typeAliases';
2
+ import type { string_markdown_text, string_title } from '../../types/typeAliases';
3
3
  import { MultipleLlmExecutionTools } from './MultipleLlmExecutionTools';
4
4
  /**
5
5
  * Joins multiple LLM Execution Tools into one
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @public exported from `@promptbook/core`
5
5
  */
6
- export declare const _AgentMetadata: import("../../utils/$Register").Registration;
6
+ export declare const _AgentMetadata: import("../../_packages/types.index").Registration;
7
7
  /**
8
8
  * TODO: [🧠] Consider adding a special trust level for AgentLlmExecutionTools
9
9
  * TODO: [🎶] Naming "constructor" vs "creator" vs "factory"