@promptbook/remote-server 0.100.4-0 → 0.101.0-1

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 (81) hide show
  1. package/esm/index.es.js +39 -7
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/src/_packages/components.index.d.ts +4 -0
  4. package/esm/typings/src/_packages/core.index.d.ts +4 -2
  5. package/esm/typings/src/_packages/markdown-utils.index.d.ts +14 -0
  6. package/esm/typings/src/_packages/types.index.d.ts +4 -6
  7. package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +21 -0
  8. package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/AgentModelRequirements.d.ts +1 -1
  9. package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/AgentSourceParseResult.d.ts +3 -1
  10. package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/createAgentModelRequirements.d.ts +2 -2
  11. package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/createAgentModelRequirementsWithCommitments.d.ts +3 -3
  12. package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/createCommitmentRegex.d.ts +2 -2
  13. package/esm/typings/src/book-2.0/agent-source/extractMetaLinks.d.ts +8 -0
  14. package/esm/typings/src/book-2.0/agent-source/parseAgentSource.d.ts +4 -19
  15. package/esm/typings/src/book-2.0/agent-source/parseAgentSourceWithCommitments.d.ts +9 -0
  16. package/esm/typings/src/book-2.0/commitments/ACTION/ACTION.d.ts +1 -1
  17. package/esm/typings/src/book-2.0/commitments/FORMAT/FORMAT.d.ts +1 -1
  18. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/KNOWLEDGE.d.ts +1 -1
  19. package/esm/typings/src/book-2.0/commitments/META_IMAGE/META_IMAGE.d.ts +1 -1
  20. package/esm/typings/src/book-2.0/commitments/META_LINK/META_LINK.d.ts +1 -1
  21. package/esm/typings/src/book-2.0/commitments/MODEL/MODEL.d.ts +1 -1
  22. package/esm/typings/src/book-2.0/commitments/NOTE/NOTE.d.ts +1 -1
  23. package/esm/typings/src/book-2.0/commitments/PERSONA/PERSONA.d.ts +1 -1
  24. package/esm/typings/src/book-2.0/commitments/RULE/RULE.d.ts +1 -1
  25. package/esm/typings/src/book-2.0/commitments/SAMPLE/SAMPLE.d.ts +1 -1
  26. package/esm/typings/src/book-2.0/commitments/STYLE/STYLE.d.ts +1 -1
  27. package/esm/typings/src/book-2.0/commitments/_base/BaseCommitmentDefinition.d.ts +1 -1
  28. package/esm/typings/src/book-2.0/commitments/_base/CommitmentDefinition.d.ts +1 -1
  29. package/esm/typings/src/book-2.0/commitments/_base/NotYetImplementedCommitmentDefinition.d.ts +1 -1
  30. package/esm/typings/src/book-2.0/commitments/{_misc → _base}/ParsedCommitment.d.ts +1 -1
  31. package/esm/typings/src/book-2.0/commitments/_base/createEmptyAgentModelRequirements.d.ts +1 -1
  32. package/esm/typings/src/book-2.0/utils/extractAgentMetadata.d.ts +17 -0
  33. package/esm/typings/src/book-2.0/utils/extractProfileImageFromSystemMessage.d.ts +12 -0
  34. package/esm/typings/src/book-2.0/utils/generateGravatarUrl.d.ts +10 -0
  35. package/esm/typings/src/book-2.0/utils/generatePlaceholderAgentProfileImageUrl.d.ts +10 -0
  36. package/esm/typings/src/book-components/AvatarProfile/AvatarChip/AvatarChip.d.ts +1 -1
  37. package/esm/typings/src/book-components/AvatarProfile/AvatarProfile/AvatarProfile.d.ts +2 -8
  38. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +6 -0
  39. package/esm/typings/src/book-components/Chat/examples/ChatMarkdownDemo.d.ts +16 -0
  40. package/esm/typings/src/book-components/Chat/types/ChatParticipant.d.ts +1 -1
  41. package/esm/typings/src/book-components/Chat/utils/renderMarkdown.d.ts +21 -0
  42. package/esm/typings/src/book-components/Chat/utils/renderMarkdown.test.d.ts +1 -0
  43. package/esm/typings/src/llm-providers/_common/profiles/llmProviderProfiles.d.ts +1 -1
  44. package/esm/typings/src/utils/expectation-counters/countCharacters.d.ts +2 -1
  45. package/esm/typings/src/utils/expectation-counters/countLines.d.ts +2 -1
  46. package/esm/typings/src/utils/expectation-counters/countPages.d.ts +2 -1
  47. package/esm/typings/src/utils/expectation-counters/countParagraphs.d.ts +2 -1
  48. package/esm/typings/src/utils/expectation-counters/countSentences.d.ts +1 -0
  49. package/esm/typings/src/utils/expectation-counters/countWords.d.ts +3 -1
  50. package/esm/typings/src/utils/markdown/escapeMarkdownBlock.d.ts +2 -0
  51. package/esm/typings/src/utils/markdown/humanizeAiText.d.ts +13 -0
  52. package/esm/typings/src/utils/markdown/humanizeAiText.test.d.ts +1 -0
  53. package/esm/typings/src/utils/markdown/humanizeAiTextEllipsis.d.ts +13 -0
  54. package/esm/typings/src/utils/markdown/humanizeAiTextEmdashed.d.ts +13 -0
  55. package/esm/typings/src/utils/markdown/humanizeAiTextQuotes.d.ts +13 -0
  56. package/esm/typings/src/utils/markdown/humanizeAiTextWhitespace.d.ts +13 -0
  57. package/esm/typings/src/utils/markdown/prettifyMarkdown.d.ts +8 -0
  58. package/esm/typings/src/utils/markdown/promptbookifyAiText.d.ts +12 -0
  59. package/esm/typings/src/utils/markdown/promptbookifyAiText.test.d.ts +1 -0
  60. package/esm/typings/src/utils/markdown/removeMarkdownLinks.d.ts +11 -0
  61. package/esm/typings/src/utils/markdown/removeMarkdownLinks.test.d.ts +4 -0
  62. package/esm/typings/src/utils/normalization/capitalize.d.ts +2 -0
  63. package/esm/typings/src/utils/normalization/decapitalize.d.ts +3 -1
  64. package/esm/typings/src/utils/normalization/normalizeTo_SCREAMING_CASE.d.ts +2 -0
  65. package/esm/typings/src/utils/normalization/normalizeTo_snake_case.d.ts +2 -0
  66. package/esm/typings/src/utils/normalization/normalizeWhitespaces.d.ts +2 -0
  67. package/esm/typings/src/utils/normalization/removeDiacritics.d.ts +2 -0
  68. package/esm/typings/src/utils/parseNumber.d.ts +1 -0
  69. package/esm/typings/src/utils/removeEmojis.d.ts +2 -0
  70. package/esm/typings/src/utils/removeQuotes.d.ts +1 -0
  71. package/esm/typings/src/utils/serialization/deepClone.d.ts +1 -0
  72. package/esm/typings/src/utils/trimCodeBlock.d.ts +1 -0
  73. package/esm/typings/src/utils/validators/url/isValidUrl.d.ts +1 -0
  74. package/esm/typings/src/utils/validators/uuid/isValidUuid.d.ts +2 -0
  75. package/esm/typings/src/version.d.ts +1 -1
  76. package/package.json +2 -2
  77. package/umd/index.umd.js +44 -11
  78. package/umd/index.umd.js.map +1 -1
  79. package/esm/typings/src/book-2.0/commitments/_misc/parseAgentSourceWithCommitments.d.ts +0 -24
  80. package/esm/typings/src/book-2.0/utils/profileImageUtils.d.ts +0 -39
  81. /package/esm/typings/src/book-2.0/{commitments/_misc → agent-source}/removeCommentsFromSystemMessage.d.ts +0 -0
