@promptbook/javascript 0.103.0-9 → 0.103.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 (273) hide show
  1. package/README.md +59 -39
  2. package/esm/index.es.js +138 -124
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/books/index.d.ts +0 -81
  5. package/esm/typings/servers.d.ts +9 -7
  6. package/esm/typings/src/_packages/browser.index.d.ts +6 -0
  7. package/esm/typings/src/_packages/cli.index.d.ts +4 -0
  8. package/esm/typings/src/_packages/components.index.d.ts +22 -8
  9. package/esm/typings/src/_packages/core.index.d.ts +58 -18
  10. package/esm/typings/src/_packages/node.index.d.ts +2 -2
  11. package/esm/typings/src/_packages/remote-server.index.d.ts +2 -0
  12. package/esm/typings/src/_packages/types.index.d.ts +70 -8
  13. package/esm/typings/src/_packages/utils.index.d.ts +6 -0
  14. package/esm/typings/src/_packages/wizard.index.d.ts +4 -0
  15. package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +20 -5
  16. package/esm/typings/src/book-2.0/agent-source/AgentModelRequirements.d.ts +17 -1
  17. package/esm/typings/src/book-2.0/agent-source/AgentSourceParseResult.d.ts +3 -2
  18. package/esm/typings/src/book-2.0/agent-source/computeAgentHash.d.ts +8 -0
  19. package/esm/typings/src/book-2.0/agent-source/createCommitmentRegex.d.ts +3 -3
  20. package/esm/typings/src/book-2.0/agent-source/createDefaultAgentName.d.ts +8 -0
  21. package/esm/typings/src/book-2.0/agent-source/normalizeAgentName.d.ts +9 -0
  22. package/esm/typings/src/book-2.0/agent-source/padBook.d.ts +18 -0
  23. package/esm/typings/src/book-2.0/agent-source/parseAgentSourceWithCommitments.d.ts +1 -1
  24. package/esm/typings/src/book-2.0/agent-source/string_book.d.ts +3 -0
  25. package/esm/typings/src/book-components/AvatarProfile/AvatarProfile/AvatarProfile.d.ts +6 -1
  26. package/esm/typings/src/book-components/BookEditor/BookEditor.d.ts +85 -14
  27. package/esm/typings/src/book-components/BookEditor/BookEditorActionbar.d.ts +18 -0
  28. package/esm/typings/src/book-components/BookEditor/BookEditorMonaco.d.ts +5 -0
  29. package/esm/typings/src/book-components/Chat/AgentChat/AgentChat.d.ts +17 -0
  30. package/esm/typings/src/book-components/Chat/AgentChat/AgentChatProps.d.ts +13 -0
  31. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +16 -0
  32. package/esm/typings/src/book-components/Chat/LlmChat/LlmChatProps.d.ts +5 -0
  33. package/esm/typings/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +15 -0
  34. package/esm/typings/src/book-components/Chat/MockedChat/MockedChat.d.ts +5 -0
  35. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +1 -1
  36. package/esm/typings/src/book-components/Chat/save/html/htmlSaveFormatDefinition.d.ts +1 -0
  37. package/esm/typings/src/book-components/Chat/save/pdf/pdfSaveFormatDefinition.d.ts +4 -0
  38. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  39. package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgentIntegration.d.ts +52 -0
  40. package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgentSeamlessIntegration.d.ts +14 -0
  41. package/esm/typings/src/book-components/Qr/BrandedQrCode.d.ts +18 -0
  42. package/esm/typings/src/book-components/Qr/GenericQrCode.d.ts +10 -0
  43. package/esm/typings/src/book-components/Qr/PromptbookQrCode.d.ts +18 -0
  44. package/esm/typings/src/book-components/Qr/useQrCode.d.ts +15 -0
  45. package/esm/typings/src/book-components/_common/Dropdown/Dropdown.d.ts +15 -0
  46. package/esm/typings/src/book-components/_common/HamburgerMenu/HamburgerMenu.d.ts +12 -0
  47. package/esm/typings/src/book-components/_common/Modal/Modal.d.ts +2 -2
  48. package/esm/typings/src/book-components/_common/Tooltip/Tooltip.d.ts +47 -0
  49. package/esm/typings/src/book-components/icons/AboutIcon.d.ts +9 -0
  50. package/esm/typings/src/book-components/icons/CameraIcon.d.ts +11 -0
  51. package/esm/typings/src/book-components/icons/CloseIcon.d.ts +4 -8
  52. package/esm/typings/src/book-components/icons/DownloadIcon.d.ts +9 -0
  53. package/esm/typings/src/book-components/icons/ExitFullscreenIcon.d.ts +7 -0
  54. package/esm/typings/src/book-components/icons/FullscreenIcon.d.ts +7 -0
  55. package/esm/typings/src/book-components/icons/MenuIcon.d.ts +12 -0
  56. package/esm/typings/src/book-components/icons/MicIcon.d.ts +8 -0
  57. package/esm/typings/src/book-components/icons/SendIcon.d.ts +3 -0
  58. package/esm/typings/src/cli/cli-commands/_boilerplate.d.ts +2 -1
  59. package/esm/typings/src/cli/cli-commands/about.d.ts +3 -1
  60. package/esm/typings/src/cli/cli-commands/hello.d.ts +2 -1
  61. package/esm/typings/src/cli/cli-commands/list-models.d.ts +2 -1
  62. package/esm/typings/src/cli/cli-commands/list-scrapers.d.ts +2 -1
  63. package/esm/typings/src/cli/cli-commands/login.d.ts +2 -1
  64. package/esm/typings/src/cli/cli-commands/make.d.ts +2 -1
  65. package/esm/typings/src/cli/cli-commands/prettify.d.ts +2 -1
  66. package/esm/typings/src/cli/cli-commands/run.d.ts +2 -1
  67. package/esm/typings/src/cli/cli-commands/{start-server.d.ts → start-agents-server.d.ts} +3 -2
  68. package/esm/typings/src/cli/cli-commands/start-pipelines-server.d.ts +15 -0
  69. package/esm/typings/src/cli/cli-commands/test-command.d.ts +2 -1
  70. package/esm/typings/src/cli/common/$addGlobalOptionsToCommand.d.ts +2 -1
  71. package/esm/typings/src/collection/agent-collection/AgentCollection.d.ts +12 -0
  72. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +75 -0
  73. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabaseOptions.d.ts +10 -0
  74. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentsDatabaseSchema.d.ts +154 -0
  75. package/esm/typings/src/collection/{PipelineCollection.d.ts → pipeline-collection/PipelineCollection.d.ts} +7 -3
  76. package/esm/typings/src/collection/{SimplePipelineCollection.d.ts → pipeline-collection/SimplePipelineCollection.d.ts} +5 -5
  77. package/esm/typings/src/collection/{constructors/createCollectionFromDirectory.d.ts → pipeline-collection/constructors/createPipelineCollectionFromDirectory.d.ts} +8 -11
  78. package/esm/typings/src/collection/pipeline-collection/constructors/createPipelineCollectionFromJson.d.ts +13 -0
  79. package/esm/typings/src/collection/{constructors/createCollectionFromPromise.d.ts → pipeline-collection/constructors/createPipelineCollectionFromPromise.d.ts} +6 -5
  80. package/esm/typings/src/collection/pipeline-collection/constructors/createPipelineCollectionFromPromise.test.d.ts +1 -0
  81. package/esm/typings/src/collection/{constructors/createCollectionFromUrl.d.ts → pipeline-collection/constructors/createPipelineCollectionFromUrl.d.ts} +3 -3
  82. package/esm/typings/src/collection/{constructors/createSubcollection.d.ts → pipeline-collection/constructors/createPipelineSubcollection.d.ts} +3 -3
  83. package/esm/typings/src/collection/pipeline-collection/pipelineCollectionToJson.d.ts +13 -0
  84. package/esm/typings/src/commands/_common/types/CommandParser.d.ts +4 -5
  85. package/esm/typings/src/{book-2.0/commitments → commitments}/ACTION/ACTION.d.ts +5 -1
  86. package/esm/typings/src/commitments/CLOSED/CLOSED.d.ts +39 -0
  87. package/esm/typings/src/commitments/CLOSED/CLOSED.test.d.ts +4 -0
  88. package/esm/typings/src/commitments/COMPONENT/COMPONENT.d.ts +28 -0
  89. package/esm/typings/src/{book-2.0/commitments → commitments}/DELETE/DELETE.d.ts +5 -1
  90. package/esm/typings/src/{book-2.0/commitments → commitments}/FORMAT/FORMAT.d.ts +5 -1
  91. package/esm/typings/src/commitments/FROM/FROM.d.ts +34 -0
  92. package/esm/typings/src/{book-2.0/commitments → commitments}/GOAL/GOAL.d.ts +5 -1
  93. package/esm/typings/src/{book-2.0/commitments → commitments}/KNOWLEDGE/KNOWLEDGE.d.ts +5 -5
  94. package/esm/typings/src/commitments/LANGUAGE/LANGUAGE.d.ts +35 -0
  95. package/esm/typings/src/{book-2.0/commitments → commitments}/MEMORY/MEMORY.d.ts +5 -1
  96. package/esm/typings/src/commitments/MESSAGE/AgentMessageCommitmentDefinition.d.ts +32 -0
  97. package/esm/typings/src/commitments/MESSAGE/InitialMessageCommitmentDefinition.d.ts +32 -0
  98. package/esm/typings/src/{book-2.0/commitments → commitments}/MESSAGE/MESSAGE.d.ts +5 -1
  99. package/esm/typings/src/commitments/MESSAGE/UserMessageCommitmentDefinition.d.ts +32 -0
  100. package/esm/typings/src/{book-2.0/commitments → commitments}/META/META.d.ts +5 -1
  101. package/esm/typings/src/commitments/META_COLOR/META_COLOR.d.ts +48 -0
  102. package/esm/typings/src/commitments/META_FONT/META_FONT.d.ts +42 -0
  103. package/esm/typings/src/{book-2.0/commitments → commitments}/META_IMAGE/META_IMAGE.d.ts +5 -1
  104. package/esm/typings/src/{book-2.0/commitments → commitments}/META_LINK/META_LINK.d.ts +5 -1
  105. package/esm/typings/src/{book-2.0/commitments → commitments}/MODEL/MODEL.d.ts +5 -1
  106. package/esm/typings/src/{book-2.0/commitments → commitments}/NOTE/NOTE.d.ts +5 -1
  107. package/esm/typings/src/commitments/OPEN/OPEN.d.ts +35 -0
  108. package/esm/typings/src/{book-2.0/commitments → commitments}/PERSONA/PERSONA.d.ts +5 -1
  109. package/esm/typings/src/{book-2.0/commitments → commitments}/RULE/RULE.d.ts +5 -1
  110. package/esm/typings/src/{book-2.0/commitments → commitments}/SAMPLE/SAMPLE.d.ts +5 -1
  111. package/esm/typings/src/{book-2.0/commitments → commitments}/SCENARIO/SCENARIO.d.ts +5 -1
  112. package/esm/typings/src/{book-2.0/commitments → commitments}/STYLE/STYLE.d.ts +5 -1
  113. package/esm/typings/src/commitments/USE/USE.d.ts +53 -0
  114. package/esm/typings/src/commitments/USE_BROWSER/USE_BROWSER.d.ts +42 -0
  115. package/esm/typings/src/commitments/USE_BROWSER/USE_BROWSER.test.d.ts +1 -0
  116. package/esm/typings/src/commitments/USE_MCP/USE_MCP.d.ts +37 -0
  117. package/esm/typings/src/commitments/USE_SEARCH_ENGINE/USE_SEARCH_ENGINE.d.ts +38 -0
  118. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/BaseCommitmentDefinition.d.ts +14 -2
  119. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/CommitmentDefinition.d.ts +6 -1
  120. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/NotYetImplementedCommitmentDefinition.d.ts +5 -1
  121. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/createEmptyAgentModelRequirements.d.ts +1 -1
  122. package/esm/typings/src/commitments/index.d.ts +93 -0
  123. package/esm/typings/src/config.d.ts +24 -3
  124. package/esm/typings/src/conversion/validation/validatePipeline.d.ts +2 -0
  125. package/esm/typings/src/errors/0-index.d.ts +6 -0
  126. package/esm/typings/src/errors/DatabaseError.d.ts +12 -0
  127. package/esm/typings/src/errors/NotAllowed.d.ts +9 -0
  128. package/esm/typings/src/errors/WrappedError.d.ts +2 -2
  129. package/esm/typings/src/execution/AvailableModel.d.ts +1 -0
  130. package/esm/typings/src/execution/Executables.d.ts +3 -0
  131. package/esm/typings/src/execution/ExecutionTask.d.ts +12 -3
  132. package/esm/typings/src/execution/ExecutionTools.d.ts +5 -0
  133. package/esm/typings/src/execution/FilesystemTools.d.ts +1 -1
  134. package/esm/typings/src/execution/LlmExecutionTools.d.ts +26 -2
  135. package/esm/typings/src/execution/PromptResult.d.ts +7 -1
  136. package/esm/typings/src/execution/createPipelineExecutor/10-executePipeline.d.ts +5 -0
  137. package/esm/typings/src/execution/createPipelineExecutor/20-executeTask.d.ts +5 -0
  138. package/esm/typings/src/execution/createPipelineExecutor/30-executeFormatSubvalues.d.ts +5 -0
  139. package/esm/typings/src/execution/createPipelineExecutor/40-executeAttempts.d.ts +5 -0
  140. package/esm/typings/src/execution/utils/usage-constants.d.ts +4 -124
  141. package/esm/typings/src/execution/utils/validatePromptResult.d.ts +2 -0
  142. package/esm/typings/src/high-level-abstractions/_common/HighLevelAbstraction.d.ts +2 -1
  143. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForWizardOrCli.d.ts +2 -2
  144. package/esm/typings/src/llm-providers/_common/register/$registeredLlmToolsMessage.d.ts +2 -1
  145. package/esm/typings/src/llm-providers/_common/register/LlmToolsMetadata.d.ts +1 -1
  146. package/esm/typings/src/llm-providers/_common/utils/assertUniqueModels.d.ts +12 -0
  147. package/esm/typings/src/llm-providers/_multiple/getSingleLlmExecutionTools.d.ts +1 -0
  148. package/esm/typings/src/llm-providers/_multiple/joinLlmExecutionTools.d.ts +1 -0
  149. package/esm/typings/src/llm-providers/agent/Agent.d.ts +72 -0
  150. package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +26 -4
  151. package/esm/typings/src/llm-providers/agent/AgentOptions.d.ts +19 -0
  152. package/esm/typings/src/llm-providers/agent/CreateAgentLlmExecutionToolsOptions.d.ts +17 -0
  153. package/esm/typings/src/llm-providers/agent/RemoteAgent.d.ts +50 -0
  154. package/esm/typings/src/llm-providers/agent/RemoteAgentOptions.d.ts +11 -0
  155. package/esm/typings/src/llm-providers/agent/createAgentLlmExecutionTools.d.ts +1 -19
  156. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  157. package/esm/typings/src/llm-providers/google/google-models.d.ts +1 -1
  158. package/esm/typings/src/llm-providers/ollama/OllamaExecutionTools.d.ts +4 -0
  159. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionTools.d.ts +60 -2
  160. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionToolsOptions.d.ts +7 -1
  161. package/esm/typings/src/llm-providers/openai/OpenAiCompatibleExecutionTools.d.ts +13 -1
  162. package/esm/typings/src/llm-providers/openai/OpenAiExecutionTools.d.ts +4 -0
  163. package/esm/typings/src/llm-providers/openai/createOpenAiCompatibleExecutionTools.d.ts +6 -6
  164. package/esm/typings/src/llm-providers/openai/openai-models.d.ts +1 -1
  165. package/esm/typings/src/llm-providers/openai/openai-models.test.d.ts +4 -0
  166. package/esm/typings/src/other/templates/getTemplatesPipelineCollection.d.ts +1 -1
  167. package/esm/typings/src/pipeline/validatePipelineString.d.ts +2 -0
  168. package/esm/typings/src/playground/permanent/_boilerplate.d.ts +5 -0
  169. package/esm/typings/src/playground/permanent/agent-with-browser-playground.d.ts +5 -0
  170. package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +1 -0
  171. package/esm/typings/src/remote-server/startAgentServer.d.ts +26 -0
  172. package/esm/typings/src/remote-server/startRemoteServer.d.ts +4 -1
  173. package/esm/typings/src/remote-server/types/RemoteServerOptions.d.ts +3 -8
  174. package/esm/typings/src/scrapers/_boilerplate/createBoilerplateScraper.d.ts +1 -12
  175. package/esm/typings/src/scrapers/_boilerplate/register-metadata.d.ts +1 -9
  176. package/esm/typings/src/scrapers/document/createDocumentScraper.d.ts +1 -12
  177. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -9
  178. package/esm/typings/src/scrapers/document-legacy/createLegacyDocumentScraper.d.ts +1 -12
  179. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -9
  180. package/esm/typings/src/scrapers/markdown/createMarkdownScraper.d.ts +1 -12
  181. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -9
  182. package/esm/typings/src/scrapers/markitdown/createMarkitdownScraper.d.ts +1 -12
  183. package/esm/typings/src/scrapers/markitdown/register-metadata.d.ts +1 -9
  184. package/esm/typings/src/scrapers/pdf/createPdfScraper.d.ts +1 -12
  185. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +1 -9
  186. package/esm/typings/src/scrapers/website/createWebsiteScraper.d.ts +1 -12
  187. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -9
  188. package/esm/typings/src/storage/_common/PromptbookStorage.d.ts +1 -0
  189. package/esm/typings/src/storage/env-storage/$EnvStorage.d.ts +2 -1
  190. package/esm/typings/src/transpilers/_common/BookTranspiler.d.ts +33 -0
  191. package/esm/typings/src/transpilers/_common/BookTranspilerOptions.d.ts +18 -0
  192. package/esm/typings/src/transpilers/_common/register/$bookTranspilersRegister.d.ts +15 -0
  193. package/esm/typings/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.d.ts +16 -0
  194. package/esm/typings/src/transpilers/formatted-book-in-markdown/register.d.ts +15 -0
  195. package/esm/typings/src/transpilers/openai-sdk/OpenAiSdkTranspiler.d.ts +16 -0
  196. package/esm/typings/src/transpilers/openai-sdk/OpenAiSdkTranspiler.test.d.ts +1 -0
  197. package/esm/typings/src/transpilers/openai-sdk/playground/playground.d.ts +5 -0
  198. package/esm/typings/src/transpilers/openai-sdk/register.d.ts +15 -0
  199. package/esm/typings/src/types/LlmCall.d.ts +20 -0
  200. package/esm/typings/src/types/ModelRequirements.d.ts +13 -1
  201. package/esm/typings/src/types/ModelVariant.d.ts +1 -1
  202. package/esm/typings/src/types/Prompt.d.ts +13 -1
  203. package/esm/typings/src/types/Updatable.d.ts +19 -0
  204. package/esm/typings/src/types/typeAliases.d.ts +38 -2
  205. package/esm/typings/src/utils/color/$randomColor.d.ts +1 -0
  206. package/esm/typings/src/utils/color/Color.d.ts +16 -1
  207. package/esm/typings/src/utils/color/Color.test.d.ts +1 -0
  208. package/esm/typings/src/utils/color/css-colors.d.ts +1 -0
  209. package/esm/typings/src/utils/color/internal-utils/checkChannelValue.d.ts +0 -3
  210. package/esm/typings/src/utils/color/operators/darken.d.ts +1 -1
  211. package/esm/typings/src/utils/color/operators/grayscale.d.ts +1 -1
  212. package/esm/typings/src/utils/color/operators/lighten.d.ts +1 -1
  213. package/esm/typings/src/utils/color/operators/mixWithColor.d.ts +1 -1
  214. package/esm/typings/src/utils/color/operators/saturate.d.ts +1 -1
  215. package/esm/typings/src/utils/environment/$detectRuntimeEnvironment.d.ts +16 -0
  216. package/esm/typings/src/utils/environment/$getGlobalScope.d.ts +2 -2
  217. package/esm/typings/src/utils/execCommand/$execCommand.d.ts +2 -1
  218. package/esm/typings/src/utils/execCommand/$execCommands.d.ts +2 -1
  219. package/esm/typings/src/utils/files/$induceBookDownload.d.ts +13 -0
  220. package/esm/typings/src/utils/files/$induceFileDownload.d.ts +13 -0
  221. package/esm/typings/src/utils/files/ObjectUrl.d.ts +46 -0
  222. package/esm/typings/src/utils/files/listAllFiles.d.ts +2 -3
  223. package/esm/typings/src/utils/misc/aboutPromptbookInformation.d.ts +27 -0
  224. package/esm/typings/src/utils/misc/computeHash.d.ts +11 -0
  225. package/esm/typings/src/utils/misc/computeHash.test.d.ts +1 -0
  226. package/esm/typings/src/utils/misc/injectCssModuleIntoShadowRoot.d.ts +1 -0
  227. package/esm/typings/src/utils/misc/xAboutPromptbookInformation.d.ts +13 -0
  228. package/esm/typings/src/utils/normalization/normalize-to-kebab-case.d.ts +2 -0
  229. package/esm/typings/src/utils/normalization/normalizeMessageText.d.ts +9 -0
  230. package/esm/typings/src/utils/normalization/normalizeMessageText.test.d.ts +1 -0
  231. package/esm/typings/src/utils/normalization/normalizeTo_PascalCase.d.ts +3 -0
  232. package/esm/typings/src/utils/normalization/normalizeTo_camelCase.d.ts +2 -0
  233. package/esm/typings/src/utils/normalization/titleToName.d.ts +2 -0
  234. package/esm/typings/src/utils/organization/$sideEffect.d.ts +2 -2
  235. package/esm/typings/src/utils/organization/$side_effect.d.ts +7 -0
  236. package/esm/typings/src/utils/organization/TODO_USE.d.ts +2 -2
  237. package/esm/typings/src/utils/organization/keepUnused.d.ts +2 -2
  238. package/esm/typings/src/utils/organization/preserve.d.ts +3 -3
  239. package/esm/typings/src/utils/organization/really_any.d.ts +7 -0
  240. package/esm/typings/src/utils/random/$generateBookBoilerplate.d.ts +31 -0
  241. package/esm/typings/src/utils/random/$randomAgentPersona.d.ts +9 -0
  242. package/esm/typings/src/utils/random/$randomFullnameWithColor.d.ts +13 -0
  243. package/esm/typings/src/utils/random/$randomItem.d.ts +9 -0
  244. package/esm/typings/src/utils/random/$randomSeed.d.ts +3 -0
  245. package/esm/typings/src/utils/random/$randomToken.d.ts +2 -0
  246. package/esm/typings/src/utils/random/CzechNamePool.d.ts +7 -0
  247. package/esm/typings/src/utils/random/EnglishNamePool.d.ts +7 -0
  248. package/esm/typings/src/utils/random/NamePool.d.ts +17 -0
  249. package/esm/typings/src/utils/random/getNamePool.d.ts +10 -0
  250. package/esm/typings/src/utils/serialization/$deepFreeze.d.ts +2 -1
  251. package/esm/typings/src/utils/serialization/asSerializable.d.ts +2 -2
  252. package/esm/typings/src/utils/serialization/serializeToPromptbookJavascript.d.ts +2 -2
  253. package/esm/typings/src/utils/validators/parameterName/validateParameterName.d.ts +2 -0
  254. package/esm/typings/src/version.d.ts +1 -1
  255. package/esm/typings/src/wizard/$getCompiledBook.d.ts +1 -2
  256. package/package.json +5 -5
  257. package/umd/index.umd.js +135 -123
  258. package/umd/index.umd.js.map +1 -1
  259. package/esm/typings/src/book-2.0/commitments/index.d.ts +0 -60
  260. package/esm/typings/src/book-components/BookEditor/BookEditorInner.d.ts +0 -5
  261. package/esm/typings/src/book-components/BookEditor/BookEditorWrapper.d.ts +0 -9
  262. package/esm/typings/src/book-components/BookEditor/config.d.ts +0 -10
  263. package/esm/typings/src/book-components/Chat/utils/renderMarkdown.d.ts +0 -21
  264. package/esm/typings/src/collection/collectionToJson.d.ts +0 -13
  265. package/esm/typings/src/collection/constructors/createCollectionFromJson.d.ts +0 -13
  266. /package/esm/typings/src/{book-components/Chat/utils/renderMarkdown.test.d.ts → book-2.0/agent-source/computeAgentHash.test.d.ts} +0 -0
  267. /package/esm/typings/src/{collection/constructors/createCollectionFromDirectory.test.d.ts → book-2.0/agent-source/normalizeAgentName.test.d.ts} +0 -0
  268. /package/esm/typings/src/{collection/constructors/createCollectionFromJson.test.d.ts → book-components/Chat/AgentChat/AgentChat.test.d.ts} +0 -0
  269. /package/esm/typings/src/collection/{constructors/createCollectionFromPromise.test.d.ts → pipeline-collection/constructors/createPipelineCollectionFromDirectory.test.d.ts} +0 -0
  270. /package/esm/typings/src/{commands/_common/parseCommand.test.d.ts → collection/pipeline-collection/constructors/createPipelineCollectionFromJson.test.d.ts} +0 -0
  271. /package/esm/typings/src/collection/{collectionToJson.test.d.ts → pipeline-collection/pipelineCollectionToJson.test.d.ts} +0 -0
  272. /package/esm/typings/src/{book-2.0/commitments → commitments}/_base/BookCommitment.d.ts +0 -0
  273. /package/esm/typings/src/{book-2.0/commitments → commitments}/_base/ParsedCommitment.d.ts +0 -0
