@promptbook/website-crawler 0.104.0-13 → 0.104.0-14

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.
@@ -44,13 +44,10 @@ import type { ChatParticipant } from '../book-components/Chat/types/ChatParticip
44
44
  import type { MessageButton } from '../book-components/Chat/utils/parseMessageButtons';
45
45
  import { parseMessageButtons } from '../book-components/Chat/utils/parseMessageButtons';
46
46
  import { ArrowIcon } from '../book-components/icons/ArrowIcon';
47
- import { AttachmentIcon } from '../book-components/icons/AttachmentIcon';
48
- import { CameraIcon } from '../book-components/icons/CameraIcon';
49
47
  import { MicIcon } from '../book-components/icons/MicIcon';
50
48
  import { PauseIcon } from '../book-components/icons/PauseIcon';
51
49
  import { PlayIcon } from '../book-components/icons/PlayIcon';
52
50
  import { ResetIcon } from '../book-components/icons/ResetIcon';
53
- import { SaveIcon } from '../book-components/icons/SaveIcon';
54
51
  import { SendIcon } from '../book-components/icons/SendIcon';
55
52
  import { TemplateIcon } from '../book-components/icons/TemplateIcon';
56
53
  import { PromptbookAgentIntegration } from '../book-components/PromptbookAgent/PromptbookAgentIntegration';
@@ -105,13 +102,10 @@ export type { ChatParticipant };
105
102
  export type { MessageButton };
106
103
  export { parseMessageButtons };
107
104
  export { ArrowIcon };
108
- export { AttachmentIcon };
109
- export { CameraIcon };
110
105
  export { MicIcon };
111
106
  export { PauseIcon };
112
107
  export { PlayIcon };
113
108
  export { ResetIcon };
114
- export { SaveIcon };
115
109
  export { SendIcon };
116
110
  export { TemplateIcon };
117
111
  export { PromptbookAgentIntegration };
@@ -1,7 +1,10 @@
1
1
  import { Message } from '../../../types/Message';
2
2
  import type { id, string_markdown } from '../../../types/typeAliases';
3
3
  /**
4
- * A message in the chat
4
+ * Represents a single message within a chat interface.
5
+ *
6
+ * This type extends the base `Message` type by omitting internal routing fields
7
+ * and adding chat-specific properties like markdown content and generation status.
5
8
  *
6
9
  * @public exported from `@promptbook/components`
7
10
  */
@@ -7,8 +7,12 @@ type DropdownProps = {
7
7
  }>;
8
8
  };
9
9
  /**
10
- * A dropdown menu component that displays a list of actions triggered by a hamburger menu button.
10
+ * A dropdown menu component that displays a list of actions.
11
11
  *
12
+ * The menu is toggled by a hamburger menu button. When an action is selected,
13
+ * the menu automatically closes.
14
+ *
15
+ * @param props - Contains an array of actions with icons, names, and click handlers
12
16
  * @private internal subcomponent used by various components
13
17
  */
