@promptbook/fake-llm 0.103.0-10 → 0.103.0-100

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 (253) hide show
  1. package/README.md +59 -35
  2. package/esm/index.es.js +120 -121
  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 +20 -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 +58 -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 +19 -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 +77 -7
  27. package/esm/typings/src/book-components/BookEditor/BookEditorActionbar.d.ts +14 -0
  28. package/esm/typings/src/book-components/Chat/AgentChat/AgentChat.d.ts +14 -0
  29. package/esm/typings/src/book-components/Chat/AgentChat/AgentChatProps.d.ts +13 -0
  30. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +10 -0
  31. package/esm/typings/src/book-components/Chat/LlmChat/LlmChatProps.d.ts +5 -0
  32. package/esm/typings/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +15 -0
  33. package/esm/typings/src/book-components/Chat/MockedChat/MockedChat.d.ts +5 -0
  34. package/esm/typings/src/book-components/Chat/save/_common/ChatSaveFormatDefinition.d.ts +1 -1
  35. package/esm/typings/src/book-components/Chat/save/html/htmlSaveFormatDefinition.d.ts +1 -0
  36. package/esm/typings/src/book-components/Chat/save/pdf/pdfSaveFormatDefinition.d.ts +4 -0
  37. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  38. package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgent.d.ts +29 -0
  39. package/esm/typings/src/book-components/Qr/BrandedQrCode.d.ts +18 -0
  40. package/esm/typings/src/book-components/Qr/GenericQrCode.d.ts +10 -0
  41. package/esm/typings/src/book-components/Qr/PromptbookQrCode.d.ts +18 -0
  42. package/esm/typings/src/book-components/Qr/useQrCode.d.ts +15 -0
  43. package/esm/typings/src/book-components/_common/Dropdown/Dropdown.d.ts +15 -0
  44. package/esm/typings/src/book-components/_common/HamburgerMenu/HamburgerMenu.d.ts +12 -0
  45. package/esm/typings/src/book-components/_common/Modal/Modal.d.ts +2 -2
  46. package/esm/typings/src/book-components/_common/Tooltip/Tooltip.d.ts +47 -0
  47. package/esm/typings/src/book-components/icons/AboutIcon.d.ts +9 -0
  48. package/esm/typings/src/book-components/icons/CloseIcon.d.ts +4 -8
  49. package/esm/typings/src/book-components/icons/DownloadIcon.d.ts +9 -0
  50. package/esm/typings/src/book-components/icons/ExitFullscreenIcon.d.ts +7 -0
  51. package/esm/typings/src/book-components/icons/FullscreenIcon.d.ts +7 -0
  52. package/esm/typings/src/book-components/icons/MenuIcon.d.ts +12 -0
  53. package/esm/typings/src/book-components/icons/MicIcon.d.ts +8 -0
  54. package/esm/typings/src/cli/cli-commands/_boilerplate.d.ts +2 -1
  55. package/esm/typings/src/cli/cli-commands/about.d.ts +3 -1
  56. package/esm/typings/src/cli/cli-commands/hello.d.ts +2 -1
  57. package/esm/typings/src/cli/cli-commands/list-models.d.ts +2 -1
  58. package/esm/typings/src/cli/cli-commands/list-scrapers.d.ts +2 -1
  59. package/esm/typings/src/cli/cli-commands/login.d.ts +2 -1
  60. package/esm/typings/src/cli/cli-commands/make.d.ts +2 -1
  61. package/esm/typings/src/cli/cli-commands/prettify.d.ts +2 -1
  62. package/esm/typings/src/cli/cli-commands/run.d.ts +2 -1
  63. package/esm/typings/src/cli/cli-commands/{start-server.d.ts → start-agents-server.d.ts} +3 -2
  64. package/esm/typings/src/cli/cli-commands/start-pipelines-server.d.ts +15 -0
  65. package/esm/typings/src/cli/cli-commands/test-command.d.ts +2 -1
  66. package/esm/typings/src/cli/common/$addGlobalOptionsToCommand.d.ts +2 -1
  67. package/esm/typings/src/collection/agent-collection/AgentCollection.d.ts +12 -0
  68. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +75 -0
  69. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabaseOptions.d.ts +10 -0
  70. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentsDatabaseSchema.d.ts +154 -0
  71. package/esm/typings/src/collection/{PipelineCollection.d.ts → pipeline-collection/PipelineCollection.d.ts} +7 -3
  72. package/esm/typings/src/collection/{SimplePipelineCollection.d.ts → pipeline-collection/SimplePipelineCollection.d.ts} +5 -5
  73. package/esm/typings/src/collection/{constructors/createCollectionFromDirectory.d.ts → pipeline-collection/constructors/createPipelineCollectionFromDirectory.d.ts} +8 -11
  74. package/esm/typings/src/collection/pipeline-collection/constructors/createPipelineCollectionFromJson.d.ts +13 -0
  75. package/esm/typings/src/collection/{constructors/createCollectionFromPromise.d.ts → pipeline-collection/constructors/createPipelineCollectionFromPromise.d.ts} +6 -5
  76. package/esm/typings/src/collection/pipeline-collection/constructors/createPipelineCollectionFromPromise.test.d.ts +1 -0
  77. package/esm/typings/src/collection/{constructors/createCollectionFromUrl.d.ts → pipeline-collection/constructors/createPipelineCollectionFromUrl.d.ts} +3 -3
  78. package/esm/typings/src/collection/{constructors/createSubcollection.d.ts → pipeline-collection/constructors/createPipelineSubcollection.d.ts} +3 -3
  79. package/esm/typings/src/collection/pipeline-collection/pipelineCollectionToJson.d.ts +13 -0
  80. package/esm/typings/src/commands/_common/types/CommandParser.d.ts +4 -5
  81. package/esm/typings/src/{book-2.0/commitments → commitments}/ACTION/ACTION.d.ts +5 -1
  82. package/esm/typings/src/commitments/CLOSED/CLOSED.d.ts +35 -0
  83. package/esm/typings/src/commitments/COMPONENT/COMPONENT.d.ts +28 -0
  84. package/esm/typings/src/{book-2.0/commitments → commitments}/DELETE/DELETE.d.ts +5 -1
  85. package/esm/typings/src/{book-2.0/commitments → commitments}/FORMAT/FORMAT.d.ts +5 -1
  86. package/esm/typings/src/commitments/FROM/FROM.d.ts +34 -0
  87. package/esm/typings/src/{book-2.0/commitments → commitments}/GOAL/GOAL.d.ts +5 -1
  88. package/esm/typings/src/{book-2.0/commitments → commitments}/KNOWLEDGE/KNOWLEDGE.d.ts +5 -5
  89. package/esm/typings/src/commitments/LANGUAGE/LANGUAGE.d.ts +35 -0
  90. package/esm/typings/src/{book-2.0/commitments → commitments}/MEMORY/MEMORY.d.ts +5 -1
  91. package/esm/typings/src/commitments/MESSAGE/AgentMessageCommitmentDefinition.d.ts +32 -0
  92. package/esm/typings/src/commitments/MESSAGE/InitialMessageCommitmentDefinition.d.ts +32 -0
  93. package/esm/typings/src/{book-2.0/commitments → commitments}/MESSAGE/MESSAGE.d.ts +5 -1
  94. package/esm/typings/src/commitments/MESSAGE/UserMessageCommitmentDefinition.d.ts +32 -0
  95. package/esm/typings/src/{book-2.0/commitments → commitments}/META/META.d.ts +5 -1
  96. package/esm/typings/src/commitments/META_COLOR/META_COLOR.d.ts +48 -0
  97. package/esm/typings/src/commitments/META_FONT/META_FONT.d.ts +42 -0
  98. package/esm/typings/src/{book-2.0/commitments → commitments}/META_IMAGE/META_IMAGE.d.ts +5 -1
  99. package/esm/typings/src/{book-2.0/commitments → commitments}/META_LINK/META_LINK.d.ts +5 -1
  100. package/esm/typings/src/{book-2.0/commitments → commitments}/MODEL/MODEL.d.ts +5 -1
  101. package/esm/typings/src/{book-2.0/commitments → commitments}/NOTE/NOTE.d.ts +5 -1
  102. package/esm/typings/src/commitments/OPEN/OPEN.d.ts +35 -0
  103. package/esm/typings/src/{book-2.0/commitments → commitments}/PERSONA/PERSONA.d.ts +5 -1
  104. package/esm/typings/src/{book-2.0/commitments → commitments}/RULE/RULE.d.ts +5 -1
  105. package/esm/typings/src/{book-2.0/commitments → commitments}/SAMPLE/SAMPLE.d.ts +5 -1
  106. package/esm/typings/src/{book-2.0/commitments → commitments}/SCENARIO/SCENARIO.d.ts +5 -1
  107. package/esm/typings/src/{book-2.0/commitments → commitments}/STYLE/STYLE.d.ts +5 -1
  108. package/esm/typings/src/commitments/USE/USE.d.ts +53 -0
  109. package/esm/typings/src/commitments/USE_BROWSER/USE_BROWSER.d.ts +38 -0
  110. package/esm/typings/src/commitments/USE_BROWSER/USE_BROWSER.test.d.ts +1 -0
  111. package/esm/typings/src/commitments/USE_MCP/USE_MCP.d.ts +37 -0
  112. package/esm/typings/src/commitments/USE_SEARCH_ENGINE/USE_SEARCH_ENGINE.d.ts +38 -0
  113. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/BaseCommitmentDefinition.d.ts +8 -2
  114. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/CommitmentDefinition.d.ts +6 -1
  115. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/NotYetImplementedCommitmentDefinition.d.ts +5 -1
  116. package/esm/typings/src/{book-2.0/commitments → commitments}/_base/createEmptyAgentModelRequirements.d.ts +1 -1
  117. package/esm/typings/src/commitments/index.d.ts +93 -0
  118. package/esm/typings/src/config.d.ts +24 -3
  119. package/esm/typings/src/conversion/validation/validatePipeline.d.ts +2 -0
  120. package/esm/typings/src/errors/0-index.d.ts +6 -0
  121. package/esm/typings/src/errors/DatabaseError.d.ts +12 -0
  122. package/esm/typings/src/errors/NotAllowed.d.ts +9 -0
  123. package/esm/typings/src/errors/WrappedError.d.ts +2 -2
  124. package/esm/typings/src/execution/AvailableModel.d.ts +1 -0
  125. package/esm/typings/src/execution/Executables.d.ts +3 -0
  126. package/esm/typings/src/execution/ExecutionTask.d.ts +12 -3
  127. package/esm/typings/src/execution/ExecutionTools.d.ts +5 -0
  128. package/esm/typings/src/execution/FilesystemTools.d.ts +1 -1
  129. package/esm/typings/src/execution/LlmExecutionTools.d.ts +21 -1
  130. package/esm/typings/src/execution/createPipelineExecutor/10-executePipeline.d.ts +5 -0
  131. package/esm/typings/src/execution/createPipelineExecutor/20-executeTask.d.ts +5 -0
  132. package/esm/typings/src/execution/createPipelineExecutor/30-executeFormatSubvalues.d.ts +5 -0
  133. package/esm/typings/src/execution/createPipelineExecutor/40-executeAttempts.d.ts +5 -0
  134. package/esm/typings/src/execution/utils/usage-constants.d.ts +4 -124
  135. package/esm/typings/src/execution/utils/validatePromptResult.d.ts +2 -0
  136. package/esm/typings/src/high-level-abstractions/_common/HighLevelAbstraction.d.ts +2 -1
  137. package/esm/typings/src/llm-providers/_common/register/$provideLlmToolsForWizardOrCli.d.ts +2 -2
  138. package/esm/typings/src/llm-providers/_common/register/$registeredLlmToolsMessage.d.ts +2 -1
  139. package/esm/typings/src/llm-providers/_common/register/LlmToolsMetadata.d.ts +1 -1
  140. package/esm/typings/src/llm-providers/_common/utils/assertUniqueModels.d.ts +12 -0
  141. package/esm/typings/src/llm-providers/_multiple/getSingleLlmExecutionTools.d.ts +1 -0
  142. package/esm/typings/src/llm-providers/_multiple/joinLlmExecutionTools.d.ts +1 -0
  143. package/esm/typings/src/llm-providers/agent/Agent.d.ts +70 -0
  144. package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +26 -4
  145. package/esm/typings/src/llm-providers/agent/AgentOptions.d.ts +19 -0
  146. package/esm/typings/src/llm-providers/agent/CreateAgentLlmExecutionToolsOptions.d.ts +17 -0
  147. package/esm/typings/src/llm-providers/agent/RemoteAgent.d.ts +50 -0
  148. package/esm/typings/src/llm-providers/agent/RemoteAgentOptions.d.ts +11 -0
  149. package/esm/typings/src/llm-providers/agent/createAgentLlmExecutionTools.d.ts +1 -19
  150. package/esm/typings/src/llm-providers/anthropic-claude/anthropic-claude-models.d.ts +1 -1
  151. package/esm/typings/src/llm-providers/google/google-models.d.ts +1 -1
  152. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionTools.d.ts +60 -2
  153. package/esm/typings/src/llm-providers/openai/OpenAiAssistantExecutionToolsOptions.d.ts +7 -1
  154. package/esm/typings/src/llm-providers/openai/openai-models.d.ts +1 -1
  155. package/esm/typings/src/llm-providers/openai/openai-models.test.d.ts +4 -0
  156. package/esm/typings/src/other/templates/getTemplatesPipelineCollection.d.ts +1 -1
  157. package/esm/typings/src/pipeline/validatePipelineString.d.ts +2 -0
  158. package/esm/typings/src/playground/permanent/_boilerplate.d.ts +5 -0
  159. package/esm/typings/src/playground/permanent/agent-with-browser-playground.d.ts +5 -0
  160. package/esm/typings/src/prepare/PrepareAndScrapeOptions.d.ts +1 -0
  161. package/esm/typings/src/remote-server/startAgentServer.d.ts +26 -0
  162. package/esm/typings/src/remote-server/startRemoteServer.d.ts +4 -1
  163. package/esm/typings/src/remote-server/types/RemoteServerOptions.d.ts +3 -8
  164. package/esm/typings/src/scrapers/_boilerplate/createBoilerplateScraper.d.ts +1 -12
  165. package/esm/typings/src/scrapers/_boilerplate/register-metadata.d.ts +1 -9
  166. package/esm/typings/src/scrapers/document/createDocumentScraper.d.ts +1 -12
  167. package/esm/typings/src/scrapers/document/register-metadata.d.ts +1 -9
  168. package/esm/typings/src/scrapers/document-legacy/createLegacyDocumentScraper.d.ts +1 -12
  169. package/esm/typings/src/scrapers/document-legacy/register-metadata.d.ts +1 -9
  170. package/esm/typings/src/scrapers/markdown/createMarkdownScraper.d.ts +1 -12
  171. package/esm/typings/src/scrapers/markdown/register-metadata.d.ts +1 -9
  172. package/esm/typings/src/scrapers/markitdown/createMarkitdownScraper.d.ts +1 -12
  173. package/esm/typings/src/scrapers/markitdown/register-metadata.d.ts +1 -9
  174. package/esm/typings/src/scrapers/pdf/createPdfScraper.d.ts +1 -12
  175. package/esm/typings/src/scrapers/pdf/register-metadata.d.ts +1 -9
  176. package/esm/typings/src/scrapers/website/createWebsiteScraper.d.ts +1 -12
  177. package/esm/typings/src/scrapers/website/register-metadata.d.ts +1 -9
  178. package/esm/typings/src/storage/_common/PromptbookStorage.d.ts +1 -0
  179. package/esm/typings/src/storage/env-storage/$EnvStorage.d.ts +2 -1
  180. package/esm/typings/src/transpilers/_common/BookTranspiler.d.ts +33 -0
  181. package/esm/typings/src/transpilers/_common/BookTranspilerOptions.d.ts +18 -0
  182. package/esm/typings/src/transpilers/_common/register/$bookTranspilersRegister.d.ts +15 -0
  183. package/esm/typings/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.d.ts +16 -0
  184. package/esm/typings/src/transpilers/formatted-book-in-markdown/register.d.ts +15 -0
  185. package/esm/typings/src/transpilers/openai-sdk/OpenAiSdkTranspiler.d.ts +16 -0
  186. package/esm/typings/src/transpilers/openai-sdk/OpenAiSdkTranspiler.test.d.ts +1 -0
  187. package/esm/typings/src/transpilers/openai-sdk/playground/playground.d.ts +5 -0
  188. package/esm/typings/src/transpilers/openai-sdk/register.d.ts +15 -0
  189. package/esm/typings/src/types/LlmCall.d.ts +20 -0
  190. package/esm/typings/src/types/Updatable.d.ts +19 -0
  191. package/esm/typings/src/types/typeAliases.d.ts +32 -2
  192. package/esm/typings/src/utils/color/$randomColor.d.ts +1 -0
  193. package/esm/typings/src/utils/color/Color.d.ts +15 -0
  194. package/esm/typings/src/utils/color/Color.test.d.ts +1 -0
  195. package/esm/typings/src/utils/color/css-colors.d.ts +1 -0
  196. package/esm/typings/src/utils/color/internal-utils/checkChannelValue.d.ts +0 -3
  197. package/esm/typings/src/utils/color/operators/darken.d.ts +1 -1
  198. package/esm/typings/src/utils/color/operators/grayscale.d.ts +1 -1
  199. package/esm/typings/src/utils/color/operators/lighten.d.ts +1 -1
  200. package/esm/typings/src/utils/color/operators/mixWithColor.d.ts +1 -1
  201. package/esm/typings/src/utils/color/operators/saturate.d.ts +1 -1
  202. package/esm/typings/src/utils/environment/$detectRuntimeEnvironment.d.ts +16 -0
  203. package/esm/typings/src/utils/environment/$getGlobalScope.d.ts +2 -2
  204. package/esm/typings/src/utils/execCommand/$execCommand.d.ts +2 -1
  205. package/esm/typings/src/utils/execCommand/$execCommands.d.ts +2 -1
  206. package/esm/typings/src/utils/files/$induceBookDownload.d.ts +13 -0
  207. package/esm/typings/src/utils/files/$induceFileDownload.d.ts +13 -0
  208. package/esm/typings/src/utils/files/ObjectUrl.d.ts +46 -0
  209. package/esm/typings/src/utils/files/listAllFiles.d.ts +2 -3
  210. package/esm/typings/src/utils/misc/aboutPromptbookInformation.d.ts +27 -0
  211. package/esm/typings/src/utils/misc/computeHash.d.ts +11 -0
  212. package/esm/typings/src/utils/misc/computeHash.test.d.ts +1 -0
  213. package/esm/typings/src/utils/misc/xAboutPromptbookInformation.d.ts +13 -0
  214. package/esm/typings/src/utils/normalization/normalize-to-kebab-case.d.ts +2 -0
  215. package/esm/typings/src/utils/normalization/normalizeMessageText.d.ts +9 -0
  216. package/esm/typings/src/utils/normalization/normalizeMessageText.test.d.ts +1 -0
  217. package/esm/typings/src/utils/normalization/normalizeTo_PascalCase.d.ts +3 -0
  218. package/esm/typings/src/utils/normalization/normalizeTo_camelCase.d.ts +2 -0
  219. package/esm/typings/src/utils/normalization/titleToName.d.ts +2 -0
  220. package/esm/typings/src/utils/organization/$sideEffect.d.ts +2 -2
  221. package/esm/typings/src/utils/organization/$side_effect.d.ts +7 -0
  222. package/esm/typings/src/utils/organization/TODO_USE.d.ts +2 -2
  223. package/esm/typings/src/utils/organization/keepUnused.d.ts +2 -2
  224. package/esm/typings/src/utils/organization/preserve.d.ts +3 -3
  225. package/esm/typings/src/utils/organization/really_any.d.ts +7 -0
  226. package/esm/typings/src/utils/random/$generateBookBoilerplate.d.ts +25 -0
  227. package/esm/typings/src/utils/random/$randomAgentPersona.d.ts +9 -0
  228. package/esm/typings/src/utils/random/$randomFullnameWithColor.d.ts +13 -0
  229. package/esm/typings/src/utils/random/$randomItem.d.ts +9 -0
  230. package/esm/typings/src/utils/random/$randomSeed.d.ts +3 -0
  231. package/esm/typings/src/utils/random/$randomToken.d.ts +2 -0
  232. package/esm/typings/src/utils/serialization/$deepFreeze.d.ts +2 -1
  233. package/esm/typings/src/utils/serialization/asSerializable.d.ts +2 -2
  234. package/esm/typings/src/utils/serialization/serializeToPromptbookJavascript.d.ts +2 -2
  235. package/esm/typings/src/utils/validators/parameterName/validateParameterName.d.ts +2 -0
  236. package/esm/typings/src/version.d.ts +1 -1
  237. package/esm/typings/src/wizard/$getCompiledBook.d.ts +1 -2
  238. package/package.json +5 -5
  239. package/umd/index.umd.js +120 -123
  240. package/umd/index.umd.js.map +1 -1
  241. package/esm/typings/src/book-2.0/commitments/index.d.ts +0 -60
  242. package/esm/typings/src/book-components/BookEditor/config.d.ts +0 -11
  243. package/esm/typings/src/book-components/Chat/utils/renderMarkdown.d.ts +0 -21
  244. package/esm/typings/src/collection/collectionToJson.d.ts +0 -13
  245. package/esm/typings/src/collection/constructors/createCollectionFromJson.d.ts +0 -13
  246. /package/esm/typings/src/{book-components/Chat/utils/renderMarkdown.test.d.ts → book-2.0/agent-source/computeAgentHash.test.d.ts} +0 -0
  247. /package/esm/typings/src/{collection/constructors/createCollectionFromDirectory.test.d.ts → book-2.0/agent-source/normalizeAgentName.test.d.ts} +0 -0
  248. /package/esm/typings/src/{collection/constructors/createCollectionFromJson.test.d.ts → book-components/Chat/AgentChat/AgentChat.test.d.ts} +0 -0
  249. /package/esm/typings/src/collection/{constructors/createCollectionFromPromise.test.d.ts → pipeline-collection/constructors/createPipelineCollectionFromDirectory.test.d.ts} +0 -0
  250. /package/esm/typings/src/{commands/_common/parseCommand.test.d.ts → collection/pipeline-collection/constructors/createPipelineCollectionFromJson.test.d.ts} +0 -0
  251. /package/esm/typings/src/collection/{collectionToJson.test.d.ts → pipeline-collection/pipelineCollectionToJson.test.d.ts} +0 -0
  252. /package/esm/typings/src/{book-2.0/commitments → commitments}/_base/BookCommitment.d.ts +0 -0
  253. /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-10';
