@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
@@ -0,0 +1,17 @@
1
+ import type { string_color, string_person_fullname } from '../../types/typeAliases';
2
+ /**
3
+ * Result of generating a name
4
+ */
5
+ export type GenerateNameResult = {
6
+ fullname: string_person_fullname;
7
+ color: string_color;
8
+ };
9
+ /**
10
+ * Interface for a name pool
11
+ */
12
+ export type NamePool = {
13
+ /**
14
+ * Generates a random name
15
+ */
16
+ generateName(): GenerateNameResult;
17
+ };
@@ -0,0 +1,10 @@
1
+ import type { NamePool } from './NamePool';
2
+ /**
3
+ * Gets the name pool based on the language code
4
+ *
5
+ * @param language - The language code (e.g. 'ENGLISH', 'CZECH')
6
+ * @returns The name pool
7
+ *
8
+ * @private [🍇] Maybe expose via some package
9
+ */
10
+ export declare function getNamePool(language: string): NamePool;
@@ -1,4 +1,5 @@
1
1
  import type { ReadonlyDeep } from 'type-fest';
2
+ import type { $side_effect } from '../organization/$side_effect';
2
3
  /**
3
4
  * Freezes the given object and all its nested objects recursively
4
5
  *
@@ -8,7 +9,7 @@ import type { ReadonlyDeep } from 'type-fest';
8
9
  * @returns The same object as the input, but deeply frozen
9
10
  * @public exported from `@promptbook/utils`
10
11
  */
11
- export declare function $deepFreeze<TObject>(objectValue: TObject): ReadonlyDeep<TObject>;
12
+ export declare function $deepFreeze<TObject>(objectValue: TObject): ReadonlyDeep<$side_effect & TObject>;
12
13
  /**
13
14
  * TODO: [🧠] Is there a way how to meaningfully test this utility
14
15
  */
@@ -1,4 +1,4 @@
1
- import type { really_any } from '../organization/really_any';
1
+ import type { chococake } from '../organization/really_any';
2
2
  /**
3
3
  * Function `asSerializable` will convert values which are not serializable to serializable values
4
4
  * It walks deeply through the object and converts all values
@@ -12,4 +12,4 @@ import type { really_any } from '../organization/really_any';
12
12
  *
13
13
  * @private Internal helper function
14
14
  */