@@ -0,0 +1,13 @@
1
+ import { string_markdown } from '../../types/typeAliases';
2
+ /**
3
+ * Change ellipsis character to three dots `…` -> `...`
4
+ *
5
+ * Note: [🔂] This function is idempotent.
6
+ * Tip: If you want to do the full cleanup, look for `humanizeAiText` exported `@promptbook/markdown-utils`
7
+ *
8
+ * @public exported from `@promptbook/markdown-utils`
9
+ */
10
+ export declare function humanizeAiTextEllipsis(aiText: string_markdown): string_markdown;
11
+ /**
12
+ * Note: [🏂] This function is not tested by itself but together with other cleanup functions with `humanizeAiText`
13
+ */
@@ -0,0 +1,13 @@
1
+ import { string_markdown } from '../../types/typeAliases';
2
+ /**
3
+ * Change em-dashes to regular dashes `—` -> `-`
4
+ *
5
+ * Note: [🔂] This function is idempotent.
6
+ * Tip: If you want to do the full cleanup, look for `humanizeAiText` exported `@promptbook/markdown-utils`
7
+ *
8
+ * @public exported from `@promptbook/markdown-utils`
9
+ */
10
+ export declare function humanizeAiTextEmdashed(aiText: string_markdown): string_markdown;
11
+ /**
12
+ * Note: [🏂] This function is not tested by itself but together with other cleanup functions with `humanizeAiText`
13
+ */
@@ -0,0 +1,13 @@
1
+ import { string_markdown } from '../../types/typeAliases';
2
+ /**
3
+ * Change smart quotes to regular quotes
4
+ *
5
+ * Note: [🔂] This function is idempotent.
6
+ * Tip: If you want to do the full cleanup, look for `humanizeAiText` exported `@promptbook/markdown-utils`
7
+ *
8
+ * @public exported from `@promptbook/markdown-utils`
9
+ */
10
+ export declare function humanizeAiTextQuotes(aiText: string_markdown): string_markdown;
11
+ /**
12
+ * Note: [🏂] This function is not tested by itself but together with other cleanup functions with `humanizeAiText`
13
+ */
@@ -0,0 +1,13 @@
1
+ import { string_markdown } from '../../types/typeAliases';
2
+ /**
3
+ * Change unprintable hard spaces to regular spaces
4
+ *
5
+ * Note: [🔂] This function is idempotent.
6
+ * Tip: If you want to do the full cleanup, look for `humanizeAiText` exported `@promptbook/markdown-utils`
7
+ *
8
+ * @public exported from `@promptbook/markdown-utils`
9
+ */
10
+ export declare function humanizeAiTextWhitespace(aiText: string_markdown): string_markdown;
11
+ /**
12
+ * Note: [🏂] This function is not tested by itself but together with other cleanup functions with `humanizeAiText`
13
+ */
@@ -7,3 +7,11 @@ import type { string_html } from '../../types/typeAliases';
7
7
  * @private withing the package because of HUGE size of prettier dependency
