@promptbook/fake-llm 0.103.0-9 → 0.104.0-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 -35
  2. package/esm/index.es.js +141 -124
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/books/index.d.ts +0 -81
  5. package/esm/typings/servers.d.ts +9 -7
  6. package/esm/typings/src/_packages/browser.index.d.ts +6 -0
  7. package/esm/typings/src/_packages/cli.index.d.ts +4 -0
  8. package/esm/typings/src/_packages/components.index.d.ts +22 -8
  9. package/esm/typings/src/_packages/core.index.d.ts +58 -18
  10. package/esm/typings/src/_packages/node.index.d.ts +2 -2
  11. package/esm/typings/src/_packages/remote-server.index.d.ts +2 -0
  12. package/esm/typings/src/_packages/types.index.d.ts +70 -8
  13. package/esm/typings/src/_packages/utils.index.d.ts +6 -0
  14. package/esm/typings/src/_packages/wizard.index.d.ts +4 -0
  15. package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +20 -5
  16. package/esm/typings/src/book-2.0/agent-source/AgentModelRequirements.d.ts +17 -1
  17. package/esm/typings/src/book-2.0/agent-source/AgentSourceParseResult.d.ts +3 -2
  18. package/esm/typings/src/book-2.0/agent-source/computeAgentHash.d.ts +8 -0
  19. package/esm/typings/src/book-2.0/agent-source/createCommitmentRegex.d.ts +3 -3
  20. package/esm/typings/src/book-2.0/agent-source/createDefaultAgentName.d.ts +8 -0
  21. package/esm/typings/src/book-2.0/agent-source/normalizeAgentName.d.ts +9 -0
  22. package/esm/typings/src/book-2.0/agent-source/padBook.d.ts +18 -0
  23. package/esm/typings/src/book-2.0/agent-source/parseAgentSourceWithCommitments.d.ts +1 -1
  24. package/esm/typings/src/book-2.0/agent-source/string_book.d.ts +3 -0
  25. package/esm/typings/src/book-components/AvatarProfile/AvatarProfile/AvatarProfile.d.ts +6 -1
  26. package/esm/typings/src/book-components/BookEditor/BookEditor.d.ts +85 -14
  27. package/esm/typings/src/book-components/BookEditor/BookEditorActionbar.d.ts +18 -0
  28. package/esm/typings/src/book-components/BookEditor/BookEditorMonaco.d.ts +5 -0
  29. package/esm/typings/src/book-components/Chat/AgentChat/AgentChat.d.ts +17 -0
  30. package/esm/typings/src/book-components/Chat/AgentChat/AgentChatProps.d.ts +13 -0
  31. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +16 -0
  32. package/esm/typings/src/book-components/Chat/LlmChat/LlmChatProps.d.ts +5 -0
  33. package/esm/typings/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +15 -0
  34. package/esm/typings/src/book-components/Chat/MockedChat/MockedChat.d.ts +5 -0
  35. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +1 -1
  36. package/esm/typings/src/book-components/Chat/save/html/htmlSaveFormatDefinition.d.ts +1 -0
  37. package/esm/typings/src/book-components/Chat/save/pdf/pdfSaveFormatDefinition.d.ts +4 -0
  38. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  39. package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgentIntegration.d.ts +67 -0
  40. package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgentSeamlessIntegration.d.ts +23 -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 +6 -6
  257. package/umd/index.umd.js +141 -126
  258. package/umd/index.umd.js.map +1 -1
  259. package/esm/typings/src/book-2.0/commitments/index.d.ts +0 -60
  260. package/esm/typings/src/book-components/BookEditor/BookEditorInner.d.ts +0 -5
  261. package/esm/typings/src/book-components/BookEditor/BookEditorWrapper.d.ts +0 -9
  262. package/esm/typings/src/book-components/BookEditor/config.d.ts +0 -10
  263. package/esm/typings/src/book-components/Chat/utils/renderMarkdown.d.ts +0 -21
  264. package/esm/typings/src/collection/collectionToJson.d.ts +0 -13
  265. package/esm/typings/src/collection/constructors/createCollectionFromJson.d.ts +0 -13
  266. /package/esm/typings/src/{book-components/Chat/utils/renderMarkdown.test.d.ts → book-2.0/agent-source/computeAgentHash.test.d.ts} +0 -0
  267. /package/esm/typings/src/{collection/constructors/createCollectionFromDirectory.test.d.ts → book-2.0/agent-source/normalizeAgentName.test.d.ts} +0 -0
  268. /package/esm/typings/src/{collection/constructors/createCollectionFromJson.test.d.ts → book-components/Chat/AgentChat/AgentChat.test.d.ts} +0 -0
  269. /package/esm/typings/src/collection/{constructors/createCollectionFromPromise.test.d.ts → pipeline-collection/constructors/createPipelineCollectionFromDirectory.test.d.ts} +0 -0
  270. /package/esm/typings/src/{commands/_common/parseCommand.test.d.ts → collection/pipeline-collection/constructors/createPipelineCollectionFromJson.test.d.ts} +0 -0
  271. /package/esm/typings/src/collection/{collectionToJson.test.d.ts → pipeline-collection/pipelineCollectionToJson.test.d.ts} +0 -0
  272. /package/esm/typings/src/{book-2.0/commitments → commitments}/_base/BookCommitment.d.ts +0 -0
  273. /package/esm/typings/src/{book-2.0/commitments → commitments}/_base/ParsedCommitment.d.ts +0 -0