15
- export declare function asSerializable(value: really_any): really_any;
15
+ export declare function asSerializable(value: chococake): chococake;
@@ -1,5 +1,5 @@
1
- import { string_javascript } from '../../types/typeAliases';
2
- import { TODO_any } from '../organization/TODO_any';
1
+ import type { string_javascript } from '../../types/typeAliases';
2
+ import type { TODO_any } from '../organization/TODO_any';
3
3
  type SerializeToPromptbookJavascriptReturn = {
4
4
  /**
5
5
  * Array of import statements required for the `value` to work
@@ -3,6 +3,8 @@ import type { string_parameter_name } from '../../../types/typeAliases';
3
3
  * Function `validateParameterName` will normalize and validate a parameter name for use in pipelines.
4
4
  * It removes diacritics, emojis, and quotes, normalizes to camelCase, and checks for reserved names and invalid characters.
5
5
  *
6
+ * Note: [🔂] This function is idempotent.
7
+ *
6
8
  * @param parameterName The parameter name to validate and normalize.
7
9
  * @returns The validated and normalized parameter name.
8
10
  * @throws {ParseError} If the parameter name is empty, reserved, or contains invalid characters.
@@ -15,7 +15,7 @@ export declare const BOOK_LANGUAGE_VERSION: string_semantic_version;
15
15
  export declare const PROMPTBOOK_ENGINE_VERSION: string_promptbook_version;
16
16
  /**
17
17
  * Represents the version string of the Promptbook engine.
18
- * It follows semantic versioning (e.g., `0.103.0-8`).
18
+ * It follows semantic versioning (e.g., `0.103.0-68`).
19
19
  *
20
20
  * @generated
21
21
  */
@@ -2,8 +2,7 @@ import type { ExecutionTools } from '../execution/ExecutionTools';
2
2
  import type { PipelineJson } from '../pipeline/PipelineJson/PipelineJson';
3
3
  import type { PipelineString } from '../pipeline/PipelineString';
4
4
  import type { PrepareAndScrapeOptions } from '../prepare/PrepareAndScrapeOptions';
5
- import type { string_filename } from '../types/typeAliases';
6
- import type { string_pipeline_url } from '../types/typeAliases';
5
+ import type { string_filename, string_pipeline_url } from '../types/typeAliases';
7
6
  /**
8
7
  * @see ./wizard.ts `getPipeline` method
9
8
  *
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@promptbook/utils",
3
- "version": "0.103.0-9",
3
+ "version": "0.103.0",
4
4
  "description": "Promptbook: Turn your company's scattered knowledge into AI ready books",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "https://github.com/webgptorg/promptbook"
9
+ "url": "git+https://github.com/webgptorg/promptbook.git"
10
10
  },
11
11
  "author": "Pavol Hejný <pavol@ptbk.io> (https://www.pavolhejny.com/)",
12
12
  "contributors": [
@@ -89,7 +89,7 @@
89
89
  },
90
90
  "homepage": "https://ptbk.io/",
91
91
  "engines": {
92
- "node": ">=16.0.0",
92
+ "node": ">=18.18.0",
93
93
  "npm": ">=8.0.0"
94
94
  },
95
95
  "main": "./umd/index.umd.js",
@@ -97,7 +97,8 @@
97
97
  "typings": "./esm/typings/src/_packages/utils.index.d.ts",
98
98
  "dependencies": {
99
99
  "crypto": "1.0.1",
100
- "spacetrim": "0.11.59",
100
+ "crypto-js": "4.2.0",
101
+ "spacetrim": "0.11.60",
101
102
  "type-fest": "4.5.0"
102
103
  }
103
104
  }
package/umd/index.umd.js CHANGED
@@ -1,12 +1,13 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('spacetrim'), require('path'), require('crypto')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'spacetrim', 'path', 'crypto'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-utils"] = {}, global.spaceTrim$1, global.path, global.crypto));
5
- })(this, (function (exports, spaceTrim$1, path, crypto) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('spacetrim'), require('path'), require('crypto'), require('crypto-js'), require('crypto-js/enc-hex')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'spacetrim', 'path', 'crypto', 'crypto-js', 'crypto-js/enc-hex'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-utils"] = {}, global.spaceTrim$1, global.path, global.crypto, global.cryptoJs, global.hexEncoder));
5
+ })(this, (function (exports, spaceTrim$1, path, crypto, cryptoJs, hexEncoder) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
9
9
  var spaceTrim__default = /*#__PURE__*/_interopDefaultLegacy(spaceTrim$1);
10
+ var hexEncoder__default = /*#__PURE__*/_interopDefaultLegacy(hexEncoder);
10
11
 
11
12
  // ⚠️ WARNING: This code has been generated so that any manual changes will be overwritten
12
13
  /**
@@ -15,19 +16,30 @@
15
16
  * @generated
16
17
  * @see https://github.com/webgptorg/book
17
18
  */
18
- const BOOK_LANGUAGE_VERSION = '1.0.0';
19
+ const BOOK_LANGUAGE_VERSION = '2.0.0';
19
20
  /**
20
21
  * The version of the Promptbook engine
21
22
  *
22
23
  * @generated
23
24
  * @see https://github.com/webgptorg/promptbook
24
25
  */
25
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-9';
26
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0';
26
27
  /**
27
28
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
28
29
  * Note: [💞] Ignore a discrepancy between file name and entity name
29
30
  */
30
31
 
32
+ /**
33
+ * Trims string from all 4 sides
34
+ *
35
+ * Note: This is a re-exported function from the `spacetrim` package which is
36
+ * Developed by same author @hejny as this package
37
+ *
38
+ * @public exported from `@promptbook/utils`
39
+ * @see https://github.com/hejny/spacetrim#usage
40
+ */
41
+ const spaceTrim = spaceTrim$1.spaceTrim;
42
+
31
43
  /**
32
44
  * @private util of `@promptbook/color`
33
45
  * @de
@@ -76,6 +88,7 @@
76
88
  * @public exported from `@promptbook/color`
77
89
  */
78
90
  const CSS_COLORS = {
91
+ promptbook: '#79EAFD',
79
92
  transparent: 'rgba(0,0,0,0)',
80
93
  aliceblue: '#f0f8ff',
81
94
  antiquewhite: '#faebd7',
@@ -257,9 +270,6 @@
257
270
  throw new Error(`${channelName} channel is greater than 255, it is ${value}`);
258
271
  }
259
272
  }