8
8
  */
9
9
  export declare function prettifyMarkdown<TContent extends string_html>(content: TContent): TContent;
10
+ /**
11
+ * Async version of prettifyMarkdown using dynamic imports
12
+ *
13
+ * @param content raw html code
14
+ * @returns formatted html code
15
+ * @private withing the package because of HUGE size of prettier dependency
16
+ */
17
+ export declare function prettifyMarkdownAsync<TContent extends string_html>(content: TContent): Promise<TContent>;
@@ -0,0 +1,12 @@
1
+ import { string_markdown } from '../../types/typeAliases';
2
+ /**
3
+ * Function `promptbookifyAiText` will slightly modify the text so we know it was processed by Promptbook
4
+ *
5
+ * @public exported from `@promptbook/markdown-utils`
6
+ */
7
+ export declare function promptbookifyAiText(text: string_markdown): string_markdown;
8
+ /**
9
+ * TODO: !!!!! Make the function idempotent and add "Note: [🔂] This function is idempotent."
10
+ * TODO: [🅾️]!!! Use this across the project where AI text is involved
11
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
12
+ */
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Removes Markdown link tags from a string.
3
+ *
4
+ * @param {string} str - The string to remove Markdown tags from.
5
+ * @returns {string} The input string with all Markdown tags removed.
6
+ * @public exported from `@promptbook/markdown-utils`
7
+ */
8
+ export declare function removeMarkdownLinks(str: string): string;
9
+ /**
10
+ * @see https://chat.openai.com/chat/bb7c3a5b-fe9c-4ccc-9057-f47e0fd66489
11
+ */
@@ -0,0 +1,4 @@
1
+ export {};
2
+ /**
3
+ * @see https://chat.openai.com/chat/bb7c3a5b-fe9c-4ccc-9057-f47e0fd66489
4
+ */
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Makes first letter of a string uppercase
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
5
+ *
4
6
  * @public exported from `@promptbook/utils`