23
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0-100';
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
@@ -397,6 +408,28 @@ class Color {
397
408
  throw new Error(`Can not create color from given object`);
398
409
  }
399
410
  }
411
+ /**
412
+ * Creates a new Color instance from miscellaneous formats
413
+ * It just does not throw error when it fails, it returns PROMPTBOOK_COLOR instead
414
+ *
415
+ * @param color
416
+ * @returns Color object
417
+ */
418
+ static fromSafe(color) {
419
+ try {
420
+ return Color.from(color);
421
+ }
422
+ catch (error) {
423
+ // <- Note: Can not use `assertsError(error)` here because it causes circular dependency
424
+ console.warn(spaceTrim((block) => `
425
+ Color.fromSafe error:
426
+ ${block(error.message)}
427
+
428
+ Returning default PROMPTBOOK_COLOR.
429
+ `));
430
+ return Color.fromString('promptbook');
431
+ }
432
+ }
400
433
  /**
401
434
  * Creates a new Color instance from miscellaneous string formats
402
435
  *
@@ -464,6 +497,9 @@ class Color {
464
497
  if (hex.length === 3) {
465
498
  return Color.fromHex3(hex);
466
499
  }
500
+ if (hex.length === 4) {
501
+ return Color.fromHex4(hex);
502
+ }
467
503
  if (hex.length === 6) {
468
504
  return Color.fromHex6(hex);
469
505
  }
@@ -484,6 +520,19 @@ class Color {
484
520
  const b = parseInt(hex.substr(2, 1), 16) * 16;
485
521
  return take(new Color(r, g, b));
486
522
  }
523
+ /**
524
+ * Creates a new Color instance from color in hex format with 4 digits (with alpha channel)
525
+ *
526
+ * @param color in hex for example `09df`
527
+ * @returns Color object
528
+ */
529
+ static fromHex4(hex) {
530
+ const r = parseInt(hex.substr(0, 1), 16) * 16;
531
+ const g = parseInt(hex.substr(1, 1), 16) * 16;
532
+ const b = parseInt(hex.substr(2, 1), 16) * 16;
533
+ const a = parseInt(hex.substr(3, 1), 16) * 16;
534
+ return take(new Color(r, g, b, a));
535
+ }
487
536
  /**
488
537
  * Creates a new Color instance from color in hex format with 6 color digits (without alpha channel)
489
538
  *
@@ -674,7 +723,8 @@ class Color {
674
723
  * @returns true if the value is a valid hex color string (e.g., `#009edd`, `#fff`, etc.)
675
724
  */