260
- /**
261
- * TODO: [🧠][🚓] Is/which combination it better to use asserts/check, validate or is utility function?
262
- */
263
273
 
264
274
  /**
265
275
  * Color object represents an RGB color with alpha channel
@@ -279,21 +289,61 @@
279
289
  * @param color
280
290
  * @returns Color object
281
291
  */
282
- static from(color) {
283
- if (color instanceof Color) {
292
+ static from(color, _isSingleValue = false) {
293
+ if (color === '') {
294
+ throw new Error(`Can not create color from empty string`);
295
+ }
296
+ else if (color instanceof Color) {
284
297
  return take(color);
285
298
  }
286
299
  else if (Color.isColor(color)) {
287
300
  return take(color);
288
301
  }
289
302
  else if (typeof color === 'string') {
290
- return Color.fromString(color);
303
+ try {
304
+ return Color.fromString(color);
305
+ }
306
+ catch (error) {
307
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
308
+ if (_isSingleValue) {
309
+ throw error;
310
+ }
311
+ const parts = color.split(/[\s+,;|]/);
312
+ if (parts.length > 0) {
313
+ return Color.from(parts[0].trim(), true);
314
+ }
315
+ else {
316
+ throw new Error(`Can not create color from given string "${color}"`);
317
+ }
318
+ }
291
319
  }
292
320
  else {
293
321
  console.error({ color });
294
322
  throw new Error(`Can not create color from given object`);
295
323
  }
296
324
  }
325
+ /**
326
+ * Creates a new Color instance from miscellaneous formats
327
+ * It just does not throw error when it fails, it returns PROMPTBOOK_COLOR instead
328
+ *
329
+ * @param color
330
+ * @returns Color object
331
+ */
332
+ static fromSafe(color) {
333
+ try {
334
+ return Color.from(color);
335
+ }
336
+ catch (error) {
337
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
338
+ console.warn(spaceTrim((block) => `
339
+ Color.fromSafe error:
340
+ ${block(error.message)}
341
+
342
+ Returning default PROMPTBOOK_COLOR.
343
+ `));
344
+ return Color.fromString('promptbook');
345
+ }
346
+ }
297
347
  /**
298
348
  * Creates a new Color instance from miscellaneous string formats
299
349
  *
@@ -361,6 +411,9 @@
361
411
  if (hex.length === 3) {
362
412
  return Color.fromHex3(hex);
363
413
  }
414
+ if (hex.length === 4) {
415
+ return Color.fromHex4(hex);
416
+ }
364
417
  if (hex.length === 6) {
365
418
  return Color.fromHex6(hex);
366
419
  }
@@ -381,6 +434,19 @@
381
434
  const b = parseInt(hex.substr(2, 1), 16) * 16;
382
435
  return take(new Color(r, g, b));
383
436
  }
437
+ /**
438
+ * Creates a new Color instance from color in hex format with 4 digits (with alpha channel)
439
+ *
440
+ * @param color in hex for example `09df`
441
+ * @returns Color object
442
+ */
443
+ static fromHex4(hex) {
444
+ const r = parseInt(hex.substr(0, 1), 16) * 16;
445
+ const g = parseInt(hex.substr(1, 1), 16) * 16;
446
+ const b = parseInt(hex.substr(2, 1), 16) * 16;
447
+ const a = parseInt(hex.substr(3, 1), 16) * 16;
448
+ return take(new Color(r, g, b, a));
449
+ }
384
450
  /**
385
451
  * Creates a new Color instance from color in hex format with 6 color digits (without alpha channel)
386
452
  *
@@ -571,7 +637,8 @@
571
637
  * @returns true if the value is a valid hex color string (e.g., `#009edd`, `#fff`, etc.)
572
638
  */
573
639
  static isHexColorString(value) {
574
- return typeof value === 'string' && /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value);
640
+ return (typeof value === 'string' &&
641
+ /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value));
575
642
  }