5
7
  */
6
8
  export declare function capitalize(word: string): string;
@@ -1,5 +1,7 @@
1
1
  /**
2
- * Makes first letter of a string uppercase
2
+ * Makes first letter of a string lowercase
3
+ *
4
+ * Note: [🔂] This function is idempotent.
3
5
  *
4
6
  * @public exported from `@promptbook/utils`
5
7
  */
@@ -9,6 +9,8 @@ export type string_SCREAMING_CASE = string;
9
9
  /**
10
10
  * Normalizes a text string to SCREAMING_CASE (all uppercase with underscores).
11
11
  *
12
+ * Note: [🔂] This function is idempotent.
13
+ *
12
14
  * @param text The text string to be converted to SCREAMING_CASE format.
13
15
  * @returns The normalized text in SCREAMING_CASE format.
14
16
  * @example 'HELLO_WORLD'
@@ -8,6 +8,8 @@ export type string_snake_case = string;
8
8
  /**
9
9
  * Normalizes a text string to snake_case format.
10
10
  *
11
+ * Note: [🔂] This function is idempotent.
12
+ *
11
13
  * @param text The text string to be converted to snake_case format.
12
14
  * @returns The normalized text in snake_case format.
13
15
  * @example 'hello_world'
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Take every whitespace (space, new line, tab) and replace it with a single space
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
5
+ *
4
6
  * @public exported from `@promptbook/utils`
5
7
  */
6
8
  export declare function normalizeWhitespaces(sentence: string): string;
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Removes diacritic marks (accents) from characters in a string.
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
5
+ *
4
6
  * @param input The string containing diacritics to be normalized.
5
7
  * @returns The string with diacritics removed or normalized.
6
8
  * @public exported from `@promptbook/utils`
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Function parseNumber will parse number from string
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
4
5
  * Unlike Number.parseInt, Number.parseFloat it will never ever result in NaN
5
6
  * Note: it also works only with decimal numbers
6
7
  *
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Removes emojis from a string and fix whitespaces
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
5
+ *
4
6
  * @param text with emojis
5
7
  * @returns text without emojis
6
8
  * @public exported from `@promptbook/utils`
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Removes quotes from a string
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
4
5
  * Tip: This is very useful for post-processing of the result of the LLM model
5
6
  * Note: This function removes only the same quotes from the beginning and the end of the string
6
7
  * Note: There are two similar functions:
@@ -2,6 +2,7 @@ import type { WritableDeep } from 'type-fest';
2
2
  /**
3
3
  * Creates a deep clone of the given object
4
4
  *
5
+ * Note: [🔂] This function is idempotent.
5
6
  * Note: This method only works for objects that are fully serializable to JSON and do not contain functions, Dates, or special types.
6
7
  *
7
8
  * @param objectValue The object to clone.
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Function trimCodeBlock will trim starting and ending code block from the string if it is present.
3
3
  *
4
+ * Note: [🔂] This function is idempotent.
4
5
  * Note: This is useful for post-processing of the result of the chat LLM model
5
6
  * when the model wraps the result in the (markdown) code block.
6
7
  *
@@ -3,6 +3,7 @@ import type { really_unknown } from '../../organization/really_unknown';
3
3
  /**
4
4
  * Tests if given string is valid URL.
5
5
  *
6
+ * Note: [🔂] This function is idempotent.
6
7
  * Note: Dataurl are considered perfectly valid.
7
8
  * Note: There are two similar functions:
8
9
  * - `isValidUrl` which tests any URL
@@ -3,6 +3,8 @@ import type { really_unknown } from '../../organization/really_unknown';
3
3
  /**
4
4
  * Checks if value is valid uuid
5
5
  *
6
+ * Note: [🔂] This function is idempotent.
7
+ *
6
8
  * @public exported from `@promptbook/utils`
7
9
  */
8
10
  export declare function isValidUuid(value: really_unknown): value is string_uuid;
