@promptbook/utils 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 +225 -143
  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 -4
  257. package/umd/index.umd.js +209 -125
  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/esm/index.es.js CHANGED
@@ -1,6 +1,8 @@
1
- import spaceTrim$1, { spaceTrim as spaceTrim$2 } from 'spacetrim';
1
+ import spaceTrim$2, { spaceTrim as spaceTrim$1 } from 'spacetrim';
2
2
  import { basename } from 'path';
3
3
  import { randomBytes } from 'crypto';
4
+ import { SHA256 } from 'crypto-js';
5
+ import hexEncoder from '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
944
933
  /**
945
- * Dark color of the Promptbook
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
948
+ /**
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$1((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}.
@@ -1102,7 +1107,7 @@ function getErrorReportUrl(error) {
1102
1107
  */
1103
1108
  class UnexpectedError extends Error {
1104
1109
  constructor(message) {
1105
- super(spaceTrim$2((block) => `
1110
+ super(spaceTrim$1((block) => `
1106
1111
  ${block(message)}
1107
1112
 
1108
1113
  Note: This error should not happen.
@@ -1128,7 +1133,7 @@ class WrappedError extends Error {
1128
1133
  constructor(whatWasThrown) {
1129
1134
  const tag = `[🤮]`;
1130
1135
  console.error(tag, whatWasThrown);
1131
- super(spaceTrim$2(`
1136
+ super(spaceTrim$1(`
1132
1137
  Non-Error object was thrown
1133
1138
 
1134
1139
  Note: Look for ${tag} in the console for more details
@@ -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$1((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$1((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$1((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$1((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
  > }
@@ -1412,6 +1417,8 @@ const RESERVED_PARAMETER_NAMES = exportJson({
1412
1417
  /**
1413
1418
  * Normalizes a given text to camelCase format.
1414
1419
  *
1420
+ * Note: [🔂] This function is idempotent.
1421
+ *
1415
1422
  * @param text The text to be normalized.
1416
1423
  * @param _isFirstLetterCapital Whether the first letter should be capitalized.
1417
1424
  * @returns The camelCase formatted string.
@@ -1813,6 +1820,8 @@ function removeDiacritics(input) {
1813
1820
  /**
1814
1821
  * Converts a given text to kebab-case format.
1815
1822
  *
1823
+ * Note: [🔂] This function is idempotent.
1824
+ *
1816
1825
  * @param text The text to be converted.
1817
1826
  * @returns The kebab-case formatted string.
1818
1827
  * @example 'hello-world'
@@ -1882,6 +1891,8 @@ function removeEmojis(text) {
1882
1891
  /**
1883
1892
  * Converts a title string into a normalized name.
1884
1893
  *
1894
+ * Note: [🔂] This function is idempotent.
1895
+ *
1885
1896
  * @param value The title string to be converted to a name.
1886
1897
  * @returns A normalized name derived from the input title.
1887
1898
  * @example 'Hello World!' -> 'hello-world'
@@ -1969,7 +1980,7 @@ function renderPromptbookMermaid(pipelineJson, options) {
1969
1980
  .filter(([MERMAID_NAME]) => (inputAndIntermediateParametersMermaid + outputParametersMermaid).includes(MERMAID_NAME))
1970
1981
  .map(([MERMAID_NAME, title]) => `${MERMAID_NAME}((${title})):::${MERMAID_NAME}`)
1971
1982
  .join('\n');
1972
- const promptbookMermaid = spaceTrim$2((block) => `
1983
+ const promptbookMermaid = spaceTrim$1((block) => `
1973
1984
 
1974
1985
  %% 🔮 Tip: Open this on GitHub or in the VSCode website to see the Mermaid graph visually
1975
1986
 
@@ -2067,6 +2078,22 @@ class CollectionError extends Error {
2067
2078
  }
2068
2079
  }
2069
2080
 
2081
+ /**
2082
+ * This error indicates error from the database
2083
+ *
2084
+ * @public exported from `@promptbook/core`
2085
+ */
2086
+ class DatabaseError extends Error {
2087
+ constructor(message) {
2088
+ super(message);
2089
+ this.name = 'DatabaseError';
2090
+ Object.setPrototypeOf(this, DatabaseError.prototype);
2091
+ }
2092
+ }
2093
+ /**
2094
+ * TODO: [🐱‍🚀] Explain that NotFoundError ([🐱‍🚀] and other specific errors) has priority over DatabaseError in some contexts
2095
+ */
2096
+
2070
2097
  /**
2071
2098
  * This error type indicates that you try to use a feature that is not available in the current environment
2072
2099
  *
@@ -2129,7 +2156,7 @@ class LimitReachedError extends Error {
2129
2156
  */
2130
2157
  class MissingToolsError extends Error {
2131
2158
  constructor(message) {
2132
- super(spaceTrim$2((block) => `
2159
+ super(spaceTrim$1((block) => `
2133
2160
  ${block(message)}
2134
2161
 
2135
2162
  Note: You have probably forgot to provide some tools for pipeline execution or preparation
@@ -2140,6 +2167,19 @@ class MissingToolsError extends Error {
2140
2167
  }
2141
2168
  }
2142
2169
 
2170
+ /**
2171
+ * This error indicates that promptbook operation is not allowed
2172
+ *
2173
+ * @public exported from `@promptbook/core`
2174
+ */
2175
+ class NotAllowed extends Error {
2176
+ constructor(message) {
2177
+ super(message);
2178
+ this.name = 'NotAllowed';
2179
+ Object.setPrototypeOf(this, NotAllowed.prototype);
2180
+ }
2181
+ }
2182
+
2143
2183
  /**
2144
2184
  * This error indicates that promptbook not found in the collection
2145
2185
  *
@@ -2160,7 +2200,7 @@ class NotFoundError extends Error {
2160
2200
  */
2161
2201
  class NotYetImplementedError extends Error {
2162
2202
  constructor(message) {
2163
- super(spaceTrim$2((block) => `
2203
+ super(spaceTrim$1((block) => `
2164
2204
  ${block(message)}
2165
2205
 
2166
2206
  Note: This feature is not implemented yet but it will be soon.
@@ -2195,6 +2235,7 @@ class ParseError extends Error {
2195
2235
  /**
2196
2236
  * Generates random token
2197
2237
  *
2238
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
2198
2239
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
2199
2240
  *
2200
2241
  * @private internal helper function
@@ -2204,6 +2245,7 @@ function $randomToken(randomness) {
2204
2245
  return randomBytes(randomness).toString('hex');
2205
2246
  }
2206
2247
  /**
2248
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
2207
2249
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
2208
2250
  */
2209
2251
 
@@ -2289,6 +2331,8 @@ const PROMPTBOOK_ERRORS = {
2289
2331
  PromptbookFetchError,
2290
2332
  UnexpectedError,
2291
2333
  WrappedError,
2334
+ NotAllowed,
2335
+ DatabaseError,
2292
2336
  // TODO: [🪑]> VersionMismatchError,
2293
2337
  };
2294
2338
  /**
@@ -2341,7 +2385,7 @@ function deserializeError(error) {
2341
2385
  message = `${name}: ${message}`;
2342
2386
  }
2343
2387
  if (stack !== undefined && stack !== '') {
2344
- message = spaceTrim$1((block) => `
2388
+ message = spaceTrim$2((block) => `
2345
2389
  ${block(message)}
2346
2390
 
2347
2391
  Original stack trace:
@@ -2362,7 +2406,7 @@ function serializeError(error) {
2362
2406
  const { name, message, stack } = error;
2363
2407
  const { id } = error;
2364
2408
  if (!Object.keys(ALL_ERRORS).includes(name)) {
2365
- console.error(spaceTrim$1((block) => `
2409
+ console.error(spaceTrim$2((block) => `
2366
2410
 
2367
2411
  Cannot serialize error with name "${name}"
2368
2412
 
@@ -2468,7 +2512,7 @@ function jsonParse(value) {
2468
2512
  }
2469
2513
  else if (typeof value !== 'string') {
2470
2514
  console.error('Can not parse JSON from non-string value.', { text: value });
2471
- throw new Error(spaceTrim$1(`
2515
+ throw new Error(spaceTrim$2(`
2472
2516
  Can not parse JSON from non-string value.
2473
2517
 
2474
2518
  The value type: ${typeof value}
@@ -2482,7 +2526,7 @@ function jsonParse(value) {
2482
2526
  if (!(error instanceof Error)) {
2483
2527
  throw error;
2484
2528
  }
2485
- throw new Error(spaceTrim$1((block) => `
2529
+ throw new Error(spaceTrim$2((block) => `
2486
2530
  ${block(error.message)}
2487
2531
 
2488
2532
  The expected JSON text:
@@ -2682,7 +2726,7 @@ function templateParameters(template, parameters) {
2682
2726
  */
2683
2727
  function prompt(strings, ...values) {
2684
2728
  if (values.length === 0) {
2685
- return spaceTrim$1(strings.join(''));
2729
+ return spaceTrim$2(strings.join(''));
2686
2730
  }
2687
2731
  const stringsWithHiddenParameters = strings.map((stringsItem) =>
2688
2732
  // TODO: [0] DRY
@@ -2693,7 +2737,7 @@ function prompt(strings, ...values) {
2693
2737
  let pipelineString = stringsWithHiddenParameters.reduce((result, stringsItem, i) => placeholderParameterNames[i] === undefined
2694
2738
  ? `${result}${stringsItem}`
2695
2739
  : `${result}${stringsItem}{${placeholderParameterNames[i]}}`, '');
2696
- pipelineString = spaceTrim$1(pipelineString);
2740
+ pipelineString = spaceTrim$2(pipelineString);
2697
2741
  try {
2698
2742
  pipelineString = templateParameters(pipelineString, parameters);
2699
2743
  }
@@ -2702,7 +2746,7 @@ function prompt(strings, ...values) {
2702
2746
  throw error;
2703
2747
  }
2704
2748
  console.error({ pipelineString, parameters, placeholderParameterNames, error });
2705
- throw new UnexpectedError(spaceTrim$1((block) => `
2749
+ throw new UnexpectedError(spaceTrim$2((block) => `
2706
2750
  Internal error in prompt template literal
2707
2751
 
2708
2752
  ${block(JSON.stringify({ strings, values }, null, 4))}}
@@ -2810,6 +2854,25 @@ const $isRunningInWebWorker = new Function(`
2810
2854
  * TODO: [🎺]
2811
2855
  */
2812
2856
 
2857
+ /**
2858
+ * Returns information about the current runtime environment
2859
+ *
2860
+ * Note: `$` is used to indicate that this function is not a pure function - it looks at the global object to determine the environments
2861
+ *
2862
+ * @public exported from `@promptbook/utils`
2863
+ */
2864
+ function $detectRuntimeEnvironment() {
2865
+ return {
2866
+ isRunningInBrowser: $isRunningInBrowser(),
2867
+ isRunningInJest: $isRunningInJest(),
2868
+ isRunningInNode: $isRunningInNode(),
2869
+ isRunningInWebWorker: $isRunningInWebWorker(),
2870
+ };
2871
+ }
2872
+ /**
2873
+ * TODO: [🎺] Also detect and report node version here
2874
+ */
2875
+
2813
2876
  /**
2814
2877
  * Number of characters per standard line with 11pt Arial font size.
2815
2878
  *
@@ -2854,10 +2917,13 @@ function countCharacters(text) {
2854
2917
  * @public exported from `@promptbook/utils`
2855
2918
  */
2856
2919
  function countLines(text) {
2920
+ if (text === '') {
2921
+ return 0;
2922
+ }
2857
2923
  text = text.replace('\r\n', '\n');
2858
2924
  text = text.replace('\r', '\n');
2859
2925
  const lines = text.split('\n');
2860
- return lines.reduce((count, line) => count + Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 0);
2926
+ return lines.reduce((count, line) => count + Math.max(Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 1), 0);
2861
2927
  }
2862
2928
  /**
2863
2929
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
@@ -2961,6 +3027,18 @@ function $getCurrentDate() {
2961
3027
  return new Date().toISOString();
2962
3028
  }
2963
3029
 
3030
+ /**
3031
+ * Computes SHA-256 hash of the given object
3032
+ *
3033
+ * @public exported from `@promptbook/utils`
3034
+ */
3035
+ function computeHash(value) {
3036
+ return SHA256(hexEncoder.parse(spaceTrim$2(valueToString(value)))).toString( /* hex */);
3037
+ }
3038
+ /**
3039
+ * TODO: [🥬][🥬] Use this ACRY
3040
+ */
3041
+
2964
3042
  /**
2965
3043
  * @public exported from `@promptbook/utils`
2966
3044
  */
@@ -3187,6 +3265,21 @@ function nameToUriParts(name) {
3187
3265
  }
3188
3266
 
3189
3267
  /**
3268
+ * Normalizes message text for comparison
3269
+ *
3270
+ * @param text The message text to normalize
3271
+ * @returns The normalized message text
3272
+ *
3273
+ * @public exported from `@promptbook/utils`
3274
+ */
3275
+ function normalizeMessageText(text) {
3276
+ return spaceTrim$1(text);
3277
+ }
3278
+
3279
+ /**
3280
+ * Normalizes a given text to PascalCase format.
3281
+ *
3282
+ * Note: [🔂] This function is idempotent.
3190
3283
  *
3191
3284
  * @param text @public exported from `@promptbook/utils`
3192
3285
  * @returns
@@ -3330,7 +3423,7 @@ function unwrapResult(text, options) {
3330
3423
  let trimmedText = text;
3331
3424
  // Remove leading and trailing spaces and newlines
3332
3425
  if (isTrimmed) {
3333
- trimmedText = spaceTrim$2(trimmedText);
3426
+ trimmedText = spaceTrim$1(trimmedText);
3334
3427
  }
3335
3428
  let processedText = trimmedText;
3336
3429
  if (isIntroduceSentenceRemoved) {
@@ -3339,7 +3432,7 @@ function unwrapResult(text, options) {
3339
3432
  // Remove the introduce sentence and quotes by replacing it with an empty string
3340
3433
  processedText = processedText.replace(introduceSentenceRegex, '');
3341
3434
  }
3342
- processedText = spaceTrim$2(processedText);
3435
+ processedText = spaceTrim$1(processedText);
3343
3436
  }
3344
3437
  if (processedText.length < 3) {
3345
3438
  return trimmedText;
@@ -3383,17 +3476,6 @@ function unwrapResult(text, options) {
3383
3476
  * TODO: [🧠] Should this also unwrap the (parenthesis)
3384
3477
  */
3385
3478
 
3386
- /**
3387
- * Trims string from all 4 sides
3388
- *
3389
- * Note: This is a re-exported function from the `spacetrim` package which is
3390
- * Developed by same author @hejny as this package
3391
- *
3392
- * @public exported from `@promptbook/utils`
3393
- * @see https://github.com/hejny/spacetrim#usage
3394
- */
3395
- const spaceTrim = spaceTrim$2;
3396
-
3397
3479
  /**
3398
3480
  * Parses the task and returns the list of all parameter names
3399
3481
  *
@@ -3531,7 +3613,7 @@ function serializeToPromptbookJavascript(value) {
3531
3613
  imports.push(`import { Color } from '@promptbook/color';`);
3532
3614
  }
3533
3615
  else if (typeof value === 'string') {
3534
- const trimmed = spaceTrim$1(value);
3616
+ const trimmed = spaceTrim$2(value);
3535
3617
  if (trimmed.includes('\n')) {
3536
3618
  // Multiline string -> use `spaceTrim`
3537
3619
  serializedValue = `spaceTrim(\`\n${value.replace(/`/g, '\\`')}\n\`)`;
@@ -3816,5 +3898,5 @@ function isValidUuid(value) {
3816
3898
  return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i.test(value);
3817
3899
  }
3818
3900
 
3819
- export { $deepFreeze, $getCurrentDate, $isRunningInBrowser, $isRunningInJest, $isRunningInNode, $isRunningInWebWorker, BOOK_LANGUAGE_VERSION, CHARACTERS_PER_STANDARD_LINE, CountUtils, DIACRITIC_VARIANTS_LETTERS, LINES_PER_STANDARD_PAGE, PROMPTBOOK_ENGINE_VERSION, SMALL_NUMBER, VALUE_STRINGS, capitalize, checkSerializableAsJson, clonePipeline, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, debounce, decapitalize, deepClone, deserializeError, difference, exportJson, extractParameterNames, forEachAsync, intersection, isHostnameOnPrivateNetwork, isRootPath, isSerializableAsJson, isUrlOnPrivateNetwork, isValidCsvString, isValidEmail, isValidFilePath, isValidJavascriptName, isValidJsonString, isValidKeyword, isValidPipelineUrl, isValidPromptbookVersion, isValidSemanticVersion, isValidUrl, isValidUuid, isValidXmlString, jsonParse, jsonStringsToJsons, nameToUriPart, nameToUriParts, normalizeToKebabCase, normalizeTo_PascalCase, normalizeTo_SCREAMING_CASE, normalizeTo_camelCase, normalizeTo_snake_case, normalizeWhitespaces, numberToString, orderJson, parseKeywords, parseKeywordsFromString, parseNumber, prompt, promptTemplate, removeDiacritics, removeEmojis, removeQuotes, renderPromptbookMermaid, searchKeywords, serializeError, serializeToPromptbookJavascript, spaceTrim, splitIntoSentences, suffixUrl, templateParameters, titleToName, union, unwrapResult, valueToString };
3901
+ export { $deepFreeze, $detectRuntimeEnvironment, $getCurrentDate, $isRunningInBrowser, $isRunningInJest, $isRunningInNode, $isRunningInWebWorker, BOOK_LANGUAGE_VERSION, CHARACTERS_PER_STANDARD_LINE, CountUtils, DIACRITIC_VARIANTS_LETTERS, LINES_PER_STANDARD_PAGE, PROMPTBOOK_ENGINE_VERSION, SMALL_NUMBER, VALUE_STRINGS, capitalize, checkSerializableAsJson, clonePipeline, computeHash, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, debounce, decapitalize, deepClone, deserializeError, difference, exportJson, extractParameterNames, forEachAsync, intersection, isHostnameOnPrivateNetwork, isRootPath, isSerializableAsJson, isUrlOnPrivateNetwork, isValidCsvString, isValidEmail, isValidFilePath, isValidJavascriptName, isValidJsonString, isValidKeyword, isValidPipelineUrl, isValidPromptbookVersion, isValidSemanticVersion, isValidUrl, isValidUuid, isValidXmlString, jsonParse, jsonStringsToJsons, nameToUriPart, nameToUriParts, normalizeMessageText, normalizeToKebabCase, normalizeTo_PascalCase, normalizeTo_SCREAMING_CASE, normalizeTo_camelCase, normalizeTo_snake_case, normalizeWhitespaces, numberToString, orderJson, parseKeywords, parseKeywordsFromString, parseNumber, prompt, promptTemplate, removeDiacritics, removeEmojis, removeQuotes, renderPromptbookMermaid, searchKeywords, serializeError, serializeToPromptbookJavascript, spaceTrim, splitIntoSentences, suffixUrl, templateParameters, titleToName, union, unwrapResult, valueToString };
3820
3902
  //# sourceMappingURL=index.es.js.map