package/README.md CHANGED
@@ -9,8 +9,8 @@ Turn your company's scattered knowledge into AI ready Books
9
9
 
10
10
 
11
11
 
12
- [![NPM Version of ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
- [![Quality of package ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
12
+ [![NPM Version of ![Promptbook logo](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
+ [![Quality of package ![Promptbook logo](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
14
14
  [![Known Vulnerabilities](https://snyk.io/test/github/webgptorg/promptbook/badge.svg)](https://snyk.io/test/github/webgptorg/promptbook)
15
15
  [![🧪 Test Books](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml)
16
16
  [![🧪 Test build](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml)
@@ -23,18 +23,10 @@ Turn your company's scattered knowledge into AI ready Books
23
23
 
24
24
  ## 🌟 New Features
25
25
 
26
- - 🚀 **GPT-5 Support** - Now includes OpenAI's most advanced language model with unprecedented reasoning capabilities and 200K context window
27
- - 💡 VS Code support for `.book` files with syntax highlighting and IntelliSense
28
- - 🐳 Official Docker image (`hejny/promptbook`) for seamless containerized usage
29
- - 🔥 Native support for OpenAI `o3-mini`, GPT-4 and other leading LLMs
30
- - 🔍 DeepSeek integration for advanced knowledge search
26
+ - **Gemini 3 Support**
31
27
 
32
28
 
33
29
 
34
- <blockquote style="color: #ff8811">
35
- <b>⚠ Warning:</b> This is a pre-release version of the library. It is not yet ready for production use. Please look at <a href="https://www.npmjs.com/package/@promptbook/core?activeTab=versions">latest stable release</a>.
36
- </blockquote>
37
-
38
30
  ## 📦 Package `@promptbook/javascript`
39
31
 
40
32
  - Promptbooks are [divided into several](#-packages) packages, all are published from [single monorepo](https://github.com/webgptorg/promptbook).
@@ -114,11 +106,15 @@ The main challenge is to narrow it down, constrain it, set the proper **context,
114
106
 
115
107
  Promptbook takes the best from both worlds. You are defining your AI behavior by simple **books**, which are very explicit. They are automatically enforced, but they are very easy to understand, very easy to write, and very reliable and portable.
116
108
 
109
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
110
+
111
+ **<ins>Paul Smith & Associés</ins>**<br/>
112
+ <br/>
113
+ **PERSONA** You are a company lawyer.<br/>
114
+ Your job is to provide legal advice and support to the company and its employees.<br/>
115
+ You are knowledgeable, professional, and detail-oriented.<br/>
117
116
 
118
- <img
119
- alt="Paul Smith & Associés Book"
120
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.&width=800&height=450&nonce=0"
121
- />
117
+ </td></tr></table>
122
118
 
123
119
  <div style="page-break-after: always;"></div>
124
120
 
@@ -132,11 +128,15 @@ You can look at it as prompting (or writing a system message), but decorated by
132
128
 
133
129
  Personas define the character of your AI persona, its role, and how it should interact with users. It sets the tone and style of communication.
134
130
 
131
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
135
132
 
136
- <img
137
- alt="Paul Smith & Associés Book"
138
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.&width=800&height=450&nonce=0"
139
- />
133
+ **<ins>Paul Smith & Associés</ins>**<br/>
134
+ <br/>
135
+ **PERSONA** You are a company lawyer.<br/>
136
+ Your job is to provide legal advice and support to the company and its employees.<br/>
137
+ You are knowledgeable, professional, and detail-oriented.<br/>
138
+
139
+ </td></tr></table>
140
140
 
141
141
  #### `Knowledge` commitment
142
142
 
@@ -146,11 +146,18 @@ This can include domain-specific knowledge, company policies, or any other relev
146
146
 
147
147
  Promptbook Engine will automatically enforce this knowledge during interactions. When the knowledge is short enough, it will be included in the prompt. When it is too long, it will be stored in vector databases and RAG retrieved when needed. But you don't need to care about it.
148
148
 
149
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
150
+
151
+ **<ins>Paul Smith & Associés</ins>**<br/>
152
+ <br/>
153
+ **PERSONA** You are a company lawyer.<br/>
154
+ Your job is to provide legal advice and support to the company and its employees.<br/>
155
+ You are knowledgeable, professional, and detail-oriented.<br/>
156
+ <br/>
157
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
158
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
149
159
 
150
- <img
151
- alt="Paul Smith & Associés Book"
152
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx&width=800&height=450&nonce=0"
153
- />
160
+ </td></tr></table>
154
161
 
155
162
  #### `Rule` commitment
156
163
 
@@ -158,21 +165,42 @@ Rules will enforce specific behaviors or constraints on the AI's responses. This
158
165
 
159
166
  Depending on rule strictness, Promptbook will either propagate it to the prompt or use other techniques, like adversary agent, to enforce it.
160
167
 
168
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
161
169
 
162
- <img
163
- alt="Paul Smith & Associés Book"
164
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20RULE%20Always%20ensure%20compliance%20with%20laws%20and%20regulations.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20outside%20your%20area%20of%20expertise.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20about%20criminal%20law.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx&width=800&height=450&nonce=0"
165
- />
170
+ **<ins>Paul Smith & Associés</ins>**<br/>
171
+ <br/>
172
+ **PERSONA** You are a company lawyer.<br/>
173
+ Your job is to provide legal advice and support to the company and its employees.<br/>
174
+ You are knowledgeable, professional, and detail-oriented.<br/>
175
+ <br/>
176
+ **RULE** Always ensure compliance with laws and regulations.<br/>
177
+ **RULE** Never provide legal advice outside your area of expertise.<br/>
178
+ **RULE** Never provide legal advice about criminal law.<br/>
179
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
180
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
181
+
182
+ </td></tr></table>
166
183
 
167
184
  #### `Action` commitment
168
185
 
169
186
  Action Commitment allows you to define specific actions that the AI can take during interactions. This can include things like posting on a social media platform, sending emails, creating calendar events, or interacting with your internal systems.
170
187
 
188
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
189
+
190
+ **<ins>Paul Smith & Associés</ins>**<br/>
191
+ <br/>
192
+ **PERSONA** You are a company lawyer.<br/>
193
+ Your job is to provide legal advice and support to the company and its employees.<br/>
194
+ You are knowledgeable, professional, and detail-oriented.<br/>
195
+ <br/>
196
+ **RULE** Always ensure compliance with laws and regulations.<br/>
197
+ **RULE** Never provide legal advice outside your area of expertise.<br/>
198
+ **RULE** Never provide legal advice about criminal law.<br/>
199
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
200
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
201
+ **ACTION** When a user asks about an issue that could be treated as a crime, notify legal@company.com.<br/>
171
202
 
172
- <img
173
- alt="Paul Smith & Associés Book"
174
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20RULE%20Always%20ensure%20compliance%20with%20laws%20and%20regulations.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20outside%20your%20area%20of%20expertise.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20about%20criminal%20law.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx%0A%20%20%20%20%20%20%7C%20ACTION%20When%20a%20user%20asks%20about%20an%20issue%20that%20could%20be%20treated%20as%20a%20crime%2C%20notify%20legal%40company.com.&width=800&height=450&nonce=0"
175
- />
203
+ </td></tr></table>
176
204
 
177
205
  [Read more about the language](./BLUEPRINT.md)
178
206
 
@@ -219,14 +247,10 @@ Now you want to use it. There are several ways how to write your first book:
219
247
 
220
248
  We have written ai asistant in book who can help you with writing your first book.
221
249
 
222
-
223
-
224
250
  #### Your AI twin
225
251
 
226
252
  Copy your own behavior, personality, and knowledge into book and create your AI twin. It can help you with your work, personal life, or any other task.
227
253
 
228
-
229
-
230
254
  #### AI persona workpool
231
255
 
232
256
  Or you can pick from our library of pre-written books for various roles and tasks. You can find books for customer support, coding, marketing, sales, HR, legal, and many other roles.
@@ -346,8 +370,6 @@ Join our growing community of developers and users:
346
370
 
347
371
 
348
372
 
349
-
350
-
351
373
  ## 📚 Documentation
352
374
 
353
375
  See detailed guides and API reference in the [docs](https://github.com/webgptorg/promptbook/discussions/categories/concepts) or [online](https://discord.gg/x3QWNaa89N).
@@ -424,8 +446,6 @@ The following glossary is used to clarify certain concepts:
424
446
 
425
447
  _Note: This section is not a complete dictionary, more list of general AI / LLM terms that has connection with Promptbook_
426
448
 
427
-
428
-
429
449
  ### 💯 Core concepts
430
450
 
431
451
  - [📚 Collection of pipelines](https://github.com/webgptorg/promptbook/discussions/65)
package/esm/index.es.js CHANGED
@@ -1,6 +1,8 @@
1
- import spaceTrim, { spaceTrim as spaceTrim$1 } from 'spacetrim';
1
+ import spaceTrim$2, { spaceTrim as spaceTrim$1 } from 'spacetrim';
2
2
  import 'path';
3
3
  import { randomBytes } from 'crypto';
4
+ import 'crypto-js';
5
+ import 'crypto-js/enc-hex';
4
6
 
5
7
  // ⚠️ WARNING: This code has been generated so that any manual changes will be overwritten
6
8
  /**
@@ -9,19 +11,30 @@ import { randomBytes } from 'crypto';
9
11
  * @generated
10
12
  * @see https://github.com/webgptorg/book
11
13
  */
12
- const BOOK_LANGUAGE_VERSION = '1.0.0';
14
+ const BOOK_LANGUAGE_VERSION = '2.0.0';
13
15
  /**
14
16
  * The version of the Promptbook engine
15
17
  *
16
18
  * @generated
17
19
  * @see https://github.com/webgptorg/promptbook
18
20
  */
19
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-9';
21
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0';
20
22
  /**
21
23
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
22
24
  * Note: [💞] Ignore a discrepancy between file name and entity name
23
25
  */
24
26
 
27
+ /**
28
+ * Trims string from all 4 sides
29
+ *
30
+ * Note: This is a re-exported function from the `spacetrim` package which is
31
+ * Developed by same author @hejny as this package
32
+ *
33
+ * @public exported from `@promptbook/utils`
34
+ * @see https://github.com/hejny/spacetrim#usage
35
+ */
36
+ const spaceTrim = spaceTrim$1;
37
+
25
38
  /**
26
39
  * @private util of `@promptbook/color`
27
40
  * @de
@@ -70,6 +83,7 @@ function take(initialValue) {
70
83
  * @public exported from `@promptbook/color`
71
84
  */
72
85
  const CSS_COLORS = {
86
+ promptbook: '#79EAFD',
73
87
  transparent: 'rgba(0,0,0,0)',
74
88
  aliceblue: '#f0f8ff',
75
89
  antiquewhite: '#faebd7',
@@ -251,9 +265,6 @@ function checkChannelValue(channelName, value) {
251
265
  throw new Error(`${channelName} channel is greater than 255, it is ${value}`);
252
266
  }
253
267
  }
254
- /**
255
- * TODO: [🧠][🚓] Is/which combination it better to use asserts/check, validate or is utility function?
256
- */
257
268
 
258
269
  /**
259
270
  * Color object represents an RGB color with alpha channel
@@ -273,21 +284,61 @@ class Color {
273
284
  * @param color
274
285
  * @returns Color object
275
286
  */
276
- static from(color) {
277
- if (color instanceof Color) {
287
+ static from(color, _isSingleValue = false) {
288
+ if (color === '') {
289
+ throw new Error(`Can not create color from empty string`);
290
+ }
291
+ else if (color instanceof Color) {
278
292
  return take(color);
279
293
  }
280
294
  else if (Color.isColor(color)) {
281
295
  return take(color);
282
296
  }
283
297
  else if (typeof color === 'string') {
284
- return Color.fromString(color);
298
+ try {
299
+ return Color.fromString(color);
300
+ }
301
+ catch (error) {
302
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
303
+ if (_isSingleValue) {
304
+ throw error;
305
+ }
306
+ const parts = color.split(/[\s+,;|]/);
307
+ if (parts.length > 0) {
308
+ return Color.from(parts[0].trim(), true);
309
+ }
310
+ else {
311
+ throw new Error(`Can not create color from given string "${color}"`);
312
+ }
313
+ }
285
314
  }
286
315
  else {
287
316
  console.error({ color });
288
317
  throw new Error(`Can not create color from given object`);
289
318
  }
290
319
  }
320
+ /**
321
+ * Creates a new Color instance from miscellaneous formats
322
+ * It just does not throw error when it fails, it returns PROMPTBOOK_COLOR instead
323
+ *
324
+ * @param color
325
+ * @returns Color object
326
+ */
327
+ static fromSafe(color) {
328
+ try {
329
+ return Color.from(color);
330
+ }
331
+ catch (error) {
332
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
333
+ console.warn(spaceTrim((block) => `
334
+ Color.fromSafe error:
335
+ ${block(error.message)}
336
+
337
+ Returning default PROMPTBOOK_COLOR.
338
+ `));
339
+ return Color.fromString('promptbook');
340
+ }
341
+ }
291
342
  /**
292
343
  * Creates a new Color instance from miscellaneous string formats
293
344
  *
@@ -355,6 +406,9 @@ class Color {
355
406
  if (hex.length === 3) {
356
407
  return Color.fromHex3(hex);
357
408
  }
409
+ if (hex.length === 4) {
410
+ return Color.fromHex4(hex);
411
+ }
358
412
  if (hex.length === 6) {
359
413
  return Color.fromHex6(hex);
360
414
  }
@@ -375,6 +429,19 @@ class Color {
375
429
  const b = parseInt(hex.substr(2, 1), 16) * 16;
376
430
  return take(new Color(r, g, b));
377
431
  }
432
+ /**
433
+ * Creates a new Color instance from color in hex format with 4 digits (with alpha channel)
434
+ *
435
+ * @param color in hex for example `09df`
436
+ * @returns Color object
437
+ */
438
+ static fromHex4(hex) {
439
+ const r = parseInt(hex.substr(0, 1), 16) * 16;
440
+ const g = parseInt(hex.substr(1, 1), 16) * 16;
441
+ const b = parseInt(hex.substr(2, 1), 16) * 16;
442
+ const a = parseInt(hex.substr(3, 1), 16) * 16;
443
+ return take(new Color(r, g, b, a));
444
+ }
378
445
  /**
379
446
  * Creates a new Color instance from color in hex format with 6 color digits (without alpha channel)
380
447
  *
@@ -565,7 +632,8 @@ class Color {
565
632
  * @returns true if the value is a valid hex color string (e.g., `#009edd`, `#fff`, etc.)
566
633
  */
567
634
  static isHexColorString(value) {
568
- return typeof value === 'string' && /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value);
635
+ return (typeof value === 'string' &&
636
+ /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value));
569
637
  }
570
638
  /**
571
639
  * Creates new Color object
@@ -680,6 +748,23 @@ class Color {
680
748
  * TODO: Maybe connect with textures
681
749
  */
682
750
 
751
+ /**
752
+ * Makes color transformer which returns a grayscale version of the color
753
+ *
754
+ * @param amount from 0 to 1
755
+ *
756
+ * @public exported from `@promptbook/color`
757
+ */
758
+ function grayscale(amount) {
759
+ return ({ red, green, blue, alpha }) => {
760
+ const average = (red + green + blue) / 3;
761
+ red = Math.round(average * amount + red * (1 - amount));
762
+ green = Math.round(average * amount + green * (1 - amount));
763
+ blue = Math.round(average * amount + blue * (1 - amount));
764
+ return Color.fromValues(red, green, blue, alpha);
765
+ };
766
+ }
767
+
683
768
  /**
684
769
  * Converts HSL values to RGB values
685
770
  *
@@ -795,102 +880,6 @@ function lighten(amount) {
795
880
  * TODO: Maybe implement by mix+hsl
796
881
  */
797
882
 
798
- /**
799
- * Calculates distance between two colors
800
- *
801
- * @param color1 first color
802
- * @param color2 second color
803
- *
804
- * Note: This function is inefficient. Use colorDistanceSquared instead if possible.
805
- *
806
- * @public exported from `@promptbook/color`
807
- */
808
- /**
809
- * Calculates distance between two colors without square root
810
- *
811
- * @param color1 first color
812
- * @param color2 second color
813
- *
814
- * @public exported from `@promptbook/color`
815
- */
816
- function colorDistanceSquared(color1, color2) {
817
- const rmean = (color1.red + color2.red) / 2;
818
- const r = color1.red - color2.red;
819
- const g = color1.green - color2.green;
820
- const b = color1.blue - color2.blue;
821
- const weightR = 2 + rmean / 256;
822
- const weightG = 4.0;
823
- const weightB = 2 + (255 - rmean) / 256;
824
- const distance = weightR * r * r + weightG * g * g + weightB * b * b;
825
- return distance;
826
- }
827
-
828
- /**
829
- * Makes color transformer which finds the nearest color from the given list
830
- *
831
- * @param colors array of colors to choose from
832
- *
833
- * @public exported from `@promptbook/color`
834
- */
835
- function nearest(...colors) {
836
- return (color) => {
837
- const distances = colors.map((c) => colorDistanceSquared(c, color));
838
- const minDistance = Math.min(...distances);
839
- const minIndex = distances.indexOf(minDistance);
840
- const nearestColor = colors[minIndex];
841
- return nearestColor;
842
- };
843
- }
844
-
845
- /**
846
- * Color transformer which returns the negative color
847
- *
848
- * @public exported from `@promptbook/color`
849
- */
850
- function negative(color) {
851
- const r = 255 - color.red;
852
- const g = 255 - color.green;
853
- const b = 255 - color.blue;
854
- return Color.fromValues(r, g, b, color.alpha);
855
- }
856
-
857
- /**
858
- * Makes color transformer which finds the furthest color from the given list
859
- *
860
- * @param colors array of colors to choose from
861
- *
862
- * @public exported from `@promptbook/color`
863
- */
864
- function furthest(...colors) {
865
- return (color) => {
866
- const furthestColor = negative(nearest(...colors.map(negative))(color));
867
- return furthestColor;
868
- };
869
- }
870
- /**
871
- * Makes color transformer which finds the best text color (black or white) for the given background color
872
- *
873
- * @public exported from `@promptbook/color`
874
- */
875
- furthest(Color.get('white'), Color.from('black'));
876
-
877
- /**
878
- * Makes color transformer which returns a grayscale version of the color
879
- *
880
- * @param amount from 0 to 1
881
- *
882
- * @public exported from `@promptbook/color`
883
- */
884
- function grayscale(amount) {
885
- return ({ red, green, blue, alpha }) => {
886
- const average = (red + green + blue) / 3;
887
- red = Math.round(average * amount + red * (1 - amount));
888
- green = Math.round(average * amount + green * (1 - amount));
889
- blue = Math.round(average * amount + blue * (1 - amount));
890
- return Color.fromValues(red, green, blue, alpha);
891
- };
892
- }
893
-
894
883
  /**
895
884
  * Makes color transformer which saturate the given color
896
885
  *
@@ -939,16 +928,32 @@ const ADMIN_GITHUB_NAME = 'hejny';
939
928
  *
940
929
  * @public exported from `@promptbook/core`
941
930
  */
942
- const PROMPTBOOK_COLOR = Color.fromHex('#79EAFD');
943
- // <- TODO: [🧠] Using `Color` here increases the package size approx 3kb, maybe remove it
931
+ const PROMPTBOOK_COLOR = Color.fromString('promptbook');
932
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
933
+ /**
934
+ * Colors for syntax highlighting in the `<BookEditor/>`
935
+ *
936
+ * TODO: [🗽] Unite branding and make single place for it
937
+ *
938
+ * @public exported from `@promptbook/core`
939
+ */
940
+ ({
941
+ TITLE: Color.fromHex('#244EA8'),
942
+ LINE: Color.fromHex('#eeeeee'),
943
+ SEPARATOR: Color.fromHex('#cccccc'),
944
+ COMMITMENT: Color.fromHex('#DA0F78'),
945
+ PARAMETER: Color.fromHex('#8e44ad'),
946
+ });
947
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
944
948
  /**
945
- * Dark color of the Promptbook
949
+ * Chat color of the Promptbook (in chat)
946
950
  *
947
951
  * TODO: [🗽] Unite branding and make single place for it
948
952
  *
949
953
  * @public exported from `@promptbook/core`
950
954
  */
951
955
  PROMPTBOOK_COLOR.then(lighten(0.1)).then(saturate(0.9)).then(grayscale(0.9));
956
+ // <- TODO: [🧠][🈵] Using `Color` and `lighten`, `saturate`,... here increases the package size approx 3kb, maybe remove it
952
957
  /**
953
958
  * Color of the user (in chat)
954
959
  *
@@ -1059,7 +1064,7 @@ function $deepFreeze(objectValue) {
1059
1064
  function getErrorReportUrl(error) {
1060
1065
  const report = {
1061
1066
  title: `🐜 Error report from ${NAME}`,
1062
- body: spaceTrim((block) => `
1067
+ body: spaceTrim$2((block) => `
1063
1068
 
1064
1069
 
1065
1070
  \`${error.name || 'Error'}\` has occurred in the [${NAME}], please look into it @${ADMIN_GITHUB_NAME}.
@@ -1217,7 +1222,7 @@ function checkSerializableAsJson(options) {
1217
1222
  }
1218
1223
  else if (typeof value === 'object') {
1219
1224
  if (value instanceof Date) {
1220
- throw new UnexpectedError(spaceTrim((block) => `
1225
+ throw new UnexpectedError(spaceTrim$2((block) => `
1221
1226
  \`${name}\` is Date
1222
1227
 
1223
1228
  Use \`string_date_iso8601\` instead
@@ -1236,7 +1241,7 @@ function checkSerializableAsJson(options) {
1236
1241
  throw new UnexpectedError(`${name} is RegExp`);
1237
1242
  }
1238
1243
  else if (value instanceof Error) {
1239
- throw new UnexpectedError(spaceTrim((block) => `
1244
+ throw new UnexpectedError(spaceTrim$2((block) => `
1240
1245
  \`${name}\` is unserialized Error
1241
1246
 
1242
1247
  Use function \`serializeError\`
@@ -1259,7 +1264,7 @@ function checkSerializableAsJson(options) {
1259
1264
  }
1260
1265
  catch (error) {
1261
1266
  assertsError(error);
1262
- throw new UnexpectedError(spaceTrim((block) => `
1267
+ throw new UnexpectedError(spaceTrim$2((block) => `
1263
1268
  \`${name}\` is not serializable
1264
1269
 
1265
1270
  ${block(error.stack || error.message)}
@@ -1291,7 +1296,7 @@ function checkSerializableAsJson(options) {
1291
1296
  }
1292
1297
  }
1293
1298
  else {
1294
- throw new UnexpectedError(spaceTrim((block) => `
1299
+ throw new UnexpectedError(spaceTrim$2((block) => `
1295
1300
  \`${name}\` is unknown type
1296
1301
 
1297
1302
  Additional message for \`${name}\`:
@@ -1321,7 +1326,7 @@ function deepClone(objectValue) {
1321
1326
  TODO: [🧠] Is there a better implementation?
1322
1327
  > const propertyNames = Object.getOwnPropertyNames(objectValue);
1323
1328
  > for (const propertyName of propertyNames) {
1324
- > const value = (objectValue as really_any)[propertyName];
1329
+ > const value = (objectValue as chococake)[propertyName];
1325
1330
  > if (value && typeof value === 'object') {
1326
1331
  > deepClone(value);
1327
1332
  > }
@@ -1394,6 +1399,8 @@ exportJson({
1394
1399
  /**
1395
1400
  * Normalizes a given text to camelCase format.
1396
1401
  *
1402
+ * Note: [🔂] This function is idempotent.
1403
+ *
1397
1404
  * @param text The text to be normalized.
1398
1405
  * @param _isFirstLetterCapital Whether the first letter should be capitalized.
1399
1406
  * @returns The camelCase formatted string.
@@ -1709,6 +1716,8 @@ function removeDiacritics(input) {
1709
1716
  /**
1710
1717
  * Converts a given text to kebab-case format.
1711
1718
  *
1719
+ * Note: [🔂] This function is idempotent.
1720
+ *
1712
1721
  * @param text The text to be converted.
1713
1722
  * @returns The kebab-case formatted string.
1714
1723
  * @example 'hello-world'
@@ -1794,6 +1803,7 @@ class ParseError extends Error {
1794
1803
  /**
1795
1804
  * Generates random token
1796
1805
  *
1806
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
1797
1807
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
1798
1808
  *
1799
1809
  * @private internal helper function
@@ -1803,6 +1813,7 @@ function $randomToken(randomness) {
1803
1813
  return randomBytes(randomness).toString('hex');
1804
1814
  }
1805
1815
  /**
1816
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
1806
1817
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
1807
1818
  */
1808
1819
 
@@ -2136,6 +2147,9 @@ function nameToUriParts(name) {
2136
2147
  }
2137
2148
 
2138
2149
  /**
2150
+ * Normalizes a given text to PascalCase format.
2151
+ *
2152
+ * Note: [🔂] This function is idempotent.
2139
2153
  *
2140
2154
  * @param text @public exported from `@promptbook/utils`
2141
2155
  * @returns
@@ -2353,7 +2367,7 @@ function extractAllBlocksFromMarkdown(markdown) {
2353
2367
  function extractOneBlockFromMarkdown(markdown) {
2354
2368
  const codeBlocks = extractAllBlocksFromMarkdown(markdown);
2355
2369
  if (codeBlocks.length !== 1) {
2356
- throw new ParseError(spaceTrim((block) => `
2370
+ throw new ParseError(spaceTrim$2((block) => `
2357
2371
  There should be exactly 1 code block in task section, found ${codeBlocks.length} code blocks
2358
2372
 
2359
2373
  ${block(codeBlocks.map((block, i) => `Block ${i + 1}:\n${block.content}`).join('\n\n\n'))}
@@ -2474,8 +2488,8 @@ class JavascriptEvalExecutionTools {
2474
2488
  }
2475
2489
  // Note: [💎]
2476
2490
  // Note: Using direct eval, following variables are in same scope as eval call so they are accessible from inside the evaluated script:
2477
- const spaceTrim$1 = (_) => spaceTrim(_);
2478
- $preserve(spaceTrim$1);
2491
+ const spaceTrim = (_) => spaceTrim$2(_);
2492
+ $preserve(spaceTrim);
2479
2493
  const removeQuotes$1 = removeQuotes;
2480
2494
  $preserve(removeQuotes$1);
2481
2495
  const unwrapResult$1 = unwrapResult;
@@ -2528,7 +2542,7 @@ class JavascriptEvalExecutionTools {
2528
2542
  // TODO: DRY [🍯]
2529
2543
  const buildinFunctions = {
2530
2544
  // TODO: [🍯] DRY all these functions across the file
2531
- spaceTrim: spaceTrim$1,
2545
+ spaceTrim,
2532
2546
  removeQuotes: removeQuotes$1,
2533
2547
  unwrapResult: unwrapResult$1,
2534
2548
  trimEndOfCodeBlock: trimEndOfCodeBlock$1,
@@ -2565,7 +2579,7 @@ class JavascriptEvalExecutionTools {
2565
2579
  .join('\n');
2566
2580
  // script = templateParameters(script, parameters);
2567
2581
  // <- TODO: [🧠][🥳] Should be this is one of two variants how to use parameters in script
2568
- const statementToEvaluate = spaceTrim((block) => `
2582
+ const statementToEvaluate = spaceTrim$2((block) => `
2569
2583
 
2570
2584
  // Build-in functions:
2571
2585
  ${block(buildinFunctionsStatement)}
@@ -2580,7 +2594,7 @@ class JavascriptEvalExecutionTools {
2580
2594
  (()=>{ ${script} })()
2581
2595
  `);
2582
2596
  if (this.options.isVerbose) {
2583
- console.info(spaceTrim((block) => `
2597
+ console.info(spaceTrim$2((block) => `
2584
2598
  🚀 Evaluating ${scriptLanguage} script:
2585
2599
 
2586
2600
  ${block(statementToEvaluate)}`));
@@ -2602,7 +2616,7 @@ class JavascriptEvalExecutionTools {
2602
2616
  To: [PipelineExecutionError: Parameter `{thing}` is not defined],
2603
2617
  */
2604
2618
  if (!statementToEvaluate.includes(undefinedName + '(')) {
2605
- throw new PipelineExecutionError(spaceTrim((block) => `
2619
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
2606
2620
 
2607
2621
  Parameter \`{${undefinedName}}\` is not defined
2608
2622
 
@@ -2624,7 +2638,7 @@ class JavascriptEvalExecutionTools {
2624
2638
  `));
2625
2639
  }
2626
2640
  else {
2627
- throw new PipelineExecutionError(spaceTrim((block) => `
2641
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
2628
2642
  Function ${undefinedName}() is not defined
2629
2643
 
2630
2644
  - Make sure that the function is one of built-in functions
@@ -2674,7 +2688,7 @@ const reverse = (str) => str.split('').reverse().join('');
2674
2688
  * @public exported from `@promptbook/javascript`
2675
2689
  */
2676
2690
  const POSTPROCESSING_FUNCTIONS = {
2677
- spaceTrim,
2691
+ spaceTrim: spaceTrim$2,
2678
2692
  removeQuotes,
2679
2693
  unwrapResult,
2680
2694
  trimEndOfCodeBlock,