14
18
  export declare function Dropdown({ actions }: DropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -6,6 +6,10 @@ type HamburgerMenuProps = {
6
6
  /**
7
7
  * An animated hamburger menu button component.
8
8
  *
9
+ * This component renders a 3-bar hamburger icon that animates into an "X" when
10
+ * the menu is open.
11
+ *
12
+ * @param props - Contains the open state, an optional click handler, and optional className
9
13
  * @private Internal component
10
14
  */
11
15
  export declare function HamburgerMenu({ isOpen, onClick, className }: HamburgerMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,11 @@
1
1
  import { SVGProps } from 'react';
2
2
  /**
3
- * Renders an about icon
3
+ * Renders an information/about icon.
4
4
  *
5
+ * This icon is typically used in UI elements that provide additional information
6
+ * or "about" details to the user.
7
+ *
8
+ * @param props - SVG properties augmented with an optional `size`
5
9
  * @private internal subcomponent used by various components
6
10
  */
7
11
  export declare function AboutIcon(props: SVGProps<SVGSVGElement> & {
@@ -3,9 +3,13 @@ type AttachmentIconProps = {
3
3
  color?: string;
4
4
  };
5
5
  /**
6
- * Renders an attachment icon
6
+ * Renders an attachment icon.
7
7
  *
8
- * @public exported from `@promptbook/components`
8
+ * This icon is typically used in chat interfaces to indicate the ability to
9
+ * upload or view files associated with a message.
10
+ *
11
+ * @param props - SVG properties augmented with an optional `size`
12
+ * @private internal subcomponent used by various components
9
13
  */
10
14
  export declare function AttachmentIcon({ size, color }: AttachmentIconProps): import("react/jsx-runtime").JSX.Element;
11
15
  export {};
@@ -3,9 +3,13 @@ type CameraIconProps = {
3
3
  color?: string;
4
4
  };
5
5
  /**
6
- * Renders a camera icon
6
+ * Renders a camera icon.
7
7
  *
8
- * @public exported from `@promptbook/components`
8
+ * This icon is typically used in buttons or inputs that trigger image capture
9
+ * or selection.
10
+ *
11
+ * @param props - SVG properties augmented with an optional `size`
12
+ * @private internal subcomponent used by various components
9
13
  */
10
14
  export declare function CameraIcon({ size, color }: CameraIconProps): import("react/jsx-runtime").JSX.Element;
11
15
  export {};
@@ -1,7 +1,11 @@
1
1
  import { SVGProps } from 'react';
2
2
  /**
3
- * Renders a download icon
3
+ * Renders a download icon.
4
4
  *
5
+ * This icon is typically used in buttons or links that trigger the downloading
6
+ * of files or assets.
7
+ *
8
+ * @param props - SVG properties augmented with an optional `size`
5
9
  * @private internal subcomponent used by various components
6
10
  */
7
11
  export declare function DownloadIcon(props: SVGProps<SVGSVGElement> & {
@@ -1,7 +1,11 @@
1
1
  import { SVGProps } from 'react';
2
2
  /**
3
- * Renders a menu icon
3
+ * Renders a menu icon.
4
4
  *
5
+ * This icon is typically used in buttons that toggle the visibility of
6
+ * navigation menus or dropdowns.
7
+ *
8
+ * @param props - SVG properties augmented with an optional `size`
5
9
  * @private internal subcomponent used by various components
6
10
  */
7
11
  export declare function MenuIcon(props: SVGProps<SVGSVGElement> & {
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
2
  /**
3
- * Renders a save icon
3
+ * Renders a save icon.
4
4
  *
5
- * @public exported from `@promptbook/components`
5
+ * This icon is typically used in buttons that trigger the saving of data,
6
+ * configurations, or agent sources.
7
+ *
8
+ * @param props - SVG properties augmented with an optional `size`
9
+ * @private internal subcomponent used by various components
6
10
  */
7
11
  export declare function SaveIcon({ size, color, ...props }: {
8
12
  size?: number;
@@ -5,9 +5,12 @@ import type { string_agent_name, string_agent_permanent_id } from '../../../../t
5
5
  import { AgentCollectionInSupabaseOptions } from './AgentCollectionInSupabaseOptions';
6
6
  import type { AgentsDatabaseSchema } from './AgentsDatabaseSchema';
7
7
  /**
8
- * Agent collection stored in Supabase table
8
+ * Agent collection stored in a Supabase table.
9
9
  *
10
- * Note: This object can work both from Node.js and browser environment depending on the Supabase client provided
10
+ * This class provides a way to manage a collection of agents (pipelines) using Supabase
11
+ * as the storage backend. It supports listing, creating, updating, and soft-deleting agents.
12
+ *
13
+ * Note: This object can work both from Node.js and browser environment depending on the Supabase client provided.
11
14
  *
12
15
  * @public exported from `@promptbook/core`
13
16
  * <- TODO: [🐱‍🚀] Move to `@promptbook/supabase` package
@@ -16,9 +19,8 @@ export declare class AgentCollectionInSupabase {
16
19
  private readonly supabaseClient;
17
20
  readonly options?: AgentCollectionInSupabaseOptions | undefined;
18
21
  /**
19
- * @param rootPath - path to the directory with agents
20
- * @param tools - Execution tools to be used in [🐱‍🚀] `Agent` itself and listing the agents
21
- * @param options - Options for the collection creation
22
+ * @param supabaseClient - The initialized Supabase client
23
+ * @param options - Configuration options for the collection (e.g., table prefix, verbosity)
22
24
  */
23
25
  constructor(supabaseClient: SupabaseClient<AgentsDatabaseSchema>, options?: AgentCollectionInSupabaseOptions | undefined);
24
26
  /**
@@ -1,10 +1,14 @@
1
1
  import type { LlmExecutionTools } from '../../../../execution/LlmExecutionTools';
2
2
  import type { LlmExecutionToolsWithTotalUsage } from './LlmExecutionToolsWithTotalUsage';
3
3
  /**
4
- * Intercepts LLM tools and counts total usage of the tools
4
+ * Intercepts LLM tools and counts total usage of the tools.
5
5
  *
6
- * @param llmTools LLM tools to be intercepted with usage counting
7
- * @returns LLM tools with same functionality with added total cost counting
6
+ * This function wraps the provided `LlmExecutionTools` with a proxy that tracks the cumulative
7
+ * usage (tokens, cost, etc.) across all model calls. It provides a way to monitor spending
8
+ * in real-time through an observable.
9
+ *
10
+ * @param llmTools - The LLM tools to be intercepted and tracked
11
+ * @returns An augmented version of the tools that includes usage tracking capabilities
8
12
  * @public exported from `@promptbook/core`
9
13
  */
10
14
  export declare function countUsage(llmTools: LlmExecutionTools): LlmExecutionToolsWithTotalUsage;
@@ -2,17 +2,21 @@ import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
2
2
  import type { string_markdown_text, string_title } from '../../types/typeAliases';
3
3
  import { MultipleLlmExecutionTools } from './MultipleLlmExecutionTools';
4
4
  /**
5
- * Joins multiple LLM Execution Tools into one
5
+ * Joins multiple LLM Execution Tools into one.
6
6
  *
7
- * @returns {LlmExecutionTools} Single wrapper for multiple LlmExecutionTools
7
+ * This function takes a list of `LlmExecutionTools` and returns a single unified
8
+ * `MultipleLlmExecutionTools` object. It provides failover and aggregation logic:
8
9
  *
9
- * 0) If there is no LlmExecutionTools, it warns and returns valid but empty LlmExecutionTools
10
- * 1) If there is only one LlmExecutionTools, it returns it wrapped in a proxy object
11
- * 2) If there are multiple LlmExecutionTools, first will be used first, second will be used if the first hasn`t defined model variant or fails, etc.
12
- * 3) When all LlmExecutionTools fail, it throws an error with a list of all errors merged into one
10
+ * 1. **Failover**: When a model call is made, it tries providers in the order they were provided.
11
+ * If the first provider doesn't support the requested model or fails, it tries the next one.
12
+ * 2. **Aggregation**: `listModels` returns a combined list of all models available from all providers.
13
+ * 3. **Empty case**: If no tools are provided, it logs a warning (as Promptbook requires LLMs to function).
13
14
  *
15
+ * @param title - A descriptive title for this collection of joined tools
16
+ * @param llmExecutionTools - An array of execution tools to be joined
17
+ * @returns A single unified execution tool wrapper
14
18
  *
15
- * Tip: You don't have to use this function directly, just pass an array of LlmExecutionTools to the `ExecutionTools`
19
+ * Tip: You don't have to use this function directly, just pass an array of LlmExecutionTools to the `ExecutionTools`.
16
20
  *
17
21
  * @public exported from `@promptbook/core`
18
22
  */
@@ -1,7 +1,11 @@
1
1
  import type { ServerInfo } from './types';
2
2
  /**
3
- * Renders the HTML document for the Promptbook Server UI.
3
+ * Renders the full HTML document for the Promptbook Server UI.
4
4
  *
5
+ * This component provides the root structure of the server information page,
6
+ * including necessary meta tags, Tailwind CSS styling, and the server details body.
7
+ *
8
+ * @param props - Contains server information such as versions, port, and pipelines
5
9
  * @private internal utility of Remote Server
6
10
  */
7
11
  export declare function HtmlDoc({ info }: {
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * For example `"❤️"`
5
5
  *
6
- * Genetated by:
7
- * > CollboardSdk.EMOJIS.map((e)=>`"${e}"`).join(' | ')
6
+ * Generated by:
7
+ * > CollboardSdk.EMOJIS.map((emoji) => `"${emoji}"`).join(' | ')
8
8
  */
9
9
  export type string_char_emoji = '"😀" | "😃" | "😄" | "😁" | "😆" | "😅" | "😂" | "🤣" | "🥲" | "☺️" | "😊" | "😇" | "🙂" | "🙃" | "😉" | "😌" | "😍" | "🥰" | "😘" | "😗" | "😙" | "😚" | "😋" | "😛" | "😝" | "😜" | "🤪" | "🤨" | "🧐" | "🤓" | "😎" | "🥸" | "🤩" | "🥳" | "😏" | "😒" | "😞" | "😔" | "😟" | "😕" | "🙁" | "☹️" | "😣" | "😖" | "😫" | "😩" | "🥺" | "😢" | "😭" | "😤" | "😠" | "😡" | "🤬" | "🤯" | "😳" | "🥵" | "🥶" | "😱" | "😨" | "😰" | "😥" | "😓" | "🤗" | "🤔" | "🤭" | "🤫" | "🤥" | "😶" | "😐" | "😑" | "😬" | "🙄" | "😯" | "😦" | "😧" | "😮" | "😲" | "🥱" | "😴" | "🤤" | "😪" | "😵" | "🤐" | "🥴" | "🤢" | "🤮" | "🤧" | "😷" | "🤒" | "🤕" | "🤑" | "🤠" | "😈" | "👿" | "👹" | "👺" | "🤡" | "💩" | "👻" | "💀" | "☠️" | "👽" | "👾" | "🤖" | "🎃" | "😺" | "😸" | "😹" | "😻" | "😼" | "😽" | "🙀" | "😿" | "😾" | "👋" | "🤚" | "🖐" | "✋" | "🖖" | "👌" | "🤌" | "🤏" | "✌️" | "🤞" | "🤟" | "🤘" | "🤙" | "👈" | "👉" | "👆" | "🖕" | "👇" | "☝️" | "👍" | "👎" | "✊" | "👊" | "🤛" | "🤜" | "👏" | "🙌" | "👐" | "🤲" | "🤝" | "🙏" | "✍️" | "💅" | "🤳" | "💪" | "🦾" | "🦵" | "🦿" | "🦶" | "👣" | "👂" | "🦻" | "👃" | "🫀" | "🫁" | "🧠" | "🦷" | "🦴" | "👀" | "👁" | "👅" | "👄" | "💋" | "🩸" | "👶" | "👧" | "🧒" | "👦" | "👩" | "🧑" | "👨" | "👩‍🦱" | "🧑‍🦱" | "👨‍🦱" | "👩‍🦰" | "🧑‍🦰" | "👨‍🦰" | "👱‍♀️" | "👱" | "👱‍♂️" | "👩‍🦳" | "🧑‍🦳" | "👨‍🦳" | "👩‍🦲" | "🧑‍🦲" | "👨‍🦲" | "🧔" | "👵" | "🧓" | "👴" | "👲" | "👳‍♀️" | "👳" | "👳‍♂️" | "🧕" | "👮‍♀️" | "👮" | "👮‍♂️" | "👷‍♀️" | "👷" | "👷‍♂️" | "💂‍♀️" | "💂" | "💂‍♂️" | "🕵️‍♀️" | "🕵️" | "🕵️‍♂️" | "👩‍⚕️" | "🧑‍⚕️" | "👨‍⚕️" | "👩‍🌾" | "🧑‍🌾" | "👨‍🌾" | "👩‍🍳" | "🧑‍🍳" | "👨‍🍳" | "👩‍🎓" | "🧑‍🎓" | "👨‍🎓" | "👩‍🎤" | "🧑‍🎤" | "👨‍🎤" | "👩‍🏫" | "🧑‍🏫" | "👨‍🏫" | "👩‍🏭" | "🧑‍🏭" | "👨‍🏭" | "👩‍💻" | "🧑‍💻" | "👨‍💻" | "👩‍💼" | "🧑‍💼" | "👨‍💼" | "👩‍🔧" | "🧑‍🔧" | "👨‍🔧" | "👩‍🔬" | "🧑‍🔬" | "👨‍🔬" | "👩‍🎨" | "🧑‍🎨" | "👨‍🎨" | "👩‍🚒" | "🧑‍🚒" | "👨‍🚒" | "👩‍✈️" | "🧑‍✈️" | "👨‍✈️" | "👩‍🚀" | "🧑‍🚀" | "👨‍🚀" | "👩‍⚖️" | "🧑‍⚖️" | "👨‍⚖️" | "👰‍♀️" | "👰" | "👰‍♂️" | "🤵‍♀️" | "🤵" | "🤵‍♂️" | "👸" | "🤴" | "🥷" | "🦸‍♀️" | "🦸" | "🦸‍♂️" | "🦹‍♀️" | "🦹" | "🦹‍♂️" | "🤶" | "🧑‍🎄" | "🎅" | "🧙‍♀️" | "🧙" | "🧙‍♂️" | "🧝‍♀️" | "🧝" | "🧝‍♂️" | "🧛‍♀️" | "🧛" | "🧛‍♂️" | "🧟‍♀️" | "🧟" | "🧟‍♂️" | "🧞‍♀️" | "🧞" | "🧞‍♂️" | "🧜‍♀️" | "🧜" | "🧜‍♂️" | "🧚‍♀️" | "🧚" | "🧚‍♂️" | "👼" | "🤰" | "🤱" | "👩‍🍼" | "🧑‍🍼" | "👨‍🍼" | "🙇‍♀️" | "🙇" | "🙇‍♂️" | "💁‍♀️" | "💁" | "💁‍♂️" | "🙅‍♀️" | "🙅" | "🙅‍♂️" | "🙆‍♀️" | "🙆" | "🙆‍♂️" | "🙋‍♀️" | "🙋" | "🙋‍♂️" | "🧏‍♀️" | "🧏" | "🧏‍♂️" | "🤦‍♀️" | "🤦" | "🤦‍♂️" | "🤷‍♀️" | "🤷" | "🤷‍♂️" | "🙎‍♀️" | "🙎" | "🙎‍♂️" | "🙍‍♀️" | "🙍" | "🙍‍♂️" | "💇‍♀️" | "💇" | "💇‍♂️" | "💆‍♀️" | "💆" | "💆‍♂️" | "🧖‍♀️" | "🧖" | "🧖‍♂️" | "💃" | "🕺" | "👯‍♀️" | "👯" | "👯‍♂️" | "🕴" | "👩‍🦽" | "🧑‍🦽" | "👨‍🦽" | "👩‍🦼" | "🧑‍🦼" | "👨‍🦼" | "🚶‍♀️" | "🚶" | "🚶‍♂️" | "👩‍🦯" | "🧑‍🦯" | "👨‍🦯" | "🧎‍♀️" | "🧎" | "🧎‍♂️" | "🏃‍♀️" | "🏃" | "🏃‍♂️" | "🧍‍♀️" | "🧍" | "🧍‍♂️" | "👭" | "🧑‍🤝‍🧑" | "👬" | "👫" | "👩‍❤️‍👩" | "💑" | "👨‍❤️‍👨" | "👩‍❤️‍👨" | "👩‍❤️‍💋‍👩" | "💏" | "👨‍❤️‍💋‍👨" | "👩‍❤️‍💋‍👨" | "👪" | "👨‍👩‍👦" | "👨‍👩‍👧" | "👨‍👩‍👧‍👦" | "👨‍👩‍👦‍👦" | "👨‍👩‍👧‍👧" | "👨‍👨‍👦" | "👨‍👨‍👧" | "👨‍👨‍👧‍👦" | "👨‍👨‍👦‍👦" | "👨‍👨‍👧‍👧" | "👩‍👩‍👦" | "👩‍👩‍👧" | "👩‍👩‍👧‍👦" | "👩‍👩‍👦‍👦" | "👩‍👩‍👧‍👧" | "👨‍👦" | "👨‍👦‍👦" | "👨‍👧" | "👨‍👧‍👦" | "👨‍👧‍👧" | "👩‍👦" | "👩‍👦‍👦" | "👩‍👧" | "👩‍👧‍👦" | "👩‍👧‍👧" | "🗣" | "👤" | "👥" | "🫂" | "🧳" | "🌂" | "☂️" | "🧵" | "🪡" | "🪢" | "🧶" | "👓" | "🕶" | "🥽" | "🥼" | "🦺" | "👔" | "👕" | "👖" | "🧣" | "🧤" | "🧥" | "🧦" | "👗" | "👘" | "🥻" | "🩴" | "🩱" | "🩲" | "🩳" | "👙" | "👚" | "👛" | "👜" | "👝" | "🎒" | "👞" | "👟" | "🥾" | "🥿" | "👠" | "👡" | "🩰" | "👢" | "👑" | "👒" | "🎩" | "🎓" | "🧢" | "⛑" | "🪖" | "💄" | "💍" | "💼" | "👋🏻" | "🤚🏻" | "🖐🏻" | "✋🏻" | "🖖🏻" | "👌🏻" | "🤌🏻" | "🤏🏻" | "✌🏻" | "🤞🏻" | "🤟🏻" | "🤘🏻" | "🤙🏻" | "👈🏻" | "👉🏻" | "👆🏻" | "🖕🏻" | "👇🏻" | "☝🏻" | "👍🏻" | "👎🏻" | "✊🏻" | "👊🏻" | "🤛🏻" | "🤜🏻" | "👏🏻" | "🙌🏻" | "👐🏻" | "🤲🏻" | "🙏🏻" | "✍🏻" | "💅🏻" | "🤳🏻" | "💪🏻" | "🦵🏻" | "🦶🏻" | "👂🏻" | "🦻🏻" | "👃🏻" | "👶🏻" | "👧🏻" | "🧒🏻" | "👦🏻" | "👩🏻" | "🧑🏻" | "👨🏻" | "👩🏻‍🦱" | "🧑🏻‍🦱" | "👨🏻‍🦱" | "👩🏻‍🦰" | "🧑🏻‍🦰" | "👨🏻‍🦰" | "👱🏻‍♀️" | "👱🏻" | "👱🏻‍♂️" | "👩🏻‍🦳" | "🧑🏻‍🦳" | "👨🏻‍🦳" | "👩🏻‍🦲" | "🧑🏻‍🦲" | "👨🏻‍🦲" | "🧔🏻" | "👵🏻" | "🧓🏻" | "👴🏻" | "👲🏻" | "👳🏻‍♀️" | "👳🏻" | "👳🏻‍♂️" | "🧕🏻" | "👮🏻‍♀️" | "👮🏻" | "👮🏻‍♂️" | "👷🏻‍♀️" | "👷🏻" | "👷🏻‍♂️" | "💂🏻‍♀️" | "💂🏻" | "💂🏻‍♂️" | "🕵🏻‍♀️" | "🕵🏻" | "🕵🏻‍♂️" | "👩🏻‍⚕️" | "🧑🏻‍⚕️" | "👨🏻‍⚕️" | "👩🏻‍🌾" | "🧑🏻‍🌾" | "👨🏻‍🌾" | "👩🏻‍🍳" | "🧑🏻‍🍳" | "👨🏻‍🍳" | "👩🏻‍🎓" | "🧑🏻‍🎓" | "👨🏻‍🎓" | "👩🏻‍🎤" | "🧑🏻‍🎤" | "👨🏻‍🎤" | "👩🏻‍🏫" | "🧑🏻‍🏫" | "👨🏻‍🏫" | "👩🏻‍🏭" | "🧑🏻‍🏭" | "👨🏻‍🏭" | "👩🏻‍💻" | "🧑🏻‍💻" | "👨🏻‍💻" | "👩🏻‍💼" | "🧑🏻‍💼" | "👨🏻‍💼" | "👩🏻‍🔧" | "🧑🏻‍🔧" | "👨🏻‍🔧" | "👩🏻‍🔬" | "🧑🏻‍🔬" | "👨🏻‍🔬" | "👩🏻‍🎨" | "🧑🏻‍🎨" | "👨🏻‍🎨" | "👩🏻‍🚒" | "🧑🏻‍🚒" | "👨🏻‍🚒" | "👩🏻‍✈️" | "🧑🏻‍✈️" | "👨🏻‍✈️" | "👩🏻‍🚀" | "🧑🏻‍🚀" | "👨🏻‍🚀" | "👩🏻‍⚖️" | "🧑🏻‍⚖️" | "👨🏻‍⚖️" | "👰🏻‍♀️" | "👰🏻" | "👰🏻‍♂️" | "🤵🏻‍♀️" | "🤵🏻" | "🤵🏻‍♂️" | "👸🏻" | "🤴🏻" | "🥷🏻" | "🦸🏻‍♀️" | "🦸🏻" | "🦸🏻‍♂️" | "🦹🏻‍♀️" | "🦹🏻" | "🦹🏻‍♂️" | "🤶🏻" | "🧑🏻‍🎄" | "🎅🏻" | "🧙🏻‍♀️" | "🧙🏻" | "🧙🏻‍♂️" | "🧝🏻‍♀️" | "🧝🏻" | "🧝🏻‍♂️" | "🧛🏻‍♀️" | "🧛🏻" | "🧛🏻‍♂️" | "🧜🏻‍♀️" | "🧜🏻" | "🧜🏻‍♂️" | "🧚🏻‍♀️" | "🧚🏻" | "🧚🏻‍♂️" | "👼🏻" | "🤰🏻" | "🤱🏻" | "👩🏻‍🍼" | "🧑🏻‍🍼" | "👨🏻‍🍼" | "🙇🏻‍♀️" | "🙇🏻" | "🙇🏻‍♂️" | "💁🏻‍♀️" | "💁🏻" | "💁🏻‍♂️" | "🙅🏻‍♀️" | "🙅🏻" | "🙅🏻‍♂️" | "🙆🏻‍♀️" | "🙆🏻" | "🙆🏻‍♂️" | "🙋🏻‍♀️" | "🙋🏻" | "🙋🏻‍♂️" | "🧏🏻‍♀️" | "🧏🏻" | "🧏🏻‍♂️" | "🤦🏻‍♀️" | "🤦🏻" | "🤦🏻‍♂️" | "🤷🏻‍♀️" | "🤷🏻" | "🤷🏻‍♂️" | "🙎🏻‍♀️" | "🙎🏻" | "🙎🏻‍♂️" | "🙍🏻‍♀️" | "🙍🏻" | "🙍🏻‍♂️" | "💇🏻‍♀️" | "💇🏻" | "💇🏻‍♂️" | "💆🏻‍♀️" | "💆🏻" | "💆🏻‍♂️" | "🧖🏻‍♀️" | "🧖🏻" | "🧖🏻‍♂️" | "💃🏻" | "🕺🏻" | "🕴🏻" | "👩🏻‍🦽" | "🧑🏻‍🦽" | "👨🏻‍🦽" | "👩🏻‍🦼" | "🧑🏻‍🦼" | "👨🏻‍🦼" | "🚶🏻‍♀️" | "🚶🏻" | "🚶🏻‍♂️" | "👩🏻‍🦯" | "🧑🏻‍🦯" | "👨🏻‍🦯" | "🧎🏻‍♀️" | "🧎🏻" | "🧎🏻‍♂️" | "🏃🏻‍♀️" | "🏃🏻" | "🏃🏻‍♂️" | "🧍🏻‍♀️" | "🧍🏻" | "🧍🏻‍♂️" | "👭🏻" | "🧑🏻‍🤝‍🧑🏻" | "👬🏻" | "👫🏻" | "🧗🏻‍♀️" | "🧗🏻" | "🧗🏻‍♂️" | "🏇🏻" | "🏂🏻" | "🏌🏻‍♀️" | "🏌🏻" | "🏌🏻‍♂️" | "🏄🏻‍♀️" | "🏄🏻" | "🏄🏻‍♂️" | "🚣🏻‍♀️" | "🚣🏻" | "🚣🏻‍♂️" | "🏊🏻‍♀️" | "🏊🏻" | "🏊🏻‍♂️" | "⛹🏻‍♀️" | "⛹🏻" | "⛹🏻‍♂️" | "🏋🏻‍♀️" | "🏋🏻" | "🏋🏻‍♂️" | "🚴🏻‍♀️" | "🚴🏻" | "🚴🏻‍♂️" | "🚵🏻‍♀️" | "🚵🏻" | "🚵🏻‍♂️" | "🤸🏻‍♀️" | "🤸🏻" | "🤸🏻‍♂️" | "🤽🏻‍♀️" | "🤽🏻" | "🤽🏻‍♂️" | "🤾🏻‍♀️" | "🤾🏻" | "🤾🏻‍♂️" | "🤹🏻‍♀️" | "🤹🏻" | "🤹🏻‍♂️" | "🧘🏻‍♀️" | "🧘🏻" | "🧘🏻‍♂️" | "🛀🏻" | "🛌" | "👋🏼" | "🤚🏼" | "🖐🏼" | "✋🏼" | "🖖🏼" | "👌🏼" | "🤌🏼" | "🤏🏼" | "✌🏼" | "🤞🏼" | "🤟🏼" | "🤘🏼" | "🤙🏼" | "👈🏼" | "👉🏼" | "👆🏼" | "🖕🏼" | "👇🏼" | "☝🏼" | "👍🏼" | "👎🏼" | "✊🏼" | "👊🏼" | "🤛🏼" | "🤜🏼" | "👏🏼" | "🙌🏼" | "👐🏼" | "🤲🏼" | "🙏🏼" | "✍🏼" | "💅🏼" | "🤳🏼" | "💪🏼" | "🦵🏼" | "🦶🏼" | "👂🏼" | "🦻🏼" | "👃🏼" | "👶🏼" | "👧🏼" | "🧒🏼" | "👦🏼" | "👩🏼" | "🧑🏼" | "👨🏼" | "👩🏼‍🦱" | "🧑🏼‍🦱" | "👨🏼‍🦱" | "👩🏼‍🦰" | "🧑🏼‍🦰" | "👨🏼‍🦰" | "👱🏼‍♀️" | "👱🏼" | "👱🏼‍♂️" | "👩🏼‍🦳" | "🧑🏼‍🦳" | "👨🏼‍🦳" | "👩🏼‍🦲" | "🧑🏼‍🦲" | "👨🏼‍🦲" | "🧔🏼" | "👵🏼" | "🧓🏼" | "👴🏼" | "👲🏼" | "👳🏼‍♀️" | "👳🏼" | "👳🏼‍♂️" | "🧕🏼" | "👮🏼‍♀️" | "👮🏼" | "👮🏼‍♂️" | "👷🏼‍♀️" | "👷🏼" | "👷🏼‍♂️" | "💂🏼‍♀️" | "💂🏼" | "💂🏼‍♂️" | "🕵🏼‍♀️" | "🕵🏼" | "🕵🏼‍♂️" | "👩🏼‍⚕️" | "🧑🏼‍⚕️" | "👨🏼‍⚕️" | "👩🏼‍🌾" | "🧑🏼‍🌾" | "👨🏼‍🌾" | "👩🏼‍🍳" | "🧑🏼‍🍳" | "👨🏼‍🍳" | "👩🏼‍🎓" | "🧑🏼‍🎓" | "👨🏼‍🎓" | "👩🏼‍🎤" | "🧑🏼‍🎤" | "👨🏼‍🎤" | "👩🏼‍🏫" | "🧑🏼‍🏫" | "👨🏼‍🏫" | "👩🏼‍🏭" | "🧑🏼‍🏭" | "👨🏼‍🏭" | "👩🏼‍💻" | "🧑🏼‍💻" | "👨🏼‍💻" | "👩🏼‍💼" | "🧑🏼‍💼" | "👨🏼‍💼" | "👩🏼‍🔧" | "🧑🏼‍🔧" | "👨🏼‍🔧" | "👩🏼‍🔬" | "🧑🏼‍🔬" | "👨🏼‍🔬" | "👩🏼‍🎨" | "🧑🏼‍🎨" | "👨🏼‍🎨" | "👩🏼‍🚒" | "🧑🏼‍🚒" | "👨🏼‍🚒" | "👩🏼‍✈️" | "🧑🏼‍✈️" | "👨🏼‍✈️" | "👩🏼‍🚀" | "🧑🏼‍🚀" | "👨🏼‍🚀" | "👩🏼‍⚖️" | "🧑🏼‍⚖️" | "👨🏼‍⚖️" | "👰🏼‍♀️" | "👰🏼" | "👰🏼‍♂️" | "🤵🏼‍♀️" | "🤵🏼" | "🤵🏼‍♂️" | "👸🏼" | "🤴🏼" | "🥷🏼" | "🦸🏼‍♀️" | "🦸🏼" | "🦸🏼‍♂️" | "🦹🏼‍♀️" | "🦹🏼" | "🦹🏼‍♂️" | "🤶🏼" | "🧑🏼‍🎄" | "🎅🏼" | "🧙🏼‍♀️" | "🧙🏼" | "🧙🏼‍♂️" | "🧝🏼‍♀️" | "🧝🏼" | "🧝🏼‍♂️" | "🧛🏼‍♀️" | "🧛🏼" | "🧛🏼‍♂️" | "🧜🏼‍♀️" | "🧜🏼" | "🧜🏼‍♂️" | "🧚🏼‍♀️" | "🧚🏼" | "🧚🏼‍♂️" | "👼🏼" | "🤰🏼" | "🤱🏼" | "👩🏼‍🍼" | "🧑🏼‍🍼" | "👨🏼‍🍼" | "🙇🏼‍♀️" | "🙇🏼" | "🙇🏼‍♂️" | "💁🏼‍♀️" | "💁🏼" | "💁🏼‍♂️" | "🙅🏼‍♀️" | "🙅🏼" | "🙅🏼‍♂️" | "🙆🏼‍♀️" | "🙆🏼" | "🙆🏼‍♂️" | "🙋🏼‍♀️" | "🙋🏼" | "🙋🏼‍♂️" | "🧏🏼‍♀️" | "🧏🏼" | "🧏🏼‍♂️" | "🤦🏼‍♀️" | "🤦🏼" | "🤦🏼‍♂️" | "🤷🏼‍♀️" | "🤷🏼" | "🤷🏼‍♂️" | "🙎🏼‍♀️" | "🙎🏼" | "🙎🏼‍♂️" | "🙍🏼‍♀️" | "🙍🏼" | "🙍🏼‍♂️" | "💇🏼‍♀️" | "💇🏼" | "💇🏼‍♂️" | "💆🏼‍♀️" | "💆🏼" | "💆🏼‍♂️" | "🧖🏼‍♀️" | "🧖🏼" | "🧖🏼‍♂️" | "💃🏼" | "🕺🏼" | "🕴🏼" | "👩🏼‍🦽" | "🧑🏼‍🦽" | "👨🏼‍🦽" | "👩🏼‍🦼" | "🧑🏼‍🦼" | "👨🏼‍🦼" | "🚶🏼‍♀️" | "🚶🏼" | "🚶🏼‍♂️" | "👩🏼‍🦯" | "🧑🏼‍🦯" | "👨🏼‍🦯" | "🧎🏼‍♀️" | "🧎🏼" | "🧎🏼‍♂️" | "🏃🏼‍♀️" | "🏃🏼" | "🏃🏼‍♂️" | "🧍🏼‍♀️" | "🧍🏼" | "🧍🏼‍♂️" | "👭🏼" | "🧑🏼‍🤝‍🧑🏼" | "👬🏼" | "👫🏼" | "🧗🏼‍♀️" | "🧗🏼" | "🧗🏼‍♂️" | "🏇🏼" | "🏂🏼" | "🏌🏼‍♀️" | "🏌🏼" | "🏌🏼‍♂️" | "🏄🏼‍♀️" | "🏄🏼" | "🏄🏼‍♂️" | "🚣🏼‍♀️" | "🚣🏼" | "🚣🏼‍♂️" | "🏊🏼‍♀️" | "🏊🏼" | "🏊🏼‍♂️" | "⛹🏼‍♀️" | "⛹🏼" | "⛹🏼‍♂️" | "🏋🏼‍♀️" | "🏋🏼" | "🏋🏼‍♂️" | "🚴🏼‍♀️" | "🚴🏼" | "🚴🏼‍♂️" | "🚵🏼‍♀️" | "🚵🏼" | "🚵🏼‍♂️" | "🤸🏼‍♀️" | "🤸🏼" | "🤸🏼‍♂️" | "🤽🏼‍♀️" | "🤽🏼" | "🤽🏼‍♂️" | "🤾🏼‍♀️" | "🤾🏼" | "🤾🏼‍♂️" | "🤹🏼‍♀️" | "🤹🏼" | "🤹🏼‍♂️" | "🧘🏼‍♀️" | "🧘🏼" | "🧘🏼‍♂️" | "🛀🏼" | "👋🏽" | "🤚🏽" | "🖐🏽" | "✋🏽" | "🖖🏽" | "👌🏽" | "🤌🏽" | "🤏🏽" | "✌🏽" | "🤞🏽" | "🤟🏽" | "🤘🏽" | "🤙🏽" | "👈🏽" | "👉🏽" | "👆🏽" | "🖕🏽" | "👇🏽" | "☝🏽" | "👍🏽" | "👎🏽" | "✊🏽" | "👊🏽" | "🤛🏽" | "🤜🏽" | "👏🏽" | "🙌🏽" | "👐🏽" | "🤲🏽" | "🙏🏽" | "✍🏽" | "💅🏽" | "🤳🏽" | "💪🏽" | "🦵🏽" | "🦶🏽" | "👂🏽" | "🦻🏽" | "👃🏽" | "👶🏽" | "👧🏽" | "🧒🏽" | "👦🏽" | "👩🏽" | "🧑🏽" | "👨🏽" | "👩🏽‍🦱" | "🧑🏽‍🦱" | "👨🏽‍🦱" | "👩🏽‍🦰" | "🧑🏽‍🦰" | "👨🏽‍🦰" | "👱🏽‍♀️" | "👱🏽" | "👱🏽‍♂️" | "👩🏽‍🦳" | "🧑🏽‍🦳" | "👨🏽‍🦳" | "👩🏽‍🦲" | "🧑🏽‍🦲" | "👨🏽‍🦲" | "🧔🏽" | "👵🏽" | "🧓🏽" | "👴🏽" | "👲🏽" | "👳🏽‍♀️" | "👳🏽" | "👳🏽‍♂️" | "🧕🏽" | "👮🏽‍♀️" | "👮🏽" | "👮🏽‍♂️" | "👷🏽‍♀️" | "👷🏽" | "👷🏽‍♂️" | "💂🏽‍♀️" | "💂🏽" | "💂🏽‍♂️" | "🕵🏽‍♀️" | "🕵🏽" | "🕵🏽‍♂️" | "👩🏽‍⚕️" | "🧑🏽‍⚕️" | "👨🏽‍⚕️" | "👩🏽‍🌾" | "🧑🏽‍🌾" | "👨🏽‍🌾" | "👩🏽‍🍳" | "🧑🏽‍🍳" | "👨🏽‍🍳" | "👩🏽‍🎓" | "🧑🏽‍🎓" | "👨🏽‍🎓" | "👩🏽‍🎤" | "🧑🏽‍🎤" | "👨🏽‍🎤" | "👩🏽‍🏫" | "🧑🏽‍🏫" | "👨🏽‍🏫" | "👩🏽‍🏭" | "🧑🏽‍🏭" | "👨🏽‍🏭" | "👩🏽‍💻" | "🧑🏽‍💻" | "👨🏽‍💻" | "👩🏽‍💼" | "🧑🏽‍💼" | "👨🏽‍💼" | "👩🏽‍🔧" | "🧑🏽‍🔧" | "👨🏽‍🔧" | "👩🏽‍🔬" | "🧑🏽‍🔬" | "👨🏽‍🔬" | "👩🏽‍🎨" | "🧑🏽‍🎨" | "👨🏽‍🎨" | "👩🏽‍🚒" | "🧑🏽‍🚒" | "👨🏽‍🚒" | "👩🏽‍✈️" | "🧑🏽‍✈️" | "👨🏽‍✈️" | "👩🏽‍🚀" | "🧑🏽‍🚀" | "👨🏽‍🚀" | "👩🏽‍⚖️" | "🧑🏽‍⚖️" | "👨🏽‍⚖️" | "👰🏽‍♀️" | "👰🏽" | "👰🏽‍♂️" | "🤵🏽‍♀️" | "🤵🏽" | "🤵🏽‍♂️" | "👸🏽" | "🤴🏽" | "🥷🏽" | "🦸🏽‍♀️" | "🦸🏽" | "🦸🏽‍♂️" | "🦹🏽‍♀️" | "🦹🏽" | "🦹🏽‍♂️" | "🤶🏽" | "🧑🏽‍🎄" | "🎅🏽" | "🧙🏽‍♀️" | "🧙🏽" | "🧙🏽‍♂️" | "🧝🏽‍♀️" | "🧝🏽" | "🧝🏽‍♂️" | "🧛🏽‍♀️" | "🧛🏽" | "🧛🏽‍♂️" | "🧜🏽‍♀️" | "🧜🏽" | "🧜🏽‍♂️" | "🧚🏽‍♀️" | "🧚🏽" | "🧚🏽‍♂️" | "👼🏽" | "🤰🏽" | "🤱🏽" | "👩🏽‍🍼" | "🧑🏽‍🍼" | "👨🏽‍🍼" | "🙇🏽‍♀️" | "🙇🏽" | "🙇🏽‍♂️" | "💁🏽‍♀️" | "💁🏽" | "💁🏽‍♂️" | "🙅🏽‍♀️" | "🙅🏽" | "🙅🏽‍♂️" | "🙆🏽‍♀️" | "🙆🏽" | "🙆🏽‍♂️" | "🙋🏽‍♀️" | "🙋🏽" | "🙋🏽‍♂️" | "🧏🏽‍♀️" | "🧏🏽" | "🧏🏽‍♂️" | "🤦🏽‍♀️" | "🤦🏽" | "🤦🏽‍♂️" | "🤷🏽‍♀️" | "🤷🏽" | "🤷🏽‍♂️" | "🙎🏽‍♀️" | "🙎🏽" | "🙎🏽‍♂️" | "🙍🏽‍♀️" | "🙍🏽" | "🙍🏽‍♂️" | "💇🏽‍♀️" | "💇🏽" | "💇🏽‍♂️" | "💆🏽‍♀️" | "💆🏽" | "💆🏽‍♂️" | "🧖🏽‍♀️" | "🧖🏽" | "🧖🏽‍♂️" | "💃🏽" | "🕺🏽" | "🕴🏽" | "👩🏽‍🦽" | "🧑🏽‍🦽" | "👨🏽‍🦽" | "👩🏽‍🦼" | "🧑🏽‍🦼" | "👨🏽‍🦼" | "🚶🏽‍♀️" | "🚶🏽" | "🚶🏽‍♂️" | "👩🏽‍🦯" | "🧑🏽‍🦯" | "👨🏽‍🦯" | "🧎🏽‍♀️" | "🧎🏽" | "🧎🏽‍♂️" | "🏃🏽‍♀️" | "🏃🏽" | "🏃🏽‍♂️" | "🧍🏽‍♀️" | "🧍🏽" | "🧍🏽‍♂️" | "👭🏽" | "🧑🏽‍🤝‍🧑🏽" | "👬🏽" | "👫🏽" | "🧗🏽‍♀️" | "🧗🏽" | "🧗🏽‍♂️" | "🏇🏽" | "🏂🏽" | "🏌🏽‍♀️" | "🏌🏽" | "🏌🏽‍♂️" | "🏄🏽‍♀️" | "🏄🏽" | "🏄🏽‍♂️" | "🚣🏽‍♀️" | "🚣🏽" | "🚣🏽‍♂️" | "🏊🏽‍♀️" | "🏊🏽" | "🏊🏽‍♂️" | "⛹🏽‍♀️" | "⛹🏽" | "⛹🏽‍♂️" | "🏋🏽‍♀️" | "🏋🏽" | "🏋🏽‍♂️" | "🚴🏽‍♀️" | "🚴🏽" | "🚴🏽‍♂️" | "🚵🏽‍♀️" | "🚵🏽" | "🚵🏽‍♂️" | "🤸🏽‍♀️" | "🤸🏽" | "🤸🏽‍♂️" | "🤽🏽‍♀️" | "🤽🏽" | "🤽🏽‍♂️" | "🤾🏽‍♀️" | "🤾🏽" | "🤾🏽‍♂️" | "🤹🏽‍♀️" | "🤹🏽" | "🤹🏽‍♂️" | "🧘🏽‍♀️" | "🧘🏽" | "🧘🏽‍♂️" | "🛀🏽" | "👋🏾" | "🤚🏾" | "🖐🏾" | "✋🏾" | "🖖🏾" | "👌🏾" | "🤌🏾" | "🤏🏾" | "✌🏾" | "🤞🏾" | "🤟🏾" | "🤘🏾" | "🤙🏾" | "👈🏾" | "👉🏾" | "👆🏾" | "🖕🏾" | "👇🏾" | "☝🏾" | "👍🏾" | "👎🏾" | "✊🏾" | "👊🏾" | "🤛🏾" | "🤜🏾" | "👏🏾" | "🙌🏾" | "👐🏾" | "🤲🏾" | "🙏🏾" | "✍🏾" | "💅🏾" | "🤳🏾" | "💪🏾" | "🦵🏾" | "🦶🏾" | "👂🏾" | "🦻🏾" | "👃🏾" | "👶🏾" | "👧🏾" | "🧒🏾" | "👦🏾" | "👩🏾" | "🧑🏾" | "👨🏾" | "👩🏾‍🦱" | "🧑🏾‍🦱" | "👨🏾‍🦱" | "👩🏾‍🦰" | "🧑🏾‍🦰" | "👨🏾‍🦰" | "👱🏾‍♀️" | "👱🏾" | "👱🏾‍♂️" | "👩🏾‍🦳" | "🧑🏾‍🦳" | "👨🏾‍🦳" | "👩🏾‍🦲" | "🧑🏾‍🦲" | "👨🏾‍🦲" | "🧔🏾" | "👵🏾" | "🧓🏾" | "👴🏾" | "👲🏾" | "👳🏾‍♀️" | "👳🏾" | "👳🏾‍♂️" | "🧕🏾" | "👮🏾‍♀️" | "👮🏾" | "👮🏾‍♂️" | "👷🏾‍♀️" | "👷🏾" | "👷🏾‍♂️" | "💂🏾‍♀️" | "💂🏾" | "💂🏾‍♂️" | "🕵🏾‍♀️" | "🕵🏾" | "🕵🏾‍♂️" | "👩🏾‍⚕️" | "🧑🏾‍⚕️" | "👨🏾‍⚕️" | "👩🏾‍🌾" | "🧑🏾‍🌾" | "👨🏾‍🌾" | "👩🏾‍🍳" | "🧑🏾‍🍳" | "👨🏾‍🍳" | "👩🏾‍🎓" | "🧑🏾‍🎓" | "👨🏾‍🎓" | "👩🏾‍🎤" | "🧑🏾‍🎤" | "👨🏾‍🎤" | "👩🏾‍🏫" | "🧑🏾‍🏫" | "👨🏾‍🏫" | "👩🏾‍🏭" | "🧑🏾‍🏭" | "👨🏾‍🏭" | "👩🏾‍💻" | "🧑🏾‍💻" | "👨🏾‍💻" | "👩🏾‍💼" | "🧑🏾‍💼" | "👨🏾‍💼" | "👩🏾‍🔧" | "🧑🏾‍🔧" | "👨🏾‍🔧" | "👩🏾‍🔬" | "🧑🏾‍🔬" | "👨🏾‍🔬" | "👩🏾‍🎨" | "🧑🏾‍🎨" | "👨🏾‍🎨" | "👩🏾‍🚒" | "🧑🏾‍🚒" | "👨🏾‍🚒" | "👩🏾‍✈️" | "🧑🏾‍✈️" | "👨🏾‍✈️" | "👩🏾‍🚀" | "🧑🏾‍🚀" | "👨🏾‍🚀" | "👩🏾‍⚖️" | "🧑🏾‍⚖️" | "👨🏾‍⚖️" | "👰🏾‍♀️" | "👰🏾" | "👰🏾‍♂️" | "🤵🏾‍♀️" | "🤵🏾" | "🤵🏾‍♂️" | "👸🏾" | "🤴🏾" | "🥷🏾" | "🦸🏾‍♀️" | "🦸🏾" | "🦸🏾‍♂️" | "🦹🏾‍♀️" | "🦹🏾" | "🦹🏾‍♂️" | "🤶🏾" | "🧑🏾‍🎄" | "🎅🏾" | "🧙🏾‍♀️" | "🧙🏾" | "🧙🏾‍♂️" | "🧝🏾‍♀️" | "🧝🏾" | "🧝🏾‍♂️" | "🧛🏾‍♀️" | "🧛🏾" | "🧛🏾‍♂️" | "🧜🏾‍♀️" | "🧜🏾" | "🧜🏾‍♂️" | "🧚🏾‍♀️" | "🧚🏾" | "🧚🏾‍♂️" | "👼🏾" | "🤰🏾" | "🤱🏾" | "👩🏾‍🍼" | "🧑🏾‍🍼" | "👨🏾‍🍼" | "🙇🏾‍♀️" | "🙇🏾" | "🙇🏾‍♂️" | "💁🏾‍♀️" | "💁🏾" | "💁🏾‍♂️" | "🙅🏾‍♀️" | "🙅🏾" | "🙅🏾‍♂️" | "🙆🏾‍♀️" | "🙆🏾" | "🙆🏾‍♂️" | "🙋🏾‍♀️" | "🙋🏾" | "🙋🏾‍♂️" | "🧏🏾‍♀️" | "🧏🏾" | "🧏🏾‍♂️" | "🤦🏾‍♀️" | "🤦🏾" | "🤦🏾‍♂️" | "🤷🏾‍♀️" | "🤷🏾" | "🤷🏾‍♂️" | "🙎🏾‍♀️" | "🙎🏾" | "🙎🏾‍♂️" | "🙍🏾‍♀️" | "🙍🏾" | "🙍🏾‍♂️" | "💇🏾‍♀️" | "💇🏾" | "💇🏾‍♂️" | "💆🏾‍♀️" | "💆🏾" | "💆🏾‍♂️" | "🧖🏾‍♀️" | "🧖🏾" | "🧖🏾‍♂️" | "💃🏾" | "🕺🏾" | "🕴🏿" | "👩🏾‍🦽" | "🧑🏾‍🦽" | "👨🏾‍🦽" | "👩🏾‍🦼" | "🧑🏾‍🦼" | "👨🏾‍🦼" | "🚶🏾‍♀️" | "🚶🏾" | "🚶🏾‍♂️" | "👩🏾‍🦯" | "🧑🏾‍🦯" | "👨🏾‍🦯" | "🧎🏾‍♀️" | "🧎🏾" | "🧎🏾‍♂️" | "🏃🏾‍♀️" | "🏃🏾" | "🏃🏾‍♂️" | "🧍🏾‍♀️" | "🧍🏾" | "🧍🏾‍♂️" | "👭🏾" | "🧑🏾‍🤝‍🧑🏾" | "👬🏾" | "👫🏾" | "🧗🏾‍♀️" | "🧗🏾" | "🧗🏾‍♂️" | "🏇🏾" | "🏂🏾" | "🏌🏾‍♀️" | "🏌🏾" | "🏌🏾‍♂️" | "🏄🏾‍♀️" | "🏄🏾" | "🏄🏾‍♂️" | "🚣🏾‍♀️" | "🚣🏾" | "🚣🏾‍♂️" | "🏊🏾‍♀️" | "🏊🏾" | "🏊🏾‍♂️" | "⛹🏾‍♀️" | "⛹🏾" | "⛹🏾‍♂️" | "🏋🏾‍♀️" | "🏋🏾" | "🏋🏾‍♂️" | "🚴🏾‍♀️" | "🚴🏾" | "🚴🏾‍♂️" | "🚵🏾‍♀️" | "🚵🏾" | "🚵🏾‍♂️" | "🤸🏾‍♀️" | "🤸🏾" | "🤸🏾‍♂️" | "🤽🏾‍♀️" | "🤽🏾" | "🤽🏾‍♂️" | "🤾🏾‍♀️" | "🤾🏾" | "🤾🏾‍♂️" | "🤹🏾‍♀️" | "🤹🏾" | "🤹🏾‍♂️" | "🧘🏾‍♀️" | "🧘🏾" | "🧘🏾‍♂️" | "🛀🏾" | "👋🏿" | "🤚🏿" | "🖐🏿" | "✋🏿" | "🖖🏿" | "👌🏿" | "🤌🏿" | "🤏🏿" | "✌🏿" | "🤞🏿" | "🤟🏿" | "🤘🏿" | "🤙🏿" | "👈🏿" | "👉🏿" | "👆🏿" | "🖕🏿" | "👇🏿" | "☝🏿" | "👍🏿" | "👎🏿" | "✊🏿" | "👊🏿" | "🤛🏿" | "🤜🏿" | "👏🏿" | "🙌🏿" | "👐🏿" | "🤲🏿" | "🙏🏿" | "✍🏿" | "💅🏿" | "🤳🏿" | "💪🏿" | "🦵🏿" | "🦶🏿" | "👂🏿" | "🦻🏿" | "👃🏿" | "👶🏿" | "👧🏿" | "🧒🏿" | "👦🏿" | "👩🏿" | "🧑🏿" | "👨🏿" | "👩🏿‍🦱" | "🧑🏿‍🦱" | "👨🏿‍🦱" | "👩🏿‍🦰" | "🧑🏿‍🦰" | "👨🏿‍🦰" | "👱🏿‍♀️" | "👱🏿" | "👱🏿‍♂️" | "👩🏿‍🦳" | "🧑🏿‍🦳" | "👨🏿‍🦳" | "👩🏿‍🦲" | "🧑🏿‍🦲" | "👨🏿‍🦲" | "🧔🏿" | "👵🏿" | "🧓🏿" | "👴🏿" | "👲🏿" | "👳🏿‍♀️" | "👳🏿" | "👳🏿‍♂️" | "🧕🏿" | "👮🏿‍♀️" | "👮🏿" | "👮🏿‍♂️" | "👷🏿‍♀️" | "👷🏿" | "👷🏿‍♂️" | "💂🏿‍♀️" | "💂🏿" | "💂🏿‍♂️" | "🕵🏿‍♀️" | "🕵🏿" | "🕵🏿‍♂️" | "👩🏿‍⚕️" | "🧑🏿‍⚕️" | "👨🏿‍⚕️" | "👩🏿‍🌾" | "🧑🏿‍🌾" | "👨🏿‍🌾" | "👩🏿‍🍳" | "🧑🏿‍🍳" | "👨🏿‍🍳" | "👩🏿‍🎓" | "🧑🏿‍🎓" | "👨🏿‍🎓" | "👩🏿‍🎤" | "🧑🏿‍🎤" | "👨🏿‍🎤" | "👩🏿‍🏫" | "🧑🏿‍🏫" | "👨🏿‍🏫" | "👩🏿‍🏭" | "🧑🏿‍🏭" | "👨🏿‍🏭" | "👩🏿‍💻" | "🧑🏿‍💻" | "👨🏿‍💻" | "👩🏿‍💼" | "🧑🏿‍💼" | "👨🏿‍💼" | "👩🏿‍🔧" | "🧑🏿‍🔧" | "👨🏿‍🔧" | "👩🏿‍🔬" | "🧑🏿‍🔬" | "👨🏿‍🔬" | "👩🏿‍🎨" | "🧑🏿‍🎨" | "👨🏿‍🎨" | "👩🏿‍🚒" | "🧑🏿‍🚒" | "👨🏿‍🚒" | "👩🏿‍✈️" | "🧑🏿‍✈️" | "👨🏿‍✈️" | "👩🏿‍🚀" | "🧑🏿‍🚀" | "👨🏿‍🚀" | "👩🏿‍⚖️" | "🧑🏿‍⚖️" | "👨🏿‍⚖️" | "👰🏿‍♀️" | "👰🏿" | "👰🏿‍♂️" | "🤵🏿‍♀️" | "🤵🏿" | "🤵🏿‍♂️" | "👸🏿" | "🤴🏿" | "🥷🏿" | "🦸🏿‍♀️" | "🦸🏿" | "🦸🏿‍♂️" | "🦹🏿‍♀️" | "🦹🏿" | "🦹🏿‍♂️" | "🤶🏿" | "🧑🏿‍🎄" | "🎅🏿" | "🧙🏿‍♀️" | "🧙🏿" | "🧙🏿‍♂️" | "🧝🏿‍♀️" | "🧝🏿" | "🧝🏿‍♂️" | "🧛🏿‍♀️" | "🧛🏿" | "🧛🏿‍♂️" | "🧜🏿‍♀️" | "🧜🏿" | "🧜🏿‍♂️" | "🧚🏿‍♀️" | "🧚🏿" | "🧚🏿‍♂️" | "👼🏿" | "🤰🏿" | "🤱🏿" | "👩🏿‍🍼" | "🧑🏿‍🍼" | "👨🏿‍🍼" | "🙇🏿‍♀️" | "🙇🏿" | "🙇🏿‍♂️" | "💁🏿‍♀️" | "💁🏿" | "💁🏿‍♂️" | "🙅🏿‍♀️" | "🙅🏿" | "🙅🏿‍♂️" | "🙆🏿‍♀️" | "🙆🏿" | "🙆🏿‍♂️" | "🙋🏿‍♀️" | "🙋🏿" | "🙋🏿‍♂️" | "🧏🏿‍♀️" | "🧏🏿" | "🧏🏿‍♂️" | "🤦🏿‍♀️" | "🤦🏿" | "🤦🏿‍♂️" | "🤷🏿‍♀️" | "🤷🏿" | "🤷🏿‍♂️" | "🙎🏿‍♀️" | "🙎🏿" | "🙎🏿‍♂️" | "🙍🏿‍♀️" | "🙍🏿" | "🙍🏿‍♂️" | "💇🏿‍♀️" | "💇🏿" | "💇🏿‍♂️" | "💆🏿‍♀️" | "💆🏿" | "💆🏿‍♂️" | "🧖🏿‍♀️" | "🧖🏿" | "🧖🏿‍♂️" | "💃🏿" | "🕺🏿" | "👩🏿‍🦽" | "🧑🏿‍🦽" | "👨🏿‍🦽" | "👩🏿‍🦼" | "🧑🏿‍🦼" | "👨🏿‍🦼" | "🚶🏿‍♀️" | "🚶🏿" | "🚶🏿‍♂️" | "👩🏿‍🦯" | "🧑🏿‍🦯" | "👨🏿‍🦯" | "🧎🏿‍♀️" | "🧎🏿" | "🧎🏿‍♂️" | "🏃🏿‍♀️" | "🏃🏿" | "🏃🏿‍♂️" | "🧍🏿‍♀️" | "🧍🏿" | "🧍🏿‍♂️" | "👭🏿" | "🧑🏿‍🤝‍🧑🏿" | "👬🏿" | "👫🏿" | "🧗🏿‍♀️" | "🧗🏿" | "🧗🏿‍♂️" | "🏇🏿" | "🏂🏿" | "🏌🏿‍♀️" | "🏌🏿" | "🏌🏿‍♂️" | "🏄🏿‍♀️" | "🏄🏿" | "🏄🏿‍♂️" | "🚣🏿‍♀️" | "🚣🏿" | "🚣🏿‍♂️" | "🏊🏿‍♀️" | "🏊🏿" | "🏊🏿‍♂️" | "⛹🏿‍♀️" | "⛹🏿" | "⛹🏿‍♂️" | "🏋🏿‍♀️" | "🏋🏿" | "🏋🏿‍♂️" | "🚴🏿‍♀️" | "🚴🏿" | "🚴🏿‍♂️" | "🚵🏿‍♀️" | "🚵🏿" | "🚵🏿‍♂️" | "🤸🏿‍♀️" | "🤸🏿" | "🤸🏿‍♂️" | "🤽🏿‍♀️" | "🤽🏿" | "🤽🏿‍♂️" | "🤾🏿‍♀️" | "🤾🏿" | "🤾🏿‍♂️" | "🤹🏿‍♀️" | "🤹🏿" | "🤹🏿‍♂️" | "🧘🏿‍♀️" | "🧘🏿" | "🧘🏿‍♂️" | "🛀🏿" | "🛌🏿" | "🐶" | "🐱" | "🐭" | "🐹" | "🐰" | "🦊" | "🐻" | "🐼" | "🐻‍❄️" | "🐨" | "🐯" | "🦁" | "🐮" | "🐷" | "🐽" | "🐸" | "🐵" | "🙈" | "🙉" | "🙊" | "🐒" | "🐔" | "🐧" | "🐦" | "🐤" | "🐣" | "🐥" | "🦆" | "🦅" | "🦉" | "🦇" | "🐺" | "🐗" | "🐴" | "🦄" | "🐝" | "🪱" | "🐛" | "🦋" | "🐌" | "🐞" | "🐜" | "🪰" | "🪲" | "🪳" | "🦟" | "🦗" | "🕷" | "🕸" | "🦂" | "🐢" | "🐍" | "🦎" | "🦖" | "🦕" | "🐙" | "🦑" | "🦐" | "🦞" | "🦀" | "🐡" | "🐠" | "🐟" | "🐬" | "🐳" | "🐋" | "🦈" | "🐊" | "🐅" | "🐆" | "🦓" | "🦍" | "🦧" | "🦣" | "🐘" | "🦛" | "🦏" | "🐪" | "🐫" | "🦒" | "🦘" | "🦬" | "🐃" | "🐂" | "🐄" | "🐎" | "🐖" | "🐏" | "🐑" | "🦙" | "🐐" | "🦌" | "🐕" | "🐩" | "🦮" | "🐕‍🦺" | "🐈" | "🐈‍⬛" | "🪶" | "🐓" | "🦃" | "🦤" | "🦚" | "🦜" | "🦢" | "🦩" | "🕊" | "🐇" | "🦝" | "🦨" | "🦡" | "🦫" | "🦦" | "🦥" | "🐁" | "🐀" | "🐿" | "🦔" | "🐾" | "🐉" | "🐲" | "🌵" | "🎄" | "🌲" | "🌳" | "🌴" | "🪵" | "🌱" | "🌿" | "☘️" | "🍀" | "🎍" | "🪴" | "🎋" | "🍃" | "🍂" | "🍁" | "🍄" | "🐚" | "🪨" | "🌾" | "💐" | "🌷" | "🌹" | "🥀" | "🌺" | "🌸" | "🌼" | "🌻" | "🌞" | "🌝" | "🌛" | "🌜" | "🌚" | "🌕" | "🌖" | "🌗" | "🌘" | "🌑" | "🌒" | "🌓" | "🌔" | "🌙" | "🌎" | "🌍" | "🌏" | "🪐" | "💫" | "⭐️" | "🌟" | "✨" | "⚡️" | "☄️" | "💥" | "🔥" | "🌪" | "🌈" | "☀️" | "🌤" | "⛅️" | "🌥" | "☁️" | "🌦" | "🌧" | "⛈" | "🌩" | "🌨" | "❄️" | "☃️" | "⛄️" | "🌬" | "💨" | "💧" | "💦" | "☔️" | "🌊" | "🌫" | "🍏" | "🍎" | "🍐" | "🍊" | "🍋" | "🍌" | "🍉" | "🍇" | "🍓" | "🫐" | "🍈" | "🍒" | "🍑" | "🥭" | "🍍" | "🥥" | "🥝" | "🍅" | "🍆" | "🥑" | "🥦" | "🥬" | "🥒" | "🌶" | "🫑" | "🌽" | "🥕" | "🫒" | "🧄" | "🧅" | "🥔" | "🍠" | "🥐" | "🥯" | "🍞" | "🥖" | "🥨" | "🧀" | "🥚" | "🍳" | "🧈" | "🥞" | "🧇" | "🥓" | "🥩" | "🍗" | "🍖" | "🌭" | "🍔" | "🍟" | "🍕" | "🫓" | "🥪" | "🥙" | "🧆" | "🌮" | "🌯" | "🫔" | "🥗" | "🥘" | "🫕" | "🥫" | "🍝" | "🍜" | "🍲" | "🍛" | "🍣" | "🍱" | "🥟" | "🦪" | "🍤" | "🍙" | "🍚" | "🍘" | "🍥" | "🥠" | "🥮" | "🍢" | "🍡" | "🍧" | "🍨" | "🍦" | "🥧" | "🧁" | "🍰" | "🎂" | "🍮" | "🍭" | "🍬" | "🍫" | "🍿" | "🍩" | "🍪" | "🌰" | "🥜" | "🍯" | "🥛" | "🍼" | "🫖" | "☕️" | "🍵" | "🧃" | "🥤" | "🧋" | "🍶" | "🍺" | "🍻" | "🥂" | "🍷" | "🥃" | "🍸" | "🍹" | "🧉" | "🍾" | "🧊" | "🥄" | "🍴" | "🍽" | "🥣" | "🥡" | "🥢" | "🧂" | "⚽️" | "🏀" | "🏈" | "⚾️" | "🥎" | "🎾" | "🏐" | "🏉" | "🥏" | "🎱" | "🪀" | "🏓" | "🏸" | "🏒" | "🏑" | "🥍" | "🏏" | "🪃" | "🥅" | "⛳️" | "🪁" | "🏹" | "🎣" | "🤿" | "🥊" | "🥋" | "🎽" | "🛹" | "🛼" | "🛷" | "⛸" | "🥌" | "🎿" | "⛷" | "🏂" | "🪂" | "🏋️‍♀️" | "🏋️" | "🏋️‍♂️" | "🤼‍♀️" | "🤼" | "🤼‍♂️" | "🤸‍♀️" | "🤸" | "🤸‍♂️" | "⛹️‍♀️" | "⛹️" | "⛹️‍♂️" | "🤺" | "🤾‍♀️" | "🤾" | "🤾‍♂️" | "🏌️‍♀️" | "🏌️" | "🏌️‍♂️" | "🏇" | "🧘‍♀️" | "🧘" | "🧘‍♂️" | "🏄‍♀️" | "🏄" | "🏄‍♂️" | "🏊‍♀️" | "🏊" | "🏊‍♂️" | "🤽‍♀️" | "🤽" | "🤽‍♂️" | "🚣‍♀️" | "🚣" | "🚣‍♂️" | "🧗‍♀️" | "🧗" | "🧗‍♂️" | "🚵‍♀️" | "🚵" | "🚵‍♂️" | "🚴‍♀️" | "🚴" | "🚴‍♂️" | "🏆" | "🥇" | "🥈" | "🥉" | "🏅" | "🎖" | "🏵" | "🎗" | "🎫" | "🎟" | "🎪" | "🤹" | "🤹‍♂️" | "🤹‍♀️" | "🎭" | "🎨" | "🎬" | "🎤" | "🎧" | "🎼" | "🎹" | "🥁" | "🪘" | "🎷" | "🎺" | "🪗" | "🎸" | "🪕" | "🎻" | "🎲" | "♟" | "🎯" | "🎳" | "🎮" | "🎰" | "🧩" | "🚗" | "🚕" | "🚙" | "🚌" | "🚎" | "🏎" | "🚓" | "🚑" | "🚒" | "🚐" | "🛻" | "🚚" | "🚛" | "🚜" | "🦯" | "🦽" | "🦼" | "🛴" | "🚲" | "🛵" | "🏍" | "🛺" | "🚨" | "🚔" | "🚍" | "🚘" | "🚖" | "🚡" | "🚠" | "🚟" | "🚃" | "🚋" | "🚞" | "🚝" | "🚄" | "🚅" | "🚈" | "🚂" | "🚆" | "🚇" | "🚊" | "🚉" | "✈️" | "🛫" | "🛬" | "🛩" | "💺" | "🛰" | "🚀" | "🛸" | "🚁" | "🛶" | "⛵️" | "🚤" | "🛥" | "🛳" | "⛴" | "🚢" | "⚓️" | "🪝" | "⛽️" | "🚧" | "🚦" | "🚥" | "🚏" | "🗺" | "🗿" | "🗽" | "🗼" | "🏰" | "🏯" | "🏟" | "🎡" | "🎢" | "🎠" | "⛲️" | "⛱" | "🏖" | "🏝" | "🏜" | "🌋" | "⛰" | "🏔" | "🗻" | "🏕" | "⛺️" | "🛖" | "🏠" | "🏡" | "🏘" | "🏚" | "🏗" | "🏭" | "🏢" | "🏬" | "🏣" | "🏤" | "🏥" | "🏦" | "🏨" | "🏪" | "🏫" | "🏩" | "💒" | "🏛" | "⛪️" | "🕌" | "🕍" | "🛕" | "🕋" | "⛩" | "🛤" | "🛣" | "🗾" | "🎑" | "🏞" | "🌅" | "🌄" | "🌠" | "🎇" | "🎆" | "🌇" | "🌆" | "🏙" | "🌃" | "🌌" | "🌉" | "🌁" | "⌚️" | "📱" | "📲" | "💻" | "⌨️" | "🖥" | "🖨" | "🖱" | "🖲" | "🕹" | "🗜" | "💽" | "💾" | "💿" | "📀" | "📼" | "📷" | "📸" | "📹" | "🎥" | "📽" | "🎞" | "📞" | "☎️" | "📟" | "📠" | "📺" | "📻" | "🎙" | "🎚" | "🎛" | "🧭" | "⏱" | "⏲" | "⏰" | "🕰" | "⌛️" | "⏳" | "📡" | "🔋" | "🔌" | "💡" | "🔦" | "🕯" | "🪔" | "🧯" | "🛢" | "💸" | "💵" | "💴" | "💶" | "💷" | "🪙" | "💰" | "💳" | "💎" | "⚖️" | "🪜" | "🧰" | "🪛" | "🔧" | "🔨" | "⚒" | "🛠" | "⛏" | "🪚" | "🔩" | "⚙️" | "🪤" | "🧱" | "⛓" | "🧲" | "🔫" | "💣" | "🧨" | "🪓" | "🔪" | "🗡" | "⚔️" | "🛡" | "🚬" | "⚰️" | "🪦" | "⚱️" | "🏺" | "🔮" | "📿" | "🧿" | "💈" | "⚗️" | "🔭" | "🔬" | "🕳" | "🩹" | "🩺" | "💊" | "💉" | "🧬" | "🦠" | "🧫" | "🧪" | "🌡" | "🧹" | "🪠" | "🧺" | "🧻" | "🚽" | "🚰" | "🚿" | "🛁" | "🛀" | "🧼" | "🪥" | "🪒" | "🧽" | "🪣" | "🧴" | "🛎" | "🔑" | "🗝" | "🚪" | "🪑" | "🛋" | "🛏" | "🧸" | "🪆" | "🖼" | "🪞" | "🪟" | "🛍" | "🛒" | "🎁" | "🎈" | "🎏" | "🎀" | "🪄" | "🪅" | "🎊" | "🎉" | "🎎" | "🏮" | "🎐" | "🧧" | "✉️" | "📩" | "📨" | "📧" | "💌" | "📥" | "📤" | "📦" | "🏷" | "🪧" | "📪" | "📫" | "📬" | "📭" | "📮" | "📯" | "📜" | "📃" | "📄" | "📑" | "🧾" | "📊" | "📈" | "📉" | "🗒" | "🗓" | "📆" | "📅" | "🗑" | "📇" | "🗃" | "🗳" | "🗄" | "📋" | "📁" | "📂" | "🗂" | "🗞" | "📰" | "📓" | "📔" | "📒" | "📕" | "📗" | "📘" | "📙" | "📚" | "📖" | "🔖" | "🧷" | "🔗" | "📎" | "🖇" | "📐" | "📏" | "🧮" | "📌" | "📍" | "✂️" | "🖊" | "🖋" | "✒️" | "🖌" | "🖍" | "📝" | "✏️" | "🔍" | "🔎" | "🔏" | "🔐" | "🔒" | "🔓" | "❤️" | "🧡" | "💛" | "💚" | "💙" | "💜" | "🖤" | "🤍" | "🤎" | "💔" | "❣️" | "💕" | "💞" | "💓" | "💗" | "💖" | "💘" | "💝" | "💟" | "☮️" | "✝️" | "☪️" | "🕉" | "☸️" | "✡️" | "🔯" | "🕎" | "☯️" | "☦️" | "🛐" | "⛎" | "♈️" | "♉️" | "♊️" | "♋️" | "♌️" | "♍️" | "♎️" | "♏️" | "♐️" | "♑️" | "♒️" | "♓️" | "🆔" | "⚛️" | "🉑" | "☢️" | "☣️" | "📴" | "📳" | "🈶" | "🈚️" | "🈸" | "🈺" | "🈷️" | "✴️" | "🆚" | "💮" | "🉐" | "㊙️" | "㊗️" | "🈴" | "🈵" | "🈹" | "🈲" | "🅰️" | "🅱️" | "🆎" | "🆑" | "🅾️" | "🆘" | "❌" | "⭕️" | "🛑" | "⛔️" | "📛" | "🚫" | "💯" | "💢" | "♨️" | "🚷" | "🚯" | "🚳" | "🚱" | "🔞" | "📵" | "🚭" | "❗️" | "❕" | "❓" | "❔" | "‼️" | "⁉️" | "🔅" | "🔆" | "〽️" | "⚠️" | "🚸" | "🔱" | "⚜️" | "🔰" | "♻️" | "✅" | "🈯️" | "💹" | "❇️" | "✳️" | "❎" | "🌐" | "💠" | "Ⓜ️" | "🌀" | "💤" | "🏧" | "🚾" | "♿️" | "🅿️" | "🛗" | "🈳" | "🈂️" | "🛂" | "🛃" | "🛄" | "🛅" | "🚹" | "🚺" | "🚼" | "⚧" | "🚻" | "🚮" | "🎦" | "📶" | "🈁" | "🔣" | "ℹ️" | "🔤" | "🔡" | "🔠" | "🆖" | "🆗" | "🆙" | "🆒" | "🆕" | "🆓" | "0️⃣" | "1️⃣" | "2️⃣" | "3️⃣" | "4️⃣" | "5️⃣" | "6️⃣" | "7️⃣" | "8️⃣" | "9️⃣" | "🔟" | "🔢" | "#️⃣" | "*️⃣" | "⏏️" | "▶️" | "⏸" | "⏯" | "⏹" | "⏺" | "⏭" | "⏮" | "⏩" | "⏪" | "⏫" | "⏬" | "◀️" | "🔼" | "🔽" | "➡️" | "⬅️" | "⬆️" | "⬇️" | "↗️" | "↘️" | "↙️" | "↖️" | "↕️" | "↔️" | "↪️" | "↩️" | "⤴️" | "⤵️" | "🔀" | "🔁" | "🔂" | "🔄" | "🔃" | "🎵" | "🎶" | "➕" | "➖" | "➗" | "✖️" | "♾" | "💲" | "💱" | "™️" | "©️" | "®️" | "〰️" | "➰" | "➿" | "🔚" | "🔙" | "🔛" | "🔝" | "🔜" | "✔️" | "☑️" | "🔘" | "🔴" | "🟠" | "🟡" | "🟢" | "🔵" | "🟣" | "⚫️" | "⚪️" | "🟤" | "🔺" | "🔻" | "🔸" | "🔹" | "🔶" | "🔷" | "🔳" | "🔲" | "▪️" | "▫️" | "◾️" | "◽️" | "◼️" | "◻️" | "🟥" | "🟧" | "🟨" | "🟩" | "🟦" | "🟪" | "⬛️" | "⬜️" | "🟫" | "🔈" | "🔇" | "🔉" | "🔊" | "🔔" | "🔕" | "📣" | "📢" | "👁‍🗨" | "💬" | "💭" | "🗯" | "♠️" | "♣️" | "♥️" | "♦️" | "🃏" | "🎴" | "🀄️" | "🕐" | "🕑" | "🕒" | "🕓" | "🕔" | "🕕" | "🕖" | "🕗" | "🕘" | "🕙" | "🕚" | "🕛" | "🕜" | "🕝" | "🕞" | "🕟" | "🕠" | "🕡" | "🕢" | "🕣" | "🕤" | "🕥" | "🕦" | "🕧" | "✢" | "✣" | "✤" | "✥" | "✦" | "✧" | "★" | "☆" | "✯" | "✡︎" | "✩" | "✪" | "✫" | "✬" | "✭" | "✮" | "✶" | "✷" | "✵" | "✸" | "✹" | "→" | "⇒" | "⟹" | "⇨" | "⇾" | "➾" | "⇢" | "☛" | "☞" | "➔" | "➜" | "➙" | "➛" | "➝" | "➞" | "♠︎" | "♣︎" | "♥︎" | "♦︎" | "♤" | "♧" | "♡" | "♢" | "♚" | "♛" | "♜" | "♝" | "♞" | "♔" | "♕" | "♖" | "♗" | "♘" | "♙" | "⚀" | "⚁" | "⚂" | "⚃" | "⚄" | "⚅" | "🂠" | "⚈" | "⚉" | "⚆" | "⚇" | "𓀀" | "𓀁" | "𓀂" | "𓀃" | "𓀄" | "𓀅" | "𓀆" | "𓀇" | "𓀈" | "𓀉" | "𓀊" | "𓀋" | "𓀌" | "𓀍" | "𓀎" | "𓀏" | "𓀐" | "𓀑" | "𓀒" | "𓀓" | "𓀔" | "𓀕" | "𓀖" | "𓀗" | "𓀘" | "𓀙" | "𓀚" | "𓀛" | "𓀜" | "𓀝" | "🏳️" | "🏴" | "🏁" | "🚩" | "🏳️‍🌈" | "🏳️‍⚧️" | "🏴‍☠️" | "🇦🇫" | "🇦🇽" | "🇦🇱" | "🇩🇿" | "🇦🇸" | "🇦🇩" | "🇦🇴" | "🇦🇮" | "🇦🇶" | "🇦🇬" | "🇦🇷" | "🇦🇲" | "🇦🇼" | "🇦🇺" | "🇦🇹" | "🇦🇿" | "🇧🇸" | "🇧🇭" | "🇧🇩" | "🇧🇧" | "🇧🇾" | "🇧🇪" | "🇧🇿" | "🇧🇯" | "🇧🇲" | "🇧🇹" | "🇧🇴" | "🇧🇦" | "🇧🇼" | "🇧🇷" | "🇮🇴" | "🇻🇬" | "🇧🇳" | "🇧🇬" | "🇧🇫" | "🇧🇮" | "🇰🇭" | "🇨🇲" | "🇨🇦" | "🇮🇨" | "🇨🇻" | "🇧🇶" | "🇰🇾" | "🇨🇫" | "🇹🇩" | "🇨🇱" | "🇨🇳" | "🇨🇽" | "🇨🇨" | "🇨🇴" | "🇰🇲" | "🇨🇬" | "🇨🇩" | "🇨🇰" | "🇨🇷" | "🇨🇮" | "🇭🇷" | "🇨🇺" | "🇨🇼" | "🇨🇾" | "🇨🇿" | "🇩🇰" | "🇩🇯" | "🇩🇲" | "🇩🇴" | "🇪🇨" | "🇪🇬" | "🇸🇻" | "🇬🇶" | "🇪🇷" | "🇪🇪" | "🇪🇹" | "🇪🇺" | "🇫🇰" | "🇫🇴" | "🇫🇯" | "🇫🇮" | "🇫🇷" | "🇬🇫" | "🇵🇫" | "🇹🇫" | "🇬🇦" | "🇬🇲" | "🇬🇪" | "🇩🇪" | "🇬🇭" | "🇬🇮" | "🇬🇷" | "🇬🇱" | "🇬🇩" | "🇬🇵" | "🇬🇺" | "🇬🇹" | "🇬🇬" | "🇬🇳" | "🇬🇼" | "🇬🇾" | "🇭🇹" | "🇭🇳" | "🇭🇰" | "🇭🇺" | "🇮🇸" | "🇮🇳" | "🇮🇩" | "🇮🇷" | "🇮🇶" | "🇮🇪" | "🇮🇲" | "🇮🇱" | "🇮🇹" | "🇯🇲" | "🇯🇵" | "🎌" | "🇯🇪" | "🇯🇴" | "🇰🇿" | "🇰🇪" | "🇰🇮" | "🇽🇰" | "🇰🇼" | "🇰🇬" | "🇱🇦" | "🇱🇻" | "🇱🇧" | "🇱🇸" | "🇱🇷" | "🇱🇾" | "🇱🇮" | "🇱🇹" | "🇱🇺" | "🇲🇴" | "🇲🇰" | "🇲🇬" | "🇲🇼" | "🇲🇾" | "🇲🇻" | "🇲🇱" | "🇲🇹" | "🇲🇭" | "🇲🇶" | "🇲🇷" | "🇲🇺" | "🇾🇹" | "🇲🇽" | "🇫🇲" | "🇲🇩" | "🇲🇨" | "🇲🇳" | "🇲🇪" | "🇲🇸" | "🇲🇦" | "🇲🇿" | "🇲🇲" | "🇳🇦" | "🇳🇷" | "🇳🇵" | "🇳🇱" | "🇳🇨" | "🇳🇿" | "🇳🇮" | "🇳🇪" | "🇳🇬" | "🇳🇺" | "🇳🇫" | "🇰🇵" | "🇲🇵" | "🇳🇴" | "🇴🇲" | "🇵🇰" | "🇵🇼" | "🇵🇸" | "🇵🇦" | "🇵🇬" | "🇵🇾" | "🇵🇪" | "🇵🇭" | "🇵🇳" | "🇵🇱" | "🇵🇹" | "🇵🇷" | "🇶🇦" | "🇷🇪" | "🇷🇴" | "🇷🇺" | "🇷🇼" | "🇼🇸" | "🇸🇲" | "🇸🇦" | "🇸🇳" | "🇷🇸" | "🇸🇨" | "🇸🇱" | "🇸🇬" | "🇸🇽" | "🇸🇰" | "🇸🇮" | "🇬🇸" | "🇸🇧" | "🇸🇴" | "🇿🇦" | "🇰🇷" | "🇸🇸" | "🇪🇸" | "🇱🇰" | "🇧🇱" | "🇸🇭" | "🇰🇳" | "🇱🇨" | "🇵🇲" | "🇻🇨" | "🇸🇩" | "🇸🇷" | "🇸🇿" | "🇸🇪" | "🇨🇭" | "🇸🇾" | "🇹🇼" | "🇹🇯" | "🇹🇿" | "🇹🇭" | "🇹🇱" | "🇹🇬" | "🇹🇰" | "🇹🇴" | "🇹🇹" | "🇹🇳" | "🇹🇷" | "🇹🇲" | "🇹🇨" | "🇹🇻" | "🇻🇮" | "🇺🇬" | "🇺🇦" | "🇦🇪" | "🇬🇧" | "🏴󠁧󠁢󠁥󠁮󠁧󠁿" | "🏴󠁧󠁢󠁳󠁣󠁴󠁿" | "🏴󠁧󠁢󠁷󠁬󠁳󠁿" | "🇺🇳" | "🇺🇸" | "🇺🇾" | "🇺🇿" | "🇻🇺" | "🇻🇦" | "🇻🇪" | "🇻🇳" | "🇼🇫" | "🇪🇭" | "🇾🇪" | "🇿🇲" | "🇿🇼" | "🦭" | "😮‍💨" | "😵‍💫" | "😶‍🌫️" | "❤️‍🔥" | "❤️‍🩹" | "🧔‍♀️" | "🧔🏻‍♀️" | "🧔🏼‍♀️" | "🧔🏽‍♀️" | "🧔🏾‍♀️" | "🧔🏿‍♀️" | "🧔‍♂️" | "🧔🏻‍♂️" | "🧔🏼‍♂️" | "🧔🏽‍♂️" | "🧔🏾‍♂️" | "🧔🏿‍♂️" | "💑🏻" | "💑🏼" | "💑🏽" | "💑🏾" | "💑🏿" | "💏🏻" | "💏🏼" | "💏🏽" | "💏🏾" | "💏🏿" | "👨🏻‍❤️‍👨🏻" | "👨🏻‍❤️‍👨🏼" | "👨🏻‍❤️‍👨🏽" | "👨🏻‍❤️‍👨🏾" | "👨🏻‍❤️‍👨🏿" | "👨🏼‍❤️‍👨🏻" | "👨🏼‍❤️‍👨🏼" | "👨🏼‍❤️‍👨🏽" | "👨🏼‍❤️‍👨🏾" | "👨🏼‍❤️‍👨🏿" | "👨🏽‍❤️‍👨🏻" | "👨🏽‍❤️‍👨🏼" | "👨🏽‍❤️‍👨🏽" | "👨🏽‍❤️‍👨🏾" | "👨🏽‍❤️‍👨🏿" | "👨🏾‍❤️‍👨🏻" | "👨🏾‍❤️‍👨🏼" | "👨🏾‍❤️‍👨🏽" | "👨🏾‍❤️‍👨🏾" | "👨🏾‍❤️‍👨🏿" | "👨🏿‍❤️‍👨🏻" | "👨🏿‍❤️‍👨🏼" | "👨🏿‍❤️‍👨🏽" | "👨🏿‍❤️‍👨🏾" | "👨🏿‍❤️‍👨🏿" | "👩🏻‍❤️‍👨🏻" | "👩🏻‍❤️‍👨🏼" | "👩🏻‍❤️‍👨🏽" | "👩🏻‍❤️‍👨🏾" | "👩🏻‍❤️‍👨🏿" | "👩🏻‍❤️‍👩🏻" | "👩🏻‍❤️‍👩🏼" | "👩🏻‍❤️‍👩🏽" | "👩🏻‍❤️‍👩🏾" | "👩🏻‍❤️‍👩🏿" | "👩🏼‍❤️‍👨🏻" | "👩🏼‍❤️‍👨🏼" | "👩🏼‍❤️‍👨🏽" | "👩🏼‍❤️‍👨🏾" | "👩🏼‍❤️‍👨🏿" | "👩🏼‍❤️‍👩🏻" | "👩🏼‍❤️‍👩🏼" | "👩🏼‍❤️‍👩🏽" | "👩🏼‍❤️‍👩🏾" | "👩🏼‍❤️‍👩🏿" | "👩🏽‍❤️‍👨🏻" | "👩🏽‍❤️‍👨🏼" | "👩🏽‍❤️‍👨🏽" | "👩🏽‍❤️‍👨🏾" | "👩🏽‍❤️‍👨🏿" | "👩🏽‍❤️‍👩🏻" | "👩🏽‍❤️‍👩🏼" | "👩🏽‍❤️‍👩🏽" | "👩🏽‍❤️‍👩🏾" | "👩🏽‍❤️‍👩🏿" | "👩🏾‍❤️‍👨🏻" | "👩🏾‍❤️‍👨🏼" | "👩🏾‍❤️‍👨🏽" | "👩🏾‍❤️‍👨🏾" | "👩🏾‍❤️‍👨🏿" | "👩🏾‍❤️‍👩🏻" | "👩🏾‍❤️‍👩🏼" | "👩🏾‍❤️‍👩🏽" | "👩🏾‍❤️‍👩🏾" | "👩🏾‍❤️‍👩🏿" | "👩🏿‍❤️‍👨🏻" | "👩🏿‍❤️‍👨🏼" | "👩🏿‍❤️‍👨🏽" | "👩🏿‍❤️‍👨🏾" | "👩🏿‍❤️‍👨🏿" | "👩🏿‍❤️‍👩🏻" | "👩🏿‍❤️‍👩🏼" | "👩🏿‍❤️‍👩🏽" | "👩🏿‍❤️‍👩🏾" | "👩🏿‍❤️‍👩🏿" | "🧑🏻‍❤️‍🧑🏼" | "🧑🏻‍❤️‍🧑🏽" | "🧑🏻‍❤️‍🧑🏾" | "🧑🏻‍❤️‍🧑🏿" | "🧑🏼‍❤️‍🧑🏻" | "🧑🏼‍❤️‍🧑🏽" | "🧑🏼‍❤️‍🧑🏾" | "🧑🏼‍❤️‍🧑🏿" | "🧑🏽‍❤️‍🧑🏻" | "🧑🏽‍❤️‍🧑🏼" | "🧑🏽‍❤️‍🧑🏾" | "🧑🏽‍❤️‍🧑🏿" | "🧑🏾‍❤️‍🧑🏻" | "🧑🏾‍❤️‍🧑🏼" | "🧑🏾‍❤️‍🧑🏽" | "🧑🏾‍❤️‍🧑🏿" | "🧑🏿‍❤️‍🧑🏻" | "🧑🏿‍❤️‍🧑🏼" | "🧑🏿‍❤️‍🧑🏽" | "🧑🏿‍❤️‍🧑🏾" | "👨🏻‍❤️‍💋‍👨🏻" | "👨🏻‍❤️‍💋‍👨🏼" | "👨🏻‍❤️‍💋‍👨🏽" | "👨🏻‍❤️‍💋‍👨🏾" | "👨🏻‍❤️‍💋‍👨🏿" | "👨🏼‍❤️‍💋‍👨🏻" | "👨🏼‍❤️‍💋‍👨🏼" | "👨🏼‍❤️‍💋‍👨🏽" | "👨🏼‍❤️‍💋‍👨🏾" | "👨🏼‍❤️‍💋‍👨🏿" | "👨🏽‍❤️‍💋‍👨🏻" | "👨🏽‍❤️‍💋‍👨🏼" | "👨🏽‍❤️‍💋‍👨🏽" | "👨🏽‍❤️‍💋‍👨🏾" | "👨🏽‍❤️‍💋‍👨🏿" | "👨🏾‍❤️‍💋‍👨🏻" | "👨🏾‍❤️‍💋‍👨🏼" | "👨🏾‍❤️‍💋‍👨🏽" | "👨🏾‍❤️‍💋‍👨🏾" | "👨🏾‍❤️‍💋‍👨🏿" | "👨🏿‍❤️‍💋‍👨🏻" | "👨🏿‍❤️‍💋‍👨🏼" | "👨🏿‍❤️‍💋‍👨🏽" | "👨🏿‍❤️‍💋‍👨🏾" | "👨🏿‍❤️‍💋‍👨🏿" | "👩🏻‍❤️‍💋‍👨🏻" | "👩🏻‍❤️‍💋‍👨🏼" | "👩🏻‍❤️‍💋‍👨🏽" | "👩🏻‍❤️‍💋‍👨🏾" | "👩🏻‍❤️‍💋‍👨🏿" | "👩🏻‍❤️‍💋‍👩🏻" | "👩🏻‍❤️‍💋‍👩🏼" | "👩🏻‍❤️‍💋‍👩🏽" | "👩🏻‍❤️‍💋‍👩🏾" | "👩🏻‍❤️‍💋‍👩🏿" | "👩🏼‍❤️‍💋‍👨🏻" | "👩🏼‍❤️‍💋‍👨🏼" | "👩🏼‍❤️‍💋‍👨🏽" | "👩🏼‍❤️‍💋‍👨🏾" | "👩🏼‍❤️‍💋‍👨🏿" | "👩🏼‍❤️‍💋‍👩🏻" | "👩🏼‍❤️‍💋‍👩🏼" | "👩🏼‍❤️‍💋‍👩🏽" | "👩🏼‍❤️‍💋‍👩🏾" | "👩🏼‍❤️‍💋‍👩🏿" | "👩🏽‍❤️‍💋‍👨🏻" | "👩🏽‍❤️‍💋‍👨🏼" | "👩🏽‍❤️‍💋‍👨🏽" | "👩🏽‍❤️‍💋‍👨🏾" | "👩🏽‍❤️‍💋‍👨🏿" | "👩🏽‍❤️‍💋‍👩🏻" | "👩🏽‍❤️‍💋‍👩🏼" | "👩🏽‍❤️‍💋‍👩🏽" | "👩🏽‍❤️‍💋‍👩🏾" | "👩🏽‍❤️‍💋‍👩🏿" | "👩🏾‍❤️‍💋‍👨🏻" | "👩🏾‍❤️‍💋‍👨🏼" | "👩🏾‍❤️‍💋‍👨🏽" | "👩🏾‍❤️‍💋‍👨🏾" | "👩🏾‍❤️‍💋‍👨🏿" | "👩🏾‍❤️‍💋‍👩🏻" | "👩🏾‍❤️‍💋‍👩🏼" | "👩🏾‍❤️‍💋‍👩🏽" | "👩🏾‍❤️‍💋‍👩🏾" | "👩🏾‍❤️‍💋‍👩🏿" | "👩🏿‍❤️‍💋‍👨🏻" | "👩🏿‍❤️‍💋‍👨🏼" | "👩🏿‍❤️‍💋‍👨🏽" | "👩🏿‍❤️‍💋‍👨🏾" | "👩🏿‍❤️‍💋‍👨🏿" | "👩🏿‍❤️‍💋‍👩🏻" | "👩🏿‍❤️‍💋‍👩🏼" | "👩🏿‍❤️‍💋‍👩🏽" | "👩🏿‍❤️‍💋‍👩🏾" | "👩🏿‍❤️‍💋‍👩🏿" | "🧑🏻‍❤️‍💋‍🧑🏼" | "🧑🏻‍❤️‍💋‍🧑🏽" | "🧑🏻‍❤️‍💋‍🧑🏾" | "🧑🏻‍❤️‍💋‍🧑🏿" | "🧑🏼‍❤️‍💋‍🧑🏻" | "🧑🏼‍❤️‍💋‍🧑🏽" | "🧑🏼‍❤️‍💋‍🧑🏾" | "🧑🏼‍❤️‍💋‍🧑🏿" | "🧑🏽‍❤️‍💋‍🧑🏻" | "🧑🏽‍❤️‍💋‍🧑🏼" | "🧑🏽‍❤️‍💋‍🧑🏾" | "🧑🏽‍❤️‍💋‍🧑🏿" | "🧑🏾‍❤️‍💋‍🧑🏻" | "🧑🏾‍❤️‍💋‍🧑🏼" | "🧑🏾‍❤️‍💋‍🧑🏽" | "🧑🏾‍❤️‍💋‍🧑🏿" | "🧑🏿‍❤️‍💋‍🧑🏻" | "🧑🏿‍❤️‍💋‍🧑🏼" | "🧑🏿‍❤️‍💋‍🧑🏽" | "🧑🏿‍❤️‍💋‍🧑🏾"';
10
10
  /**
@@ -2,6 +2,10 @@ import type { string_persona_description } from '../../types/typeAliases';
2
2
  /**
3
3
  * Generates a random agent persona description.
4
4
  *
5
+ * This function selects a random personality profile from a predefined pool
6
+ * of common AI agent characteristics (e.g., friendly, professional, creative).
7
+ *
8
+ * @returns A string describing the agent's persona
5
9
  * @private internal helper function
6
10
  */
7
11
  export declare function $randomAgentPersona(): string_persona_description;
@@ -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.104.0-12`).
18
+ * It follows semantic versioning (e.g., `0.104.0-13`).
19
19
  *
20
20
  * @generated
21
21
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/website-crawler",
3
- "version": "0.104.0-13",
3
+ "version": "0.104.0-14",
4
4
  "description": "Promptbook: Turn your company's scattered knowledge into AI ready books",
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/website-crawler.index.d.ts",
97
97
  "peerDependencies": {
98
- "@promptbook/core": "0.104.0-13"
98
+ "@promptbook/core": "0.104.0-14"
99
99
  },
100
100
  "dependencies": {
101
101
  "@mozilla/readability": "0.6.0",
package/umd/index.umd.js CHANGED
@@ -24,7 +24,7 @@
24
24
  * @generated
25
25
  * @see https://github.com/webgptorg/promptbook
26
26
  */
27
- const PROMPTBOOK_ENGINE_VERSION = '0.104.0-13';
27
+ const PROMPTBOOK_ENGINE_VERSION = '0.104.0-14';
28
28
  /**
29
29
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
30
30
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -1743,8 +1743,8 @@
1743
1743
  */
1744
1744
  function removeDiacritics(input) {
1745
1745
  /*eslint no-control-regex: "off"*/
1746
- return input.replace(/[^\u0000-\u007E]/g, (a) => {
1747
- return DIACRITIC_VARIANTS_LETTERS[a] || a;
1746
+ return input.replace(/[^\u0000-\u007E]/g, (character) => {
1747
+ return DIACRITIC_VARIANTS_LETTERS[character] || character;
1748
1748
  });
1749
1749
  }
1750
1750
  /**
@@ -3883,7 +3883,7 @@
3883
3883
  tasks.push(task);
3884
3884
  runningTasks.push(task);
3885
3885
  /* not await */ Promise.resolve(task).then(() => {
3886
- runningTasks = runningTasks.filter((t) => t !== task);
3886
+ runningTasks = runningTasks.filter((runningTask) => runningTask !== task);
3887
3887
  });
3888
3888
  if (maxParallelCount < runningTasks.length) {
3889
3889
  await Promise.race(runningTasks);
@@ -3940,10 +3940,14 @@
3940
3940
  }
3941
3941
 
3942
3942
  /**
3943
- * Intercepts LLM tools and counts total usage of the tools
3943
+ * Intercepts LLM tools and counts total usage of the tools.
3944
3944
  *
3945
- * @param llmTools LLM tools to be intercepted with usage counting
3946
- * @returns LLM tools with same functionality with added total cost counting
3945
+ * This function wraps the provided `LlmExecutionTools` with a proxy that tracks the cumulative
3946
+ * usage (tokens, cost, etc.) across all model calls. It provides a way to monitor spending
3947
+ * in real-time through an observable.
3948
+ *
3949
+ * @param llmTools - The LLM tools to be intercepted and tracked
3950
+ * @returns An augmented version of the tools that includes usage tracking capabilities
3947
3951
  * @public exported from `@promptbook/core`
3948
3952
  */
3949
3953
  function countUsage(llmTools) {
@@ -4208,17 +4212,21 @@
4208
4212
  */
4209
4213
 
4210
4214
  /**
4211
- * Joins multiple LLM Execution Tools into one
4215
+ * Joins multiple LLM Execution Tools into one.
4212
4216
  *
4213
- * @returns {LlmExecutionTools} Single wrapper for multiple LlmExecutionTools
4217
+ * This function takes a list of `LlmExecutionTools` and returns a single unified
4218
+ * `MultipleLlmExecutionTools` object. It provides failover and aggregation logic:
4214
4219
  *
4215
- * 0) If there is no LlmExecutionTools, it warns and returns valid but empty LlmExecutionTools
4216
- * 1) If there is only one LlmExecutionTools, it returns it wrapped in a proxy object
4217
- * 2) If there are multiple LlmExecutionTools, first will be used first, second will be used if the first hasn`t defined model variant or fails, etc.
4218
- * 3) When all LlmExecutionTools fail, it throws an error with a list of all errors merged into one
4220
+ * 1. **Failover**: When a model call is made, it tries providers in the order they were provided.
4221
+ * If the first provider doesn't support the requested model or fails, it tries the next one.
4222
+ * 2. **Aggregation**: `listModels` returns a combined list of all models available from all providers.
4223
+ * 3. **Empty case**: If no tools are provided, it logs a warning (as Promptbook requires LLMs to function).
4219
4224
  *
4225
+ * @param title - A descriptive title for this collection of joined tools
4226
+ * @param llmExecutionTools - An array of execution tools to be joined
4227
+ * @returns A single unified execution tool wrapper
4220
4228
  *
4221
- * Tip: You don't have to use this function directly, just pass an array of LlmExecutionTools to the `ExecutionTools`
4229
+ * Tip: You don't have to use this function directly, just pass an array of LlmExecutionTools to the `ExecutionTools`.
4222
4230
  *
4223
4231
  * @public exported from `@promptbook/core`
4224
4232
  */
@@ -6633,7 +6641,7 @@
6633
6641
  const taskEmbeddingResult = await llmTools.callEmbeddingModel(taskEmbeddingPrompt);
6634
6642
  const knowledgePiecesWithRelevance = preparedPipeline.knowledgePieces.map((knowledgePiece) => {
6635
6643
  const { index } = knowledgePiece;
6636
- const knowledgePieceIndex = index.find((i) => i.modelName === firstKnowledgeIndex.modelName);
6644
+ const knowledgePieceIndex = index.find((knowledgePieceIndex) => knowledgePieceIndex.modelName === firstKnowledgeIndex.modelName);
6637
6645
  // <- TODO: Do not use just first knowledge piece and first index to determine embedding model
6638
6646
  if (knowledgePieceIndex === undefined) {
6639
6647
  return {
@@ -7081,7 +7089,7 @@
7081
7089
  resovedParameterNames = [...resovedParameterNames, currentTask.resultingParameterName];
7082
7090
  })
7083
7091
  .then(() => {
7084
- resolving = resolving.filter((w) => w !== work);
7092
+ resolving = resolving.filter((workItem) => workItem !== work);
7085
7093
  });
7086
7094
  // <- Note: Errors are catched here [3]
7087
7095
  // TODO: BUT if in multiple tasks are errors, only the first one is catched so maybe we should catch errors here and save them to errors array here
@@ -7247,7 +7255,7 @@
7247
7255
  // Calculate and update tldr based on pipeline progress
7248
7256
  const cv = newOngoingResult;
7249
7257
  // Calculate progress based on parameters resolved vs total parameters
7250
- const totalParameters = pipeline.parameters.filter((p) => !p.isInput).length;
7258
+ const totalParameters = pipeline.parameters.filter((parameter) => !parameter.isInput).length;
7251
7259
  let resolvedParameters = 0;
7252
7260
  let currentTaskTitle = '';
7253
7261
  // Get the resolved parameters from output parameters