676
725
  static isHexColorString(value) {
677
- return typeof value === 'string' && /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value);
726
+ return (typeof value === 'string' &&
727
+ /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value));
678
728
  }
679
729
  /**
680
730
  * Creates new Color object
@@ -789,6 +839,23 @@ class Color {
789
839
  * TODO: Maybe connect with textures
790
840
  */
791
841
 
842
+ /**
843
+ * Makes color transformer which returns a grayscale version of the color
844
+ *
845
+ * @param amount from 0 to 1
846
+ *
847
+ * @public exported from `@promptbook/color`
848
+ */
849
+ function grayscale(amount) {
850
+ return ({ red, green, blue, alpha }) => {
851
+ const average = (red + green + blue) / 3;
852
+ red = Math.round(average * amount + red * (1 - amount));
853
+ green = Math.round(average * amount + green * (1 - amount));
854
+ blue = Math.round(average * amount + blue * (1 - amount));
855
+ return Color.fromValues(red, green, blue, alpha);
856
+ };
857
+ }
858
+
792
859
  /**
793
860
  * Converts HSL values to RGB values
794
861
  *
@@ -904,102 +971,6 @@ function lighten(amount) {
904
971
  * TODO: Maybe implement by mix+hsl
905
972
  */
906
973
 
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
974
  /**
1004
975
  * Makes color transformer which saturate the given color
1005
976
  *
@@ -1048,16 +1019,32 @@ const ADMIN_GITHUB_NAME = 'hejny';
1048
1019
  *
1049
1020
  * @public exported from `@promptbook/core`
1050
1021
  */
