@promptbook/markitdown 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 +32 -6
  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 +37 -10
  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/markitdown",
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,
@@ -91,7 +91,7 @@
91
91
  "module": "./esm/index.es.js",
92
92
  "typings": "./esm/typings/src/_packages/markitdown.index.d.ts",
93
93
  "peerDependencies": {
94
- "@promptbook/core": "0.100.4-0"
94
+ "@promptbook/core": "0.101.0-1"
95
95
  },
96
96
  "dependencies": {
97
97
  "crypto": "1.0.1",
package/umd/index.umd.js CHANGED
@@ -1,15 +1,13 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('fs/promises'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('path'), require('prettier/parser-html'), require('prettier/parser-markdown'), require('prettier/standalone'), require('crypto'), require('rxjs'), require('waitasecond'), require('crypto-js/sha256'), require('mime-types'), require('papaparse')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'fs/promises', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'path', 'prettier/parser-html', 'prettier/parser-markdown', 'prettier/standalone', 'crypto', 'rxjs', 'waitasecond', 'crypto-js/sha256', 'mime-types', 'papaparse'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-markitdown"] = {}, global.promises, global.spaceTrim, global.cryptoJs, global.hexEncoder, global.path, global.parserHtml, global.parserMarkdown, global.standalone, global.crypto, global.rxjs, global.waitasecond, global.sha256, global.mimeTypes, global.papaparse));
5
- })(this, (function (exports, promises, spaceTrim, cryptoJs, hexEncoder, path, parserHtml, parserMarkdown, standalone, crypto, rxjs, waitasecond, sha256, mimeTypes, papaparse) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('fs/promises'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('path'), require('crypto'), require('rxjs'), require('waitasecond'), require('crypto-js/sha256'), require('mime-types'), require('papaparse')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'fs/promises', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'path', 'crypto', 'rxjs', 'waitasecond', 'crypto-js/sha256', 'mime-types', 'papaparse'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-markitdown"] = {}, global.promises, global.spaceTrim, global.cryptoJs, global.hexEncoder, global.path, global.crypto, global.rxjs, global.waitasecond, global.sha256, global.mimeTypes, global.papaparse));
5
+ })(this, (function (exports, promises, spaceTrim, cryptoJs, hexEncoder, path, crypto, rxjs, waitasecond, sha256, mimeTypes, papaparse) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
9
9
  var spaceTrim__default = /*#__PURE__*/_interopDefaultLegacy(spaceTrim);
10
10
  var hexEncoder__default = /*#__PURE__*/_interopDefaultLegacy(hexEncoder);
11
- var parserHtml__default = /*#__PURE__*/_interopDefaultLegacy(parserHtml);
12
- var parserMarkdown__default = /*#__PURE__*/_interopDefaultLegacy(parserMarkdown);
13
11
  var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
14
12
 
15
13
  // ⚠️ WARNING: This code has been generated so that any manual changes will be overwritten
@@ -26,7 +24,7 @@
26
24
  * @generated
27
25
  * @see https://github.com/webgptorg/promptbook
28
26
  */
29
- const PROMPTBOOK_ENGINE_VERSION = '0.100.4-0';
27
+ const PROMPTBOOK_ENGINE_VERSION = '0.101.0-1';
30
28
  /**
31
29
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
32
30
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -639,6 +637,8 @@
639
637
  /**
640
638
  * Removes diacritic marks (accents) from characters in a string.
641
639
  *
640
+ * Note: [🔂] This function is idempotent.
641
+ *
642
642
  * @param input The string containing diacritics to be normalized.
643
643
  * @returns The string with diacritics removed or normalized.
644
644
  * @public exported from `@promptbook/utils`
@@ -707,6 +707,8 @@
707
707
  /**
708
708
  * Removes emojis from a string and fix whitespaces
709
709
  *
710
+ * Note: [🔂] This function is idempotent.
711
+ *
710
712
  * @param text with emojis
711
713
  * @returns text without emojis
712
714
  * @public exported from `@promptbook/utils`
@@ -779,6 +781,7 @@
779
781
  /**
780
782
  * Tests if given string is valid URL.
781
783
  *
784
+ * Note: [🔂] This function is idempotent.
782
785
  * Note: Dataurl are considered perfectly valid.
783
786
  * Note: There are two similar functions:
784
787
  * - `isValidUrl` which tests any URL
@@ -1038,10 +1041,20 @@
1038
1041
  * @private withing the package because of HUGE size of prettier dependency
1039
1042
  */
1040
1043
  function prettifyMarkdown(content) {
1044
+ // In browser/Next.js environments, just return the original content
1045
+ // since prettier parsers are not available and would cause bundling issues
1046
+ if (typeof window !== 'undefined') {
1047
+ return content;
1048
+ }
1041
1049
  try {
1042
- return standalone.format(content, {
1050
+ // Use dynamic require to avoid static imports that cause bundling issues
1051
+ // This will only work in Node.js environments
1052
+ const prettierStandalone = eval('require')('prettier/standalone');
1053
+ const parserMarkdown = eval('require')('prettier/parser-markdown');
1054
+ const parserHtml = eval('require')('prettier/parser-html');
1055
+ return prettierStandalone.format(content, {
1043
1056
  parser: 'markdown',
1044
- plugins: [parserMarkdown__default["default"], parserHtml__default["default"]],
1057
+ plugins: [parserMarkdown, parserHtml],
1045
1058
  // TODO: DRY - make some import or auto-copy of .prettierrc
1046
1059
  endOfLine: 'lf',
1047
1060
  tabWidth: 4,
@@ -1067,6 +1080,8 @@
1067
1080
  /**
1068
1081
  * Makes first letter of a string uppercase
1069
1082
  *
1083
+ * Note: [🔂] This function is idempotent.
1084
+ *
1070
1085
  * @public exported from `@promptbook/utils`
1071
1086
  */
1072
1087
  function capitalize(word) {
@@ -1396,6 +1411,7 @@
1396
1411
  /**
1397
1412
  * Creates a deep clone of the given object
1398
1413
  *
1414
+ * Note: [🔂] This function is idempotent.
1399
1415
  * Note: This method only works for objects that are fully serializable to JSON and do not contain functions, Dates, or special types.
1400
1416
  *
1401
1417
  * @param objectValue The object to clone.
@@ -2996,7 +3012,7 @@
2996
3012
  };
2997
3013
  /**
2998
3014
  * TODO: Refactor this - each profile must be alongside the provider definition
2999
- * TODO: [🕛] Unite `AvatarProfileProps`, `ChatParticipant`, `LlmExecutionTools` + `LlmToolsMetadata`
3015
+ * TODO: [🕛] Unite `AgentBasicInformation`, `ChatParticipant`, `LlmExecutionTools` + `LlmToolsMetadata`
3000
3016
  * Note: [💞] Ignore a discrepancy between file name and entity name
3001
3017
  */
3002
3018
 
@@ -3305,6 +3321,8 @@
3305
3321
  /**
3306
3322
  * Normalizes a text string to SCREAMING_CASE (all uppercase with underscores).
3307
3323
  *
3324
+ * Note: [🔂] This function is idempotent.
3325
+ *
3308
3326
  * @param text The text string to be converted to SCREAMING_CASE format.
3309
3327
  * @returns The normalized text in SCREAMING_CASE format.
3310
3328
  * @example 'HELLO_WORLD'
@@ -3360,6 +3378,8 @@
3360
3378
  /**
3361
3379
  * Normalizes a text string to snake_case format.
3362
3380
  *
3381
+ * Note: [🔂] This function is idempotent.
3382
+ *
3363
3383
  * @param text The text string to be converted to snake_case format.
3364
3384
  * @returns The normalized text in snake_case format.
3365
3385
  * @example 'hello_world'
@@ -4920,6 +4940,7 @@
4920
4940
  }
4921
4941
  /**
4922
4942
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
4943
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
4923
4944
  */
4924
4945
 
4925
4946
  /**
@@ -4954,6 +4975,7 @@
4954
4975
  }
4955
4976
  /**
4956
4977
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
4978
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
4957
4979
  */
4958
4980
 
4959
4981
  /**
@@ -4968,6 +4990,7 @@
4968
4990
  }
4969
4991
  /**
4970
4992
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
4993
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
4971
4994
  */
4972
4995
 
4973
4996
  /**
@@ -4980,6 +5003,7 @@
4980
5003
  }
4981
5004
  /**
4982
5005
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5006
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
4983
5007
  */
4984
5008
 
4985
5009
  /**
@@ -5000,6 +5024,7 @@
5000
5024
  }
5001
5025
  /**
5002
5026
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5027
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5003
5028
  */
5004
5029
 
5005
5030
  /**
@@ -5016,6 +5041,8 @@
5016
5041
  }
5017
5042
  /**
5018
5043
  * TODO: [🥴] Implement counting in formats - like JSON, CSV, XML,...
5044
+ * TODO: [🧠][✌️] Make some Promptbook-native token system
5045
+ * TODO: [✌️] `countWords` should be just `splitWords(...).length`, and all other counters should use this pattern as well
5019
5046
  */
5020
5047
 
5021
5048
  /**