package/README.md CHANGED
@@ -9,8 +9,8 @@ Turn your company's scattered knowledge into AI ready Books
9
9
 
10
10
 
11
11
 
12
- [![NPM Version of ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
- [![Quality of package ![Promptbook logo - cube with letters P and B](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
12
+ [![NPM Version of ![Promptbook logo](./design/logo-h1.png) Promptbook](https://badge.fury.io/js/promptbook.svg)](https://www.npmjs.com/package/promptbook)
13
+ [![Quality of package ![Promptbook logo](./design/logo-h1.png) Promptbook](https://packagequality.com/shield/promptbook.svg)](https://packagequality.com/#?package=promptbook)
14
14
  [![Known Vulnerabilities](https://snyk.io/test/github/webgptorg/promptbook/badge.svg)](https://snyk.io/test/github/webgptorg/promptbook)
15
15
  [![🧪 Test Books](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-books.yml)
16
16
  [![🧪 Test build](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml/badge.svg)](https://github.com/webgptorg/promptbook/actions/workflows/test-build.yml)
@@ -23,11 +23,7 @@ Turn your company's scattered knowledge into AI ready Books
23
23
 
24
24
  ## 🌟 New Features
25
25
 
26
- - 🚀 **GPT-5 Support** - Now includes OpenAI's most advanced language model with unprecedented reasoning capabilities and 200K context window
27
- - 💡 VS Code support for `.book` files with syntax highlighting and IntelliSense
28
- - 🐳 Official Docker image (`hejny/promptbook`) for seamless containerized usage
29
- - 🔥 Native support for OpenAI `o3-mini`, GPT-4 and other leading LLMs
30
- - 🔍 DeepSeek integration for advanced knowledge search
26
+ - **Gemini 3 Support**
31
27
 
32
28
 
33
29
 
@@ -71,11 +67,15 @@ The main challenge is to narrow it down, constrain it, set the proper **context,
71
67
 
72
68
  Promptbook takes the best from both worlds. You are defining your AI behavior by simple **books**, which are very explicit. They are automatically enforced, but they are very easy to understand, very easy to write, and very reliable and portable.
73
69
 
70
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
74
71
 
75
- <img
76
- alt="Paul Smith & Associés Book"
77
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.&width=800&height=450&nonce=0"
78
- />
72
+ **<ins>Paul Smith & Associés</ins>**<br/>
73
+ <br/>
74
+ **PERSONA** You are a company lawyer.<br/>
75
+ Your job is to provide legal advice and support to the company and its employees.<br/>
76
+ You are knowledgeable, professional, and detail-oriented.<br/>
77
+
78
+ </td></tr></table>
79
79
 
80
80
  <div style="page-break-after: always;"></div>
81
81
 
@@ -89,11 +89,15 @@ You can look at it as prompting (or writing a system message), but decorated by
89
89
 
90
90
  Personas define the character of your AI persona, its role, and how it should interact with users. It sets the tone and style of communication.
91
91
 
92
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
93
+
94
+ **<ins>Paul Smith & Associés</ins>**<br/>
95
+ <br/>
96
+ **PERSONA** You are a company lawyer.<br/>
97
+ Your job is to provide legal advice and support to the company and its employees.<br/>
98
+ You are knowledgeable, professional, and detail-oriented.<br/>
92
99
 
93
- <img
94
- alt="Paul Smith & Associés Book"
95
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.&width=800&height=450&nonce=0"
96
- />
100
+ </td></tr></table>
97
101
 
98
102
  #### `Knowledge` commitment
99
103
 
@@ -103,11 +107,18 @@ This can include domain-specific knowledge, company policies, or any other relev
103
107
 
104
108
  Promptbook Engine will automatically enforce this knowledge during interactions. When the knowledge is short enough, it will be included in the prompt. When it is too long, it will be stored in vector databases and RAG retrieved when needed. But you don't need to care about it.
105
109
 
110
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
106
111
 
107
- <img
108
- alt="Paul Smith & Associés Book"
109
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx&width=800&height=450&nonce=0"
110
- />
112
+ **<ins>Paul Smith & Associés</ins>**<br/>
113
+ <br/>
114
+ **PERSONA** You are a company lawyer.<br/>
115
+ Your job is to provide legal advice and support to the company and its employees.<br/>
116
+ You are knowledgeable, professional, and detail-oriented.<br/>
117
+ <br/>
118
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
119
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
120
+
121
+ </td></tr></table>
111
122
 
112
123
  #### `Rule` commitment
113
124
 
@@ -115,21 +126,42 @@ Rules will enforce specific behaviors or constraints on the AI's responses. This
115
126
 
116
127
  Depending on rule strictness, Promptbook will either propagate it to the prompt or use other techniques, like adversary agent, to enforce it.
117
128
 
129
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
130
+
131
+ **<ins>Paul Smith & Associés</ins>**<br/>
132
+ <br/>
133
+ **PERSONA** You are a company lawyer.<br/>
134
+ Your job is to provide legal advice and support to the company and its employees.<br/>
135
+ You are knowledgeable, professional, and detail-oriented.<br/>
136
+ <br/>
137
+ **RULE** Always ensure compliance with laws and regulations.<br/>
138
+ **RULE** Never provide legal advice outside your area of expertise.<br/>
139
+ **RULE** Never provide legal advice about criminal law.<br/>
140
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
141
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
118
142
 
119
- <img
120
- alt="Paul Smith & Associés Book"
121
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20RULE%20Always%20ensure%20compliance%20with%20laws%20and%20regulations.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20outside%20your%20area%20of%20expertise.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20about%20criminal%20law.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx&width=800&height=450&nonce=0"
122
- />
143
+ </td></tr></table>
123
144
 
124
145
  #### `Action` commitment
125
146
 
126
147
  Action Commitment allows you to define specific actions that the AI can take during interactions. This can include things like posting on a social media platform, sending emails, creating calendar events, or interacting with your internal systems.
127
148
 
149
+ <table style="border: 1px solid #777; border-radius: 10px;"><tr><td>
128
150
 
129
- <img
130
- alt="Paul Smith & Associés Book"
131
- src="https://promptbook.studio/embed/book-preview.png?book=Paul%20Smith%20%26%20Associ%C3%A9s%0A%20%20%20%20%20%20%7C%20PERSONA%20You%20are%20a%20company%20lawyer.%0A%20%20%20%20%20%20%7C%20Your%20job%20is%20to%20provide%20legal%20advice%20and%20support%20to%20the%20company%20and%20its%20employees.%0A%20%20%20%20%20%20%7C%20You%20are%20knowledgeable%2C%20professional%2C%20and%20detail-oriented.%0A%20%20%20%20%20%20%7C%20RULE%20Always%20ensure%20compliance%20with%20laws%20and%20regulations.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20outside%20your%20area%20of%20expertise.%0A%20%20%20%20%20%20%7C%20RULE%20Never%20provide%20legal%20advice%20about%20criminal%20law.%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20%20https%3A%2F%2Fcompany.com%2Fcompany-policies.pdf%0A%20%20%20%20%20%20%7C%20KNOWLEDGE%20https%3A%2F%2Fcompany.com%2Finternal-documents%2Femployee-handbook.docx%0A%20%20%20%20%20%20%7C%20ACTION%20When%20a%20user%20asks%20about%20an%20issue%20that%20could%20be%20treated%20as%20a%20crime%2C%20notify%20legal%40company.com.&width=800&height=450&nonce=0"
132
- />
151
+ **<ins>Paul Smith & Associés</ins>**<br/>
152
+ <br/>
153
+ **PERSONA** You are a company lawyer.<br/>
154
+ Your job is to provide legal advice and support to the company and its employees.<br/>
155
+ You are knowledgeable, professional, and detail-oriented.<br/>
156
+ <br/>
157
+ **RULE** Always ensure compliance with laws and regulations.<br/>
158
+ **RULE** Never provide legal advice outside your area of expertise.<br/>
159
+ **RULE** Never provide legal advice about criminal law.<br/>
160
+ **KNOWLEDGE** https://company.com/company-policies.pdf<br/>
161
+ **KNOWLEDGE** https://company.com/internal-documents/employee-handbook.docx<br/>
162
+ **ACTION** When a user asks about an issue that could be treated as a crime, notify legal@company.com.<br/>
163
+
164
+ </td></tr></table>
133
165
 
134
166
  [Read more about the language](./BLUEPRINT.md)
135
167
 
@@ -176,14 +208,10 @@ Now you want to use it. There are several ways how to write your first book:
176
208
 
177
209
  We have written ai asistant in book who can help you with writing your first book.
178
210
 
179
-
180
-
181
211
  #### Your AI twin
182
212
 
183
213
  Copy your own behavior, personality, and knowledge into book and create your AI twin. It can help you with your work, personal life, or any other task.
184
214
 
185
-
186
-
187
215
  #### AI persona workpool
188
216
 
189
217
  Or you can pick from our library of pre-written books for various roles and tasks. You can find books for customer support, coding, marketing, sales, HR, legal, and many other roles.
@@ -303,8 +331,6 @@ Join our growing community of developers and users:
303
331
 
304
332
 
305
333
 
306
-
307
-
308
334
  ## 📚 Documentation
309
335
 
310
336
  See detailed guides and API reference in the [docs](https://github.com/webgptorg/promptbook/discussions/categories/concepts) or [online](https://discord.gg/x3QWNaa89N).
@@ -381,8 +407,6 @@ The following glossary is used to clarify certain concepts:
381
407
 
382
408
  _Note: This section is not a complete dictionary, more list of general AI / LLM terms that has connection with Promptbook_
383
409
 
384
-
385
-
386
410
  ### 💯 Core concepts
387
411
 
388
412
  - [📚 Collection of pipelines](https://github.com/webgptorg/promptbook/discussions/65)
package/esm/index.es.js CHANGED
@@ -1,8 +1,10 @@
1
- import spaceTrim, { spaceTrim as spaceTrim$1 } from 'spacetrim';
1
+ import spaceTrim$2, { spaceTrim as spaceTrim$1 } from 'spacetrim';
2
2
  import { forTime } from 'waitasecond';
3
3
  import { randomBytes } from 'crypto';
4
4
  import { LoremIpsum } from 'lorem-ipsum';
5
5
  import 'path';
6
+ import 'crypto-js';
7
+ import 'crypto-js/enc-hex';
6
8
 
7
9
  // ⚠️ WARNING: This code has been generated so that any manual changes will be overwritten
8
10
  /**
@@ -11,14 +13,14 @@ import 'path';
11
13
  * @generated
12
14
  * @see https://github.com/webgptorg/book
13
15
  */
14
- const BOOK_LANGUAGE_VERSION = '1.0.0';
16
+ const BOOK_LANGUAGE_VERSION = '2.0.0';
15
17
  /**
16
18
  * The version of the Promptbook engine
17
19
  *
18
20
  * @generated
19
21
  * @see https://github.com/webgptorg/promptbook
20
22
  */
21
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-9';
23
+ const PROMPTBOOK_ENGINE_VERSION = '0.104.0-0';
22
24
  /**
23
25
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
24
26
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -131,6 +133,17 @@ function $getCurrentDate() {
131
133
  return new Date().toISOString();
132
134
  }
133
135
 
136
+ /**
137
+ * Trims string from all 4 sides
138
+ *
139
+ * Note: This is a re-exported function from the `spacetrim` package which is
140
+ * Developed by same author @hejny as this package
141
+ *
142
+ * @public exported from `@promptbook/utils`
143
+ * @see https://github.com/hejny/spacetrim#usage
144
+ */
145
+ const spaceTrim = spaceTrim$1;
146
+
134
147
  /**
135
148
  * @private util of `@promptbook/color`
136
149
  * @de
@@ -179,6 +192,7 @@ function take(initialValue) {
179
192
  * @public exported from `@promptbook/color`
180
193
  */
181
194
  const CSS_COLORS = {
195
+ promptbook: '#79EAFD',
182
196
  transparent: 'rgba(0,0,0,0)',
183
197
  aliceblue: '#f0f8ff',
184
198
  antiquewhite: '#faebd7',
@@ -360,9 +374,6 @@ function checkChannelValue(channelName, value) {
360
374
  throw new Error(`${channelName} channel is greater than 255, it is ${value}`);
361
375
  }
362
376
  }
363
- /**
364
- * TODO: [🧠][🚓] Is/which combination it better to use asserts/check, validate or is utility function?
365
- */
366
377
 
367
378
  /**
368
379
  * Color object represents an RGB color with alpha channel
@@ -382,21 +393,61 @@ class Color {
382
393
  * @param color
383
394
  * @returns Color object
384
395
  */
385
- static from(color) {
386
- if (color instanceof Color) {
396
+ static from(color, _isSingleValue = false) {
397
+ if (color === '') {
398
+ throw new Error(`Can not create color from empty string`);
399
+ }
400
+ else if (color instanceof Color) {
387
401
  return take(color);
388
402
  }
389
403
  else if (Color.isColor(color)) {
390
404
  return take(color);
391
405
  }
392
406
  else if (typeof color === 'string') {
393
- return Color.fromString(color);
407
+ try {
408
+ return Color.fromString(color);
409
+ }
410
+ catch (error) {
411
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
412
+ if (_isSingleValue) {
413
+ throw error;
414
+ }
415
+ const parts = color.split(/[\s+,;|]/);
416
+ if (parts.length > 0) {
417
+ return Color.from(parts[0].trim(), true);
418
+ }
419
+ else {
420
+ throw new Error(`Can not create color from given string "${color}"`);
421
+ }
422
+ }
394
423
  }
395
424
  else {
396
425
  console.error({ color });
397
426
  throw new Error(`Can not create color from given object`);
398
427
  }
399
428
  }
429
+ /**
430
+ * Creates a new Color instance from miscellaneous formats
431
+ * It just does not throw error when it fails, it returns PROMPTBOOK_COLOR instead
432
+ *
433
+ * @param color
434
+ * @returns Color object
435
+ */
436
+ static fromSafe(color) {
437
+ try {
438
+ return Color.from(color);
439
+ }
440
+ catch (error) {
441
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
442
+ console.warn(spaceTrim((block) => `
443
+ Color.fromSafe error:
444
+ ${block(error.message)}
445
+
446
+ Returning default PROMPTBOOK_COLOR.
447
+ `));
448
+ return Color.fromString('promptbook');
449
+ }
450
+ }
400
451
  /**
401
452
  * Creates a new Color instance from miscellaneous string formats
402
453
  *
@@ -464,6 +515,9 @@ class Color {
464
515
  if (hex.length === 3) {
465
516
  return Color.fromHex3(hex);
466
517
  }
518
+ if (hex.length === 4) {
519
+ return Color.fromHex4(hex);
520
+ }
467
521
  if (hex.length === 6) {
468
522
  return Color.fromHex6(hex);
469
523
  }
@@ -484,6 +538,19 @@ class Color {
484
538
  const b = parseInt(hex.substr(2, 1), 16) * 16;
485
539
  return take(new Color(r, g, b));
486
540
  }
541
+ /**
542
+ * Creates a new Color instance from color in hex format with 4 digits (with alpha channel)
543
+ *
544
+ * @param color in hex for example `09df`
545
+ * @returns Color object
546
+ */
547
+ static fromHex4(hex) {
548
+ const r = parseInt(hex.substr(0, 1), 16) * 16;
549
+ const g = parseInt(hex.substr(1, 1), 16) * 16;
550
+ const b = parseInt(hex.substr(2, 1), 16) * 16;
551
+ const a = parseInt(hex.substr(3, 1), 16) * 16;
552
+ return take(new Color(r, g, b, a));
553
+ }
487
554
  /**
488
555
  * Creates a new Color instance from color in hex format with 6 color digits (without alpha channel)
489
556
  *
@@ -674,7 +741,8 @@ class Color {
674
741
  * @returns true if the value is a valid hex color string (e.g., `#009edd`, `#fff`, etc.)
675
742
  */
676
743
  static isHexColorString(value) {
677
- return typeof value === 'string' && /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value);
744
+ return (typeof value === 'string' &&
745
+ /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value));
678
746
  }
679
747
  /**
680
748
  * Creates new Color object
@@ -789,6 +857,23 @@ class Color {
789
857
  * TODO: Maybe connect with textures
790
858
  */
791
859
 
860
+ /**
861
+ * Makes color transformer which returns a grayscale version of the color
862
+ *
863
+ * @param amount from 0 to 1
864
+ *
865
+ * @public exported from `@promptbook/color`
866
+ */
867
+ function grayscale(amount) {
868
+ return ({ red, green, blue, alpha }) => {
869
+ const average = (red + green + blue) / 3;
870
+ red = Math.round(average * amount + red * (1 - amount));
871
+ green = Math.round(average * amount + green * (1 - amount));
872
+ blue = Math.round(average * amount + blue * (1 - amount));
873
+ return Color.fromValues(red, green, blue, alpha);
874
+ };
875
+ }
876
+
792
877
  /**
793
878
  * Converts HSL values to RGB values
794
879
  *
@@ -904,102 +989,6 @@ function lighten(amount) {
904
989
  * TODO: Maybe implement by mix+hsl
905
990
  */
906
991
 
907
- /**
908
- * Calculates distance between two colors
909
- *
910
- * @param color1 first color
911
- * @param color2 second color
912
- *
913
- * Note: This function is inefficient. Use colorDistanceSquared instead if possible.
914
- *
915
- * @public exported from `@promptbook/color`
916
- */
917
- /**
918
- * Calculates distance between two colors without square root
919
- *
920
- * @param color1 first color
921
- * @param color2 second color
922
- *
923
- * @public exported from `@promptbook/color`
924
- */
925
- function colorDistanceSquared(color1, color2) {
926
- const rmean = (color1.red + color2.red) / 2;
927
- const r = color1.red - color2.red;
928
- const g = color1.green - color2.green;
929
- const b = color1.blue - color2.blue;
930
- const weightR = 2 + rmean / 256;
931
- const weightG = 4.0;
932
- const weightB = 2 + (255 - rmean) / 256;
933
- const distance = weightR * r * r + weightG * g * g + weightB * b * b;
934
- return distance;
935
- }
936
-
937
- /**
938
- * Makes color transformer which finds the nearest color from the given list
939
- *
940
- * @param colors array of colors to choose from
941
- *
942
- * @public exported from `@promptbook/color`
943
- */
944
- function nearest(...colors) {
945
- return (color) => {
946
- const distances = colors.map((c) => colorDistanceSquared(c, color));
947
- const minDistance = Math.min(...distances);
948
- const minIndex = distances.indexOf(minDistance);
949
- const nearestColor = colors[minIndex];
950
- return nearestColor;
951
- };
952
- }
953
-
954
- /**
955
- * Color transformer which returns the negative color
956
- *
957
- * @public exported from `@promptbook/color`
958
- */
959
- function negative(color) {
960
- const r = 255 - color.red;
961
- const g = 255 - color.green;
962
- const b = 255 - color.blue;
963
- return Color.fromValues(r, g, b, color.alpha);
964
- }
965
-
966
- /**
967
- * Makes color transformer which finds the furthest color from the given list
968
- *
969
- * @param colors array of colors to choose from
970
- *
971
- * @public exported from `@promptbook/color`
972
- */
973
- function furthest(...colors) {
974
- return (color) => {
975
- const furthestColor = negative(nearest(...colors.map(negative))(color));
976
- return furthestColor;
977
- };
978
- }
979
- /**
980
- * Makes color transformer which finds the best text color (black or white) for the given background color
981
- *
982
- * @public exported from `@promptbook/color`
983
- */
984
- furthest(Color.get('white'), Color.from('black'));
985
-
986
- /**
987
- * Makes color transformer which returns a grayscale version of the color
988
- *
989
- * @param amount from 0 to 1
990
- *
991
- * @public exported from `@promptbook/color`
992
- */
993
- function grayscale(amount) {
994
- return ({ red, green, blue, alpha }) => {
995
- const average = (red + green + blue) / 3;
996
- red = Math.round(average * amount + red * (1 - amount));
997
- green = Math.round(average * amount + green * (1 - amount));
998
- blue = Math.round(average * amount + blue * (1 - amount));
999
- return Color.fromValues(red, green, blue, alpha);
1000
- };
1001
- }
1002
-
1003
992
  /**
1004
993
  * Makes color transformer which saturate the given color
1005
994
  *
@@ -1048,16 +1037,32 @@ const ADMIN_GITHUB_NAME = 'hejny';
1048
1037
  *
1049
1038
  * @public exported from `@promptbook/core`
1050
1039
  */
1051
- const PROMPTBOOK_COLOR = Color.fromHex('#79EAFD');
1052
- // <- TODO: [🧠] Using `Color` here increases the package size approx 3kb, maybe remove it
1040
+ const PROMPTBOOK_COLOR = Color.fromString('promptbook');
1041
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
1053
1042
  /**
1054
- * Dark color of the Promptbook
1043
+ * Colors for syntax highlighting in the `<BookEditor/>`
1044
+ *
1045
+ * TODO: [🗽] Unite branding and make single place for it
1046
+ *
1047
+ * @public exported from `@promptbook/core`
1048
+ */
1049
+ ({
1050
+ TITLE: Color.fromHex('#244EA8'),
1051
+ LINE: Color.fromHex('#eeeeee'),
1052
+ SEPARATOR: Color.fromHex('#cccccc'),
1053
+ COMMITMENT: Color.fromHex('#DA0F78'),
1054
+ PARAMETER: Color.fromHex('#8e44ad'),
1055
+ });
1056
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
1057
+ /**
1058
+ * Chat color of the Promptbook (in chat)
1055
1059
  *
1056
1060
  * TODO: [🗽] Unite branding and make single place for it
1057
1061
  *
1058
1062
  * @public exported from `@promptbook/core`
1059
1063
  */
1060
1064
  PROMPTBOOK_COLOR.then(lighten(0.1)).then(saturate(0.9)).then(grayscale(0.9));
1065
+ // <- TODO: [🧠][🈵] Using `Color` and `lighten`, `saturate`,... here increases the package size approx 3kb, maybe remove it
1061
1066
  /**
1062
1067
  * Color of the user (in chat)
1063
1068
  *
@@ -1147,7 +1152,7 @@ function orderJson(options) {
1147
1152
  function getErrorReportUrl(error) {
1148
1153
  const report = {
1149
1154
  title: `🐜 Error report from ${NAME}`,
1150
- body: spaceTrim((block) => `
1155
+ body: spaceTrim$2((block) => `
1151
1156
 
1152
1157
 
1153
1158
  \`${error.name || 'Error'}\` has occurred in the [${NAME}], please look into it @${ADMIN_GITHUB_NAME}.
@@ -1305,7 +1310,7 @@ function checkSerializableAsJson(options) {
1305
1310
  }
1306
1311
  else if (typeof value === 'object') {
1307
1312
  if (value instanceof Date) {
1308
- throw new UnexpectedError(spaceTrim((block) => `
1313
+ throw new UnexpectedError(spaceTrim$2((block) => `
1309
1314
  \`${name}\` is Date
1310
1315
 
1311
1316
  Use \`string_date_iso8601\` instead
@@ -1324,7 +1329,7 @@ function checkSerializableAsJson(options) {
1324
1329
  throw new UnexpectedError(`${name} is RegExp`);
1325
1330
  }
1326
1331
  else if (value instanceof Error) {
1327
- throw new UnexpectedError(spaceTrim((block) => `
1332
+ throw new UnexpectedError(spaceTrim$2((block) => `
1328
1333
  \`${name}\` is unserialized Error
1329
1334
 
1330
1335
  Use function \`serializeError\`
@@ -1347,7 +1352,7 @@ function checkSerializableAsJson(options) {
1347
1352
  }
1348
1353
  catch (error) {
1349
1354
  assertsError(error);
1350
- throw new UnexpectedError(spaceTrim((block) => `
1355
+ throw new UnexpectedError(spaceTrim$2((block) => `
1351
1356
  \`${name}\` is not serializable
1352
1357
 
1353
1358
  ${block(error.stack || error.message)}
@@ -1379,7 +1384,7 @@ function checkSerializableAsJson(options) {
1379
1384
  }
1380
1385
  }
1381
1386
  else {
1382
- throw new UnexpectedError(spaceTrim((block) => `
1387
+ throw new UnexpectedError(spaceTrim$2((block) => `
1383
1388
  \`${name}\` is unknown type
1384
1389
 
1385
1390
  Additional message for \`${name}\`:
@@ -1409,7 +1414,7 @@ function deepClone(objectValue) {
1409
1414
  TODO: [🧠] Is there a better implementation?
1410
1415
  > const propertyNames = Object.getOwnPropertyNames(objectValue);
1411
1416
  > for (const propertyName of propertyNames) {
1412
- > const value = (objectValue as really_any)[propertyName];
1417
+ > const value = (objectValue as chococake)[propertyName];
1413
1418
  > if (value && typeof value === 'object') {
1414
1419
  > deepClone(value);
1415
1420
  > }
@@ -1513,6 +1518,7 @@ class LimitReachedError extends Error {
1513
1518
  /**
1514
1519
  * Generates random token
1515
1520
  *
1521
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
1516
1522
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
1517
1523
  *
1518
1524
  * @private internal helper function
@@ -1522,6 +1528,7 @@ function $randomToken(randomness) {
1522
1528
  return randomBytes(randomness).toString('hex');
1523
1529
  }
1524
1530
  /**
1531
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
1525
1532
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
1526
1533
  */
1527
1534
 
@@ -1889,10 +1896,13 @@ const LINES_PER_STANDARD_PAGE = 44;
1889
1896
  * @public exported from `@promptbook/utils`
1890
1897
  */
1891
1898
  function countLines(text) {
1899
+ if (text === '') {
1900
+ return 0;
1901
+ }
1892
1902
  text = text.replace('\r\n', '\n');
1893
1903
  text = text.replace('\r', '\n');
1894
1904
  const lines = text.split('\n');
1895
- return lines.reduce((count, line) => count + Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 0);
1905
+ return lines.reduce((count, line) => count + Math.max(Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 1), 0);
1896
1906
  }
1897
1907
  /**
1898
1908
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
@@ -2300,6 +2310,8 @@ function isPassingExpectations(expectations, value) {
2300
2310
  /**
2301
2311
  * Normalizes a given text to camelCase format.
2302
2312
  *
2313
+ * Note: [🔂] This function is idempotent.
2314
+ *
2303
2315
  * @param text The text to be normalized.
2304
2316
  * @param _isFirstLetterCapital Whether the first letter should be capitalized.
2305
2317
  * @returns The camelCase formatted string.
@@ -2352,6 +2364,8 @@ function normalizeTo_camelCase(text, _isFirstLetterCapital = false) {
2352
2364
  /**
2353
2365
  * Converts a given text to kebab-case format.
2354
2366
  *
2367
+ * Note: [🔂] This function is idempotent.
2368
+ *
2355
2369
  * @param text The text to be converted.
2356
2370
  * @returns The kebab-case formatted string.
2357
2371
  * @example 'hello-world'
@@ -2664,6 +2678,9 @@ function nameToUriParts(name) {
2664
2678
  }
2665
2679
 
2666
2680
  /**
2681
+ * Normalizes a given text to PascalCase format.
2682
+ *
2683
+ * Note: [🔂] This function is idempotent.
2667
2684
  *
2668
2685
  * @param text @public exported from `@promptbook/utils`
2669
2686
  * @returns
@@ -2881,7 +2898,7 @@ function extractAllBlocksFromMarkdown(markdown) {
2881
2898
  function extractOneBlockFromMarkdown(markdown) {
2882
2899
  const codeBlocks = extractAllBlocksFromMarkdown(markdown);
2883
2900
  if (codeBlocks.length !== 1) {
2884
- throw new ParseError(spaceTrim((block) => `
2901
+ throw new ParseError(spaceTrim$2((block) => `
2885
2902
  There should be exactly 1 code block in task section, found ${codeBlocks.length} code blocks
2886
2903
 
2887
2904
  ${block(codeBlocks.map((block, i) => `Block ${i + 1}:\n${block.content}`).join('\n\n\n'))}
@@ -3002,8 +3019,8 @@ class JavascriptEvalExecutionTools {
3002
3019
  }
3003
3020
  // Note: [💎]
3004
3021
  // Note: Using direct eval, following variables are in same scope as eval call so they are accessible from inside the evaluated script:
3005
- const spaceTrim$1 = (_) => spaceTrim(_);
3006
- $preserve(spaceTrim$1);
3022
+ const spaceTrim = (_) => spaceTrim$2(_);
3023
+ $preserve(spaceTrim);
3007
3024
  const removeQuotes$1 = removeQuotes;
3008
3025
  $preserve(removeQuotes$1);
3009
3026
  const unwrapResult$1 = unwrapResult;
@@ -3056,7 +3073,7 @@ class JavascriptEvalExecutionTools {
3056
3073
  // TODO: DRY [🍯]
3057
3074
  const buildinFunctions = {
3058
3075
  // TODO: [🍯] DRY all these functions across the file
3059
- spaceTrim: spaceTrim$1,
3076
+ spaceTrim,
3060
3077
  removeQuotes: removeQuotes$1,
3061
3078
  unwrapResult: unwrapResult$1,
3062
3079
  trimEndOfCodeBlock: trimEndOfCodeBlock$1,
@@ -3093,7 +3110,7 @@ class JavascriptEvalExecutionTools {
3093
3110
  .join('\n');
3094
3111
  // script = templateParameters(script, parameters);
3095
3112
  // <- TODO: [🧠][🥳] Should be this is one of two variants how to use parameters in script
3096
- const statementToEvaluate = spaceTrim((block) => `
3113
+ const statementToEvaluate = spaceTrim$2((block) => `
3097
3114
 
3098
3115
  // Build-in functions:
3099
3116
  ${block(buildinFunctionsStatement)}
@@ -3108,7 +3125,7 @@ class JavascriptEvalExecutionTools {
3108
3125
  (()=>{ ${script} })()
3109
3126
  `);
3110
3127
  if (this.options.isVerbose) {
3111
- console.info(spaceTrim((block) => `
3128
+ console.info(spaceTrim$2((block) => `
3112
3129
  🚀 Evaluating ${scriptLanguage} script:
3113
3130
 
3114
3131
  ${block(statementToEvaluate)}`));
@@ -3130,7 +3147,7 @@ class JavascriptEvalExecutionTools {
3130
3147
  To: [PipelineExecutionError: Parameter `{thing}` is not defined],
3131
3148
  */
3132
3149
  if (!statementToEvaluate.includes(undefinedName + '(')) {
3133
- throw new PipelineExecutionError(spaceTrim((block) => `
3150
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
3134
3151
 
3135
3152
  Parameter \`{${undefinedName}}\` is not defined
3136
3153
 
@@ -3152,7 +3169,7 @@ class JavascriptEvalExecutionTools {
3152
3169
  `));
3153
3170
  }
3154
3171
  else {
3155
- throw new PipelineExecutionError(spaceTrim((block) => `
3172
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
3156
3173
  Function ${undefinedName}() is not defined
3157
3174
 
3158
3175
  - Make sure that the function is one of built-in functions