1051
- const PROMPTBOOK_COLOR = Color.fromHex('#79EAFD');
1052
- // <- TODO: [🧠] Using `Color` here increases the package size approx 3kb, maybe remove it
1022
+ const PROMPTBOOK_COLOR = Color.fromString('promptbook');
1023
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
1024
+ /**
1025
+ * Colors for syntax highlighting in the `<BookEditor/>`
1026
+ *
1027
+ * TODO: [🗽] Unite branding and make single place for it
1028
+ *
1029
+ * @public exported from `@promptbook/core`
1030
+ */
1031
+ ({
1032
+ TITLE: Color.fromHex('#244EA8'),
1033
+ LINE: Color.fromHex('#eeeeee'),
1034
+ SEPARATOR: Color.fromHex('#cccccc'),
1035
+ COMMITMENT: Color.fromHex('#DA0F78'),
1036
+ PARAMETER: Color.fromHex('#8e44ad'),
1037
+ });
1038
+ // <- TODO: [🧠][🈵] Using `Color` here increases the package size approx 3kb, maybe remove it
1053
1039
  /**
1054
- * Dark color of the Promptbook
1040
+ * Chat color of the Promptbook (in chat)
1055
1041
  *
1056
1042
  * TODO: [🗽] Unite branding and make single place for it
1057
1043
  *
1058
1044
  * @public exported from `@promptbook/core`
1059
1045
  */