576
643
  /**
577
644
  * Creates new Color object
@@ -686,6 +753,23 @@
686
753
  * TODO: Maybe connect with textures
687
754
  */
688
755
 
756
+ /**
757
+ * Makes color transformer which returns a grayscale version of the color
758
+ *
759
+ * @param amount from 0 to 1
760
+ *
761
+ * @public exported from `@promptbook/color`
762
+ */
763
+ function grayscale(amount) {
764
+ return ({ red, green, blue, alpha }) => {
765
+ const average = (red + green + blue) / 3;
766
+ red = Math.round(average * amount + red * (1 - amount));
767
+ green = Math.round(average * amount + green * (1 - amount));
768
+ blue = Math.round(average * amount + blue * (1 - amount));
769
+ return Color.fromValues(red, green, blue, alpha);
770
+ };
771
+ }
772
+
689
773
  /**
690
774
  * Converts HSL values to RGB values
691
775
  *
@@ -801,102 +885,6 @@
801
885
  * TODO: Maybe implement by mix+hsl
802
886
  */
803
887
 
804
- /**
805
- * Calculates distance between two colors
806
- *
807
- * @param color1 first color
808
- * @param color2 second color
809
- *
810
- * Note: This function is inefficient. Use colorDistanceSquared instead if possible.
811
- *
812
- * @public exported from `@promptbook/color`
813
- */
814
- /**
815
- * Calculates distance between two colors without square root
816
- *
817
- * @param color1 first color
818
- * @param color2 second color
819
- *
820
- * @public exported from `@promptbook/color`
821
- */
822
- function colorDistanceSquared(color1, color2) {
823
- const rmean = (color1.red + color2.red) / 2;
824
- const r = color1.red - color2.red;
825
- const g = color1.green - color2.green;
826
- const b = color1.blue - color2.blue;
827
- const weightR = 2 + rmean / 256;
828
- const weightG = 4.0;
829
- const weightB = 2 + (255 - rmean) / 256;
830
- const distance = weightR * r * r + weightG * g * g + weightB * b * b;
831
- return distance;
832
- }
833
-
834
- /**
835
- * Makes color transformer which finds the nearest color from the given list
836
- *
837
- * @param colors array of colors to choose from
838
- *
839
- * @public exported from `@promptbook/color`
840
- */
841
- function nearest(...colors) {
842
- return (color) => {
843
- const distances = colors.map((c) => colorDistanceSquared(c, color));
844
- const minDistance = Math.min(...distances);
845
- const minIndex = distances.indexOf(minDistance);
846
- const nearestColor = colors[minIndex];
847
- return nearestColor;
848
- };
849
- }
850
-
851
- /**
852
- * Color transformer which returns the negative color
853
- *
854
- * @public exported from `@promptbook/color`
855
- */
856
- function negative(color) {
857
- const r = 255 - color.red;
858
- const g = 255 - color.green;
859
- const b = 255 - color.blue;
860
- return Color.fromValues(r, g, b, color.alpha);
861
- }
862
-
863
- /**
864
- * Makes color transformer which finds the furthest color from the given list
865
- *
866
- * @param colors array of colors to choose from
867
- *
868
- * @public exported from `@promptbook/color`
869
- */
870
- function furthest(...colors) {
871
- return (color) => {
872
- const furthestColor = negative(nearest(...colors.map(negative))(color));
873
- return furthestColor;
874
- };
875
- }
876
- /**
877
- * Makes color transformer which finds the best text color (black or white) for the given background color
878
- *
879
- * @public exported from `@promptbook/color`
880
- */
881
- furthest(Color.get('white'), Color.from('black'));
882
-
883
- /**
884
- * Makes color transformer which returns a grayscale version of the color
885
- *
886
- * @param amount from 0 to 1
887
- *
888
- * @public exported from `@promptbook/color`
889
- */
890
- function grayscale(amount) {
891
- return ({ red, green, blue, alpha }) => {
892
- const average = (red + green + blue) / 3;
893
- red = Math.round(average * amount + red * (1 - amount));
894
- green = Math.round(average * amount + green * (1 - amount));
895
- blue = Math.round(average * amount + blue * (1 - amount));
896
- return Color.fromValues(red, green, blue, alpha);
897
- };
898
- }
899
-
900
888
  /**
901
889
  * Makes color transformer which saturate the given color
902
890
  *
@@ -945,16 +933,32 @@
945
933
  *
946
934
  * @public exported from `@promptbook/core`
947
935
  */