@@ -15,7 +15,7 @@ export declare const BOOK_LANGUAGE_VERSION: string_semantic_version;
15
15
  export declare const PROMPTBOOK_ENGINE_VERSION: string_promptbook_version;
16
16
  /**
17
17
  * Represents the version string of the Promptbook engine.
18
- * It follows semantic versioning (e.g., `0.100.3-0`).
18
+ * It follows semantic versioning (e.g., `0.101.0-0`).
19
19
  *
20
20
  * @generated
21
21
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/remote-server",
3
- "version": "0.100.4-0",
3
+ "version": "0.101.0-1",
4
4
  "description": "Promptbook: Run AI apps in plain human language across multiple models and platforms",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -95,7 +95,7 @@
95
95
  "module": "./esm/index.es.js",
96
96
  "typings": "./esm/typings/src/_packages/remote-server.index.d.ts",
97
97
  "peerDependencies": {
98
- "@promptbook/core": "0.100.4-0"
98
+ "@promptbook/core": "0.101.0-1"
99
99
  },
100
100
  "dependencies": {
101
101
  "colors": "1.4.0",
package/umd/index.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('colors'), require('express'), require('express-openapi-validator'), require('http'), require('socket.io'), require('spacetrim'), require('swagger-ui-express'), require('waitasecond'), require('crypto'), require('child_process'), require('fs/promises'), require('path'), require('rxjs'), require('prettier/parser-html'), require('prettier/parser-markdown'), require('prettier/standalone'), require('crypto-js/enc-hex'), require('crypto-js/sha256'), require('crypto-js'), require('mime-types'), require('papaparse')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'colors', 'express', 'express-openapi-validator', 'http', 'socket.io', 'spacetrim', 'swagger-ui-express', 'waitasecond', 'crypto', 'child_process', 'fs/promises', 'path', 'rxjs', 'prettier/parser-html', 'prettier/parser-markdown', 'prettier/standalone', 'crypto-js/enc-hex', 'crypto-js/sha256', 'crypto-js', 'mime-types', 'papaparse'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-remote-server"] = {}, global.colors, global.express, global.OpenApiValidator, global.http, global.socket_io, global.spaceTrim, global.swaggerUi, global.waitasecond, global.crypto, global.child_process, global.promises, global.path, global.rxjs, global.parserHtml, global.parserMarkdown, global.standalone, global.hexEncoder, global.sha256, global.cryptoJs, global.mimeTypes, global.papaparse));
5
- })(this, (function (exports, colors, express, OpenApiValidator, http, socket_io, spaceTrim, swaggerUi, waitasecond, crypto, child_process, promises, path, rxjs, parserHtml, parserMarkdown, standalone, hexEncoder, sha256, cryptoJs, mimeTypes, papaparse) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('colors'), require('express'), require('express-openapi-validator'), require('http'), require('socket.io'), require('spacetrim'), require('swagger-ui-express'), require('waitasecond'), require('crypto'), require('child_process'), require('fs/promises'), require('path'), require('rxjs'), require('crypto-js/enc-hex'), require('crypto-js/sha256'), require('crypto-js'), require('mime-types'), require('papaparse')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'colors', 'express', 'express-openapi-validator', 'http', 'socket.io', 'spacetrim', 'swagger-ui-express', 'waitasecond', 'crypto', 'child_process', 'fs/promises', 'path', 'rxjs', 'crypto-js/enc-hex', 'crypto-js/sha256', 'crypto-js', 'mime-types', 'papaparse'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-remote-server"] = {}, global.colors, global.express, global.OpenApiValidator, global.http, global.socket_io, global.spaceTrim, global.swaggerUi, global.waitasecond, global.crypto, global.child_process, global.promises, global.path, global.rxjs, global.hexEncoder, global.sha256, global.cryptoJs, global.mimeTypes, global.papaparse));
5
+ })(this, (function (exports, colors, express, OpenApiValidator, http, socket_io, spaceTrim, swaggerUi, waitasecond, crypto, child_process, promises, path, rxjs, hexEncoder, sha256, cryptoJs, mimeTypes, papaparse) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -30,8 +30,6 @@
30
30
  var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
31
31
  var spaceTrim__default = /*#__PURE__*/_interopDefaultLegacy(spaceTrim);