1060
1046
  PROMPTBOOK_COLOR.then(lighten(0.1)).then(saturate(0.9)).then(grayscale(0.9));
1047
+ // <- TODO: [🧠][🈵] Using `Color` and `lighten`, `saturate`,... here increases the package size approx 3kb, maybe remove it
1061
1048
  /**
1062
1049
  * Color of the user (in chat)
1063
1050
  *
@@ -1147,7 +1134,7 @@ function orderJson(options) {
1147
1134
  function getErrorReportUrl(error) {
1148
1135
  const report = {
1149
1136
  title: `🐜 Error report from ${NAME}`,
1150
- body: spaceTrim((block) => `
1137
+ body: spaceTrim$2((block) => `
1151
1138
 
1152
1139
 
1153
1140
  \`${error.name || 'Error'}\` has occurred in the [${NAME}], please look into it @${ADMIN_GITHUB_NAME}.
@@ -1305,7 +1292,7 @@ function checkSerializableAsJson(options) {
1305
1292
  }
1306
1293
  else if (typeof value === 'object') {
1307
1294
  if (value instanceof Date) {
1308
- throw new UnexpectedError(spaceTrim((block) => `
1295
+ throw new UnexpectedError(spaceTrim$2((block) => `
1309
1296
  \`${name}\` is Date
1310
1297
 
1311
1298
  Use \`string_date_iso8601\` instead
@@ -1324,7 +1311,7 @@ function checkSerializableAsJson(options) {
1324
1311
  throw new UnexpectedError(`${name} is RegExp`);
1325
1312
  }
1326
1313
  else if (value instanceof Error) {
1327
- throw new UnexpectedError(spaceTrim((block) => `
1314
+ throw new UnexpectedError(spaceTrim$2((block) => `
1328
1315
  \`${name}\` is unserialized Error
1329
1316
 
1330
1317
  Use function \`serializeError\`
@@ -1347,7 +1334,7 @@ function checkSerializableAsJson(options) {
1347
1334
  }
1348
1335
  catch (error) {
1349
1336
  assertsError(error);
1350
- throw new UnexpectedError(spaceTrim((block) => `
1337
+ throw new UnexpectedError(spaceTrim$2((block) => `
1351
1338
  \`${name}\` is not serializable
1352
1339
 
1353
1340
  ${block(error.stack || error.message)}
@@ -1379,7 +1366,7 @@ function checkSerializableAsJson(options) {
1379
1366
  }
1380
1367
  }
1381
1368
  else {
1382
- throw new UnexpectedError(spaceTrim((block) => `
1369
+ throw new UnexpectedError(spaceTrim$2((block) => `
1383
1370
  \`${name}\` is unknown type
1384
1371
 
1385
1372
  Additional message for \`${name}\`:
@@ -1409,7 +1396,7 @@ function deepClone(objectValue) {
1409
1396
  TODO: [🧠] Is there a better implementation?
1410
1397
  > const propertyNames = Object.getOwnPropertyNames(objectValue);
1411
1398
  > for (const propertyName of propertyNames) {
1412
- > const value = (objectValue as really_any)[propertyName];
1399
+ > const value = (objectValue as chococake)[propertyName];
1413
1400
  > if (value && typeof value === 'object') {
1414
1401
  > deepClone(value);
1415
1402
  > }
@@ -1513,6 +1500,7 @@ class LimitReachedError extends Error {
1513
1500
  /**
1514
1501
  * Generates random token
1515
1502
  *
1503
+ * Note: `$` is used to indicate that this function is not a pure function - it is not deterministic
1516
1504
  * Note: This function is cryptographically secure (it uses crypto.randomBytes internally)
1517
1505
  *
1518
1506
  * @private internal helper function
@@ -1522,6 +1510,7 @@ function $randomToken(randomness) {
1522
1510
  return randomBytes(randomness).toString('hex');
1523
1511
  }
1524
1512
  /**
1513
+ * TODO: [🤶] Maybe export through `@promptbook/utils` or `@promptbook/random` package
1525
1514
  * TODO: Maybe use nanoid instead https://github.com/ai/nanoid
1526
1515
  */