948
- const PROMPTBOOK_COLOR = Color.fromHex('#79EAFD');
949
- // <- TODO: [🧠] Using `Color` here increases the package size approx 3kb, maybe remove it
936
+ const PROMPTBOOK_COLOR = Color.fromString('promptbook');
937
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
950
938
  /**
951
- * Dark color of the Promptbook
939
+ * Colors for syntax highlighting in the `<BookEditor/>`
940
+ *
941
+ * TODO: [🗽] Unite branding and make single place for it
942
+ *
943
+ * @public exported from `@promptbook/core`
944
+ */
945
+ ({
946
+ TITLE: Color.fromHex('#244EA8'),
947
+ LINE: Color.fromHex('#eeeeee'),
948
+ SEPARATOR: Color.fromHex('#cccccc'),
949
+ COMMITMENT: Color.fromHex('#DA0F78'),
950
+ PARAMETER: Color.fromHex('#8e44ad'),
951
+ });
952
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
953
+ /**
954
+ * Chat color of the Promptbook (in chat)
952
955
  *
953
956
  * TODO: [🗽] Unite branding and make single place for it
954
957
  *
955
958
  * @public exported from `@promptbook/core`
956
959
  */
957
960
  PROMPTBOOK_COLOR.then(lighten(0.1)).then(saturate(0.9)).then(grayscale(0.9));