32
32
  var swaggerUi__default = /*#__PURE__*/_interopDefaultLegacy(swaggerUi);
33
- var parserHtml__default = /*#__PURE__*/_interopDefaultLegacy(parserHtml);
34
- var parserMarkdown__default = /*#__PURE__*/_interopDefaultLegacy(parserMarkdown);
35
33
  var hexEncoder__default = /*#__PURE__*/_interopDefaultLegacy(hexEncoder);
36
34
  var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
37
35
 
@@ -49,7 +47,7 @@
49
47
  * @generated
50
48
  * @see https://github.com/webgptorg/promptbook
51
49
  */
52
- const PROMPTBOOK_ENGINE_VERSION = '0.100.4-0';
50
+ const PROMPTBOOK_ENGINE_VERSION = '0.101.0-1';
53
51
  /**
54
52
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
55
53
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -1314,6 +1312,7 @@
1314
1312
  /**
1315
1313
  * Creates a deep clone of the given object
1316
1314
  *
1315
+ * Note: [🔂] This function is idempotent.
1317
1316
  * Note: This method only works for objects that are fully serializable to JSON and do not contain functions, Dates, or special types.
1318
1317
  *
1319
1318
  * @param objectValue The object to clone.
@@ -1479,6 +1478,7 @@
1479
1478
  /**
1480
1479
  * Tests if given string is valid URL.
1481
1480
  *
1481
+ * Note: [🔂] This function is idempotent.
1482
1482
  * Note: Dataurl are considered perfectly valid.
1483
1483
  * Note: There are two similar functions:
1484
1484
  * - `isValidUrl` which tests any URL
@@ -2387,10 +2387,20 @@
2387
2387
  * @private withing the package because of HUGE size of prettier dependency
2388
2388
  */