1527
1516
 
@@ -1889,10 +1878,13 @@ const LINES_PER_STANDARD_PAGE = 44;
1889
1878
  * @public exported from `@promptbook/utils`
1890
1879
  */
1891
1880
  function countLines(text) {
1881
+ if (text === '') {
1882
+ return 0;
1883
+ }
1892
1884
  text = text.replace('\r\n', '\n');
1893
1885
  text = text.replace('\r', '\n');
1894
1886
  const lines = text.split('\n');
1895
- return lines.reduce((count, line) => count + Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 0);
1887
+ return lines.reduce((count, line) => count + Math.max(Math.ceil(line.length / CHARACTERS_PER_STANDARD_LINE), 1), 0);
1896
1888
  }
1897
1889
  /**
1898
1890
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
@@ -2300,6 +2292,8 @@ function isPassingExpectations(expectations, value) {
2300
2292
  /**
2301
2293
  * Normalizes a given text to camelCase format.
2302
2294
  *
2295
+ * Note: [🔂] This function is idempotent.
2296
+ *
2303
2297
  * @param text The text to be normalized.
2304
2298
  * @param _isFirstLetterCapital Whether the first letter should be capitalized.
2305
2299
  * @returns The camelCase formatted string.
@@ -2352,6 +2346,8 @@ function normalizeTo_camelCase(text, _isFirstLetterCapital = false) {
2352
2346
  /**
2353
2347
  * Converts a given text to kebab-case format.
2354
2348
  *
2349
+ * Note: [🔂] This function is idempotent.
2350
+ *
2355
2351
  * @param text The text to be converted.
2356
2352
  * @returns The kebab-case formatted string.
2357
2353
  * @example 'hello-world'
@@ -2664,6 +2660,9 @@ function nameToUriParts(name) {
2664
2660
  }
2665
2661
 
2666
2662
  /**
2663
+ * Normalizes a given text to PascalCase format.
2664
+ *
2665
+ * Note: [🔂] This function is idempotent.
2667
2666
  *
2668
2667
  * @param text @public exported from `@promptbook/utils`
2669
2668
  * @returns
@@ -2881,7 +2880,7 @@ function extractAllBlocksFromMarkdown(markdown) {
2881
2880
  function extractOneBlockFromMarkdown(markdown) {
2882
2881
  const codeBlocks = extractAllBlocksFromMarkdown(markdown);
2883
2882
  if (codeBlocks.length !== 1) {
2884
- throw new ParseError(spaceTrim((block) => `
2883
+ throw new ParseError(spaceTrim$2((block) => `
2885
2884
  There should be exactly 1 code block in task section, found ${codeBlocks.length} code blocks
2886
2885
 
2887
2886
  ${block(codeBlocks.map((block, i) => `Block ${i + 1}:\n${block.content}`).join('\n\n\n'))}
@@ -3002,8 +3001,8 @@ class JavascriptEvalExecutionTools {
3002
3001
  }
3003
3002
  // Note: [💎]
3004
3003
  // 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);
3004
+ const spaceTrim = (_) => spaceTrim$2(_);
3005
+ $preserve(spaceTrim);
3007
3006
  const removeQuotes$1 = removeQuotes;
3008
3007
  $preserve(removeQuotes$1);
3009
3008
  const unwrapResult$1 = unwrapResult;
@@ -3056,7 +3055,7 @@ class JavascriptEvalExecutionTools {
3056
3055
  // TODO: DRY [🍯]
3057
3056
  const buildinFunctions = {
3058
3057
  // TODO: [🍯] DRY all these functions across the file
3059
- spaceTrim: spaceTrim$1,
3058
+ spaceTrim,
3060
3059
  removeQuotes: removeQuotes$1,
3061
3060
  unwrapResult: unwrapResult$1,
3062
3061
  trimEndOfCodeBlock: trimEndOfCodeBlock$1,
@@ -3093,7 +3092,7 @@ class JavascriptEvalExecutionTools {
3093
3092
  .join('\n');
3094
3093
  // script = templateParameters(script, parameters);
3095
3094
  // <- TODO: [🧠][🥳] Should be this is one of two variants how to use parameters in script
3096
- const statementToEvaluate = spaceTrim((block) => `
3095
+ const statementToEvaluate = spaceTrim$2((block) => `
3097
3096
 
3098
3097
  // Build-in functions:
3099
3098
  ${block(buildinFunctionsStatement)}
@@ -3108,7 +3107,7 @@ class JavascriptEvalExecutionTools {
3108
3107
  (()=>{ ${script} })()
3109
3108
  `);
3110
3109
  if (this.options.isVerbose) {
3111
- console.info(spaceTrim((block) => `
3110
+ console.info(spaceTrim$2((block) => `
3112
3111
  🚀 Evaluating ${scriptLanguage} script:
3113
3112
 
3114
3113
  ${block(statementToEvaluate)}`));
@@ -3130,7 +3129,7 @@ class JavascriptEvalExecutionTools {
3130
3129
  To: [PipelineExecutionError: Parameter `{thing}` is not defined],
3131
3130
  */
3132
3131
  if (!statementToEvaluate.includes(undefinedName + '(')) {
3133
- throw new PipelineExecutionError(spaceTrim((block) => `
3132
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
3134
3133
 
3135
3134
  Parameter \`{${undefinedName}}\` is not defined
3136
3135
 
@@ -3152,7 +3151,7 @@ class JavascriptEvalExecutionTools {
3152
3151
  `));
3153
3152
  }
3154
3153
  else {
3155
- throw new PipelineExecutionError(spaceTrim((block) => `
3154
+ throw new PipelineExecutionError(spaceTrim$2((block) => `
3156
3155
  Function ${undefinedName}() is not defined
3157
3156
 
3158
3157
  - Make sure that the function is one of built-in functions