961
+ // <- TODO: [🧠][🈵] Using `Color` and `lighten`, `saturate`,... here increases the package size approx 3kb, maybe remove it
958
962
  /**
959
963
  * Color of the user (in chat)
960
964
  *
@@ -1327,7 +1331,7 @@
1327
1331
  TODO: [🧠] Is there a better implementation?
1328
1332
  > const propertyNames = Object.getOwnPropertyNames(objectValue);
1329
1333
  > for (const propertyName of propertyNames) {
1330
- > const value = (objectValue as really_any)[propertyName];
1334
+ > const value = (objectValue as chococake)[propertyName];
1331
1335
  > if (value && typeof value === 'object') {
1332
1336
  > deepClone(value);
1333
1337
  > }
@@ -1418,6 +1422,8 @@
1418
1422
  /**
1419
1423
  * Normalizes a given text to camelCase format.
1420
1424
  *
1425
+ * Note: [🔂] This function is idempotent.
1426
+ *
1421
1427
  * @param text The text to be normalized.
1422
1428
  * @param _isFirstLetterCapital Whether the first letter should be capitalized.
1423
1429
  * @returns The camelCase formatted string.
@@ -1819,6 +1825,8 @@
1819
1825
  /**
1820
1826
  * Converts a given text to kebab-case format.
1821
1827
  *
1828
+ * Note: [🔂] This function is idempotent.
1829
+ *
1822
1830
  * @param text The text to be converted.
1823
1831
  * @returns The kebab-case formatted string.
1824
1832
  * @example 'hello-world'
@@ -1888,6 +1896,8 @@
1888
1896
  /**
1889
1897
  * Converts a title string into a normalized name.
1890
1898
  *
1899
+ * Note: [🔂] This function is idempotent.
1900
+ *
1891
1901
  * @param value The title string to be converted to a name.
1892
1902
  * @returns A normalized name derived from the input title.
1893
1903
  * @example 'Hello World!' -> 'hello-world'
@@ -2073,6 +2083,22 @@
2073
2083
  }
2074
2084
  }
2075
2085
 
2086
+ /**
2087
+ * This error indicates error from the database
2088
+ *
2089
+ * @public exported from `@promptbook/core`
2090
+ */
2091
+ class DatabaseError extends Error {
2092
+ constructor(message) {
2093
+ super(message);
2094
+ this.name = 'DatabaseError';
2095
+ Object.setPrototypeOf(this, DatabaseError.prototype);
2096
+ }
2097
+ }
2098
+ /**
2099
+ * TODO: [🐱‍🚀] Explain that NotFoundError ([🐱‍🚀] and other specific errors) has priority over DatabaseError in some contexts
2100
+ */
2101
+
2076
2102
  /**
2077
2103
  * This error type indicates that you try to use a feature that is not available in the current environment
2078
2104
  *
@@ -2146,6 +2172,19 @@
2146
2172
  }
2147
2173
  }
2148
2174
 
2175
+ /**
2176
+ * This error indicates that promptbook operation is not allowed
2177
+ *
2178
+ * @public exported from `@promptbook/core`
2179
+ */
2180
+ class NotAllowed extends Error {
2181
+ constructor(message) {
2182
+ super(message);
2183
+ this.name = 'NotAllowed';
2184
+ Object.setPrototypeOf(this, NotAllowed.prototype);
2185
+ }
2186
+ }
2187
+
2149
2188
  /**
2150
2189
  * This error indicates that promptbook not found in the collection
2151
2190
  *
@@ -2201,6 +2240,7 @@
2201
2240
  /**
2202
2241
  * Generates random token
2203
2242
  *
2243
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
2204
2244
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
2205
2245
  *
2206
2246
  * @private internal helper function
@@ -2210,6 +2250,7 @@
2210
2250
  return crypto.randomBytes(randomness).toString('hex');
2211
2251
  }
2212
2252
  /**
2253
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
2213
2254
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
2214
2255
  */
2215
2256
 
@@ -2295,6 +2336,8 @@
2295
2336
  PromptbookFetchError,
2296
2337
  UnexpectedError,
2297
2338
  WrappedError,
2339
+ NotAllowed,
2340
+ DatabaseError,
2298
2341
  // TODO: [🪑]> VersionMismatchError,
2299
2342
  };
2300
2343
  /**
@@ -2816,6 +2859,25 @@
2816
2859
  * TODO: [🎺]
2817
2860
  */
2818
2861
 
2862
+ /**
2863
+ * Returns information about the current runtime environment
2864
+ *
2865
+ * Note: `$` is used to indicate that this function is not a pure function - it looks at the global object to determine the environments
2866
+ *
2867
+ * @public exported from `@promptbook/utils`
2868
+ */
2869
+ function $detectRuntimeEnvironment() {
2870
+ return {
2871
+ isRunningInBrowser: $isRunningInBrowser(),
2872
+ isRunningInJest: $isRunningInJest(),
2873
+ isRunningInNode: $isRunningInNode(),
2874
+ isRunningInWebWorker: $isRunningInWebWorker(),
2875
+ };
2876
+ }
2877
+ /**
2878
+ * TODO: [🎺] Also detect and report node version here
2879
+ */
2880
+
2819
2881
  /**
2820
2882
  * Number of characters per standard line with 11pt Arial font size.
2821
2883
  *
@@ -2860,10 +2922,13 @@
2860
2922
  * @public exported from `@promptbook/utils`
2861
2923
  */
2862
2924
  function countLines(text) {
2925
+ if (text === '') {
2926
+ return 0;
2927
+ }
2863
2928
  text = text.replace('\r\n', '\n');
2864
2929
  text = text.replace('\r', '\n');
2865
2930
  const lines = text.split('\n');
2866
- return lines.reduce((count, line) => count + Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 0);
2931
+ return lines.reduce((count, line) => count + Math.max(Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 1), 0);
2867
2932
  }