2389
2389
  function prettifyMarkdown(content) {
2390
+ // In browser/Next.js environments, just return the original content
2391
+ // since prettier parsers are not available and would cause bundling issues
2392
+ if (typeof window !== 'undefined') {
2393
+ return content;
2394
+ }
2390
2395
  try {
2391
- return standalone.format(content, {
2396
+ // Use dynamic require to avoid static imports that cause bundling issues
2397
+ // This will only work in Node.js environments
2398
+ const prettierStandalone = eval('require')('prettier/standalone');
2399
+ const parserMarkdown = eval('require')('prettier/parser-markdown');
2400
+ const parserHtml = eval('require')('prettier/parser-html');
2401
+ return prettierStandalone.format(content, {
2392
2402
  parser: 'markdown',
2393
- plugins: [parserMarkdown__default["default"], parserHtml__default["default"]],
2403
+ plugins: [parserMarkdown, parserHtml],
2394
2404
  // TODO: DRY - make some import or auto-copy of .prettierrc
2395
2405
  endOfLine: 'lf',
2396
2406
  tabWidth: 4,
@@ -2416,6 +2426,8 @@
2416
2426
  /**
2417
2427
  * Makes first letter of a string uppercase
2418
2428
  *
2429
+ * Note: [🔂] This function is idempotent.
2430
+ *
2419
2431
  * @public exported from `@promptbook/utils`
2420
2432
  */
2421
2433
  function capitalize(word) {
@@ -2947,7 +2959,7 @@
2947
2959
  };
2948
2960
  /**
2949
2961
  * TODO: Refactor this - each profile must be alongside the provider definition
2950
- * TODO: [🕛] Unite `AvatarProfileProps`, `ChatParticipant`, `LlmExecutionTools` + `LlmToolsMetadata`
2962
+ * TODO: [🕛] Unite `AgentBasicInformation`, `ChatParticipant`, `LlmExecutionTools` + `LlmToolsMetadata`
2951
2963
  * Note: [💞] Ignore a discrepancy between file name and entity name
2952
2964
  */
2953
2965
 
@@ -3256,6 +3268,8 @@
3256
3268
  /**
3257
3269
  * Normalizes a text string to SCREAMING_CASE (all uppercase with underscores).
3258
3270
  *
3271
+ * Note: [🔂] This function is idempotent.
3272
+ *
3259
3273
  * @param text The text string to be converted to SCREAMING_CASE format.
3260
3274
  * @returns The normalized text in SCREAMING_CASE format.
3261
3275
  * @example 'HELLO_WORLD'
@@ -3311,6 +3325,8 @@
3311
3325
  /**
3312
3326
  * Normalizes a text string to snake_case format.
3313
3327
  *
3328
+ * Note: [🔂] This function is idempotent.
3329
+ *
3314
3330
  * @param text The text string to be converted to snake_case format.
3315
3331
  * @returns The normalized text in snake_case format.
3316
3332
  * @example 'hello_world'
@@ -3728,6 +3744,8 @@
3728
3744
  /**
3729
3745
  * Removes diacritic marks (accents) from characters in a string.
3730
3746
  *
3747
+ * Note: [🔂] This function is idempotent.
3748
+ *
3731
3749
  * @param input The string containing diacritics to be normalized.
3732
3750
  * @returns The string with diacritics removed or normalized.
3733
3751
  * @public exported from `@promptbook/utils`
@@ -3882,6 +3900,8 @@
3882
3900
  /**
3883
3901
  * Removes emojis from a string and fix whitespaces
3884
3902
  *
3903
+ * Note: [🔂] This function is idempotent.
3904
+ *
3885
3905
  * @param text with emojis
3886
3906
  * @returns text without emojis
3887
3907
  * @public exported from `@promptbook/utils`
@@ -5275,6 +5295,7 @@
5275
5295
  }
5276
5296
  /**
5277
5297
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5298
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5278
5299
  */
5279
5300
 
5280
5301
  /**
@@ -5309,6 +5330,7 @@
5309
5330
  }
5310
5331
  /**
5311
5332
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5333
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5312
5334
  */
5313
5335
 
5314
5336
  /**
@@ -5323,6 +5345,7 @@
5323
5345
  }
5324
5346
  /**
5325
5347
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5348
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5326
5349
  */
5327
5350
 
5328
5351
  /**
@@ -5335,6 +5358,7 @@
5335
5358
  }
5336
5359
  /**
5337
5360
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5361
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5338
5362
  */
5339
5363
 
5340
5364
  /**
@@ -5355,6 +5379,7 @@
5355
5379
  }
5356
5380
  /**
5357
5381
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5382
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5358
5383
  */
5359
5384
 
5360
5385
  /**
@@ -5371,6 +5396,8 @@
5371
5396
  }
5372
5397
  /**
5373
5398
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5399
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5400
+ * TODO: [✌️] `countWords` should be just `splitWords(...).length`, and all other counters should use this pattern as well
5374
5401
  */
5375
5402
 
5376
5403
  /**
@@ -7033,7 +7060,9 @@
7033
7060
  */
7034
7061
 
7035
7062
  /**
7036
- * Makes first letter of a string uppercase
7063
+ * Makes first letter of a string lowercase
7064
+ *
7065
+ * Note: [🔂] This function is idempotent.
7037
7066
  *
7038
7067
  * @public exported from `@promptbook/utils`
7039
7068
  */
@@ -7103,6 +7132,8 @@
7103
7132
  /**
7104
7133
  * Take every whitespace (space, new line, tab) and replace it with a single space
7105
7134
  *
7135
+ * Note: [🔂] This function is idempotent.
7136
+ *
7106
7137
  * @public exported from `@promptbook/utils`
7107
7138
  */
7108
7139
  function normalizeWhitespaces(sentence) {
@@ -7112,6 +7143,7 @@
7112
7143
  /**
7113
7144
  * Removes quotes from a string
7114
7145
  *
7146
+ * Note: [🔂] This function is idempotent.
7115
7147
  * Tip: This is very useful for post-processing of the result of the LLM model
7116
7148
  * Note: This function removes only the same quotes from the beginning and the end of the string
7117
7149
  * Note: There are two similar functions:
@@ -7135,6 +7167,7 @@
7135
7167
  /**
7136
7168
  * Function trimCodeBlock will trim starting and ending code block from the string if it is present.
7137
7169
  *
7170
+ * Note: [🔂] This function is idempotent.
7138
7171
  * Note: This is useful for post-processing of the result of the chat LLM model
7139
7172
  * when the model wraps the result in the (markdown) code block.
7140
7173
  *