2868
2933
  /**
2869
2934
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
@@ -2967,6 +3032,18 @@
2967
3032
  return new Date().toISOString();
2968
3033
  }
2969
3034
 
3035
+ /**
3036
+ * Computes SHA-256 hash of the given object
3037
+ *
3038
+ * @public exported from `@promptbook/utils`
3039
+ */
3040
+ function computeHash(value) {
3041
+ return cryptoJs.SHA256(hexEncoder__default["default"].parse(spaceTrim__default["default"](valueToString(value)))).toString( /* hex */);
3042
+ }
3043
+ /**
3044
+ * TODO: [🥬][🥬] Use this ACRY
3045
+ */
3046
+
2970
3047
  /**
2971
3048
  * @public exported from `@promptbook/utils`
2972
3049
  */
@@ -3193,6 +3270,21 @@
3193
3270
  }
3194
3271
 
3195
3272
  /**
3273
+ * Normalizes message text for comparison
3274
+ *
3275
+ * @param text The message text to normalize
3276
+ * @returns The normalized message text
3277
+ *
3278
+ * @public exported from `@promptbook/utils`
3279
+ */
3280
+ function normalizeMessageText(text) {
3281
+ return spaceTrim$1.spaceTrim(text);
3282
+ }
3283
+
3284
+ /**
3285
+ * Normalizes a given text to PascalCase format.
3286
+ *
3287
+ * Note: [🔂] This function is idempotent.
3196
3288
  *
3197
3289
  * @param text @public exported from `@promptbook/utils`
3198
3290
  * @returns
@@ -3389,17 +3481,6 @@
3389
3481
  * TODO: [🧠] Should this also unwrap the (parenthesis)
3390
3482
  */
3391
3483
 
3392
- /**
3393
- * Trims string from all 4 sides
3394
- *
3395
- * Note: This is a re-exported function from the `spacetrim` package which is
3396
- * Developed by same author @hejny as this package
3397
- *
3398
- * @public exported from `@promptbook/utils`
3399
- * @see https://github.com/hejny/spacetrim#usage
3400
- */
3401
- const spaceTrim = spaceTrim$1.spaceTrim;
3402
-
3403
3484
  /**
3404
3485
  * Parses the task and returns the list of all parameter names
3405
3486
  *
@@ -3823,6 +3904,7 @@
3823
3904
  }
3824
3905
 
3825
3906
  exports.$deepFreeze = $deepFreeze;
3907
+ exports.$detectRuntimeEnvironment = $detectRuntimeEnvironment;
3826
3908
  exports.$getCurrentDate = $getCurrentDate;
3827
3909
  exports.$isRunningInBrowser = $isRunningInBrowser;
3828
3910
  exports.$isRunningInJest = $isRunningInJest;
@@ -3839,6 +3921,7 @@
3839
3921
  exports.capitalize = capitalize;
3840
3922
  exports.checkSerializableAsJson = checkSerializableAsJson;
3841
3923
  exports.clonePipeline = clonePipeline;
3924
+ exports.computeHash = computeHash;
3842
3925
  exports.countCharacters = countCharacters;
3843
3926
  exports.countLines = countLines;
3844
3927
  exports.countPages = countPages;
@@ -3874,6 +3957,7 @@
3874
3957
  exports.jsonStringsToJsons = jsonStringsToJsons;
3875
3958
  exports.nameToUriPart = nameToUriPart;
3876
3959
  exports.nameToUriParts = nameToUriParts;
3960
+ exports.normalizeMessageText = normalizeMessageText;
3877
3961
  exports.normalizeToKebabCase = normalizeToKebabCase;
3878
3962
  exports.normalizeTo_PascalCase = normalizeTo_PascalCase;
3879
3963
  exports.normalizeTo_SCREAMING_CASE = normalizeTo_SCREAMING_CASE;