SYMBOL INDEX (2285 symbols across 341 files) FILE: backend/build.py class BuildError (line 11) | class BuildError(Exception): function run_subprocess (line 17) | def run_subprocess(cmd: list[str], cwd: pathlib.Path) -> None: function pnpm_install (line 30) | def pnpm_install(project_root: pathlib.Path, pnpm_path: str): function pnpm_buildui (line 34) | def pnpm_buildui(project_root: pathlib.Path, pnpm_path: str): function copy_directory (line 38) | def copy_directory(src: pathlib.Path, dst: pathlib.Path, description: str): function copy_frontend (line 56) | def copy_frontend(project_root: pathlib.Path): function copy_copilot (line 63) | def copy_copilot(project_root: pathlib.Path): function build (line 70) | def build(): class CustomBuildHook (line 108) | class CustomBuildHook(BuildHookInterface): method initialize (line 109) | def initialize(self, _, __): FILE: backend/chainlit/__init__.py function sleep (line 109) | def sleep(duration: int): class CopilotFunction (line 119) | class CopilotFunction: method acall (line 123) | def acall(self): function __dir__ (line 224) | def __dir__(): FILE: backend/chainlit/_utils.py function is_path_inside (line 6) | def is_path_inside(child_path: Path, parent_path: Path) -> bool: FILE: backend/chainlit/action.py class Action (line 12) | class Action(DataClassJsonMixin): method send (line 28) | async def send(self, for_id: str): method remove (line 32) | async def remove(self): FILE: backend/chainlit/auth/__init__.py function ensure_jwt_secret (line 21) | def ensure_jwt_secret(): function is_oauth_enabled (line 28) | def is_oauth_enabled(): function require_login (line 32) | def require_login(): function get_configuration (line 41) | def get_configuration(): function authenticate_user (line 58) | async def authenticate_user(token: str = Depends(reuseable_oauth)): function get_current_user (line 86) | async def get_current_user(token: str = Depends(reuseable_oauth)): FILE: backend/chainlit/auth/cookie.py class OAuth2PasswordBearerWithCookie (line 37) | class OAuth2PasswordBearerWithCookie(SecurityBase): method __init__ (line 42) | def __init__( method __call__ (line 52) | async def __call__(self, request: Request) -> Optional[str]: function _get_chunked_cookie (line 84) | def _get_chunked_cookie(cookies: dict[str, str], name: str) -> Optional[... function get_token_from_cookies (line 102) | def get_token_from_cookies(cookies: dict[str, str]) -> Optional[str]: function set_auth_cookie (line 114) | def set_auth_cookie(request: Request, response: Response, token: str): function clear_auth_cookie (line 162) | def clear_auth_cookie(request: Request, response: Response): function set_oauth_state_cookie (line 177) | def set_oauth_state_cookie(response: Response, token: str): function validate_oauth_state_cookie (line 188) | def validate_oauth_state_cookie(request: Request, state: str): function clear_oauth_state_cookie (line 197) | def clear_oauth_state_cookie(response: Response): FILE: backend/chainlit/auth/jwt.py function get_jwt_secret (line 11) | def get_jwt_secret() -> Optional[str]: function create_jwt (line 15) | def create_jwt(data: User) -> str: function decode_jwt (line 31) | def decode_jwt(token: str) -> User: FILE: backend/chainlit/cache.py function init_lc_cache (line 10) | def init_lc_cache(): function cache (line 30) | def cache(func): FILE: backend/chainlit/callbacks.py function on_app_startup (line 21) | def on_app_startup(func: Callable[[], Union[None, Awaitable[None]]]) -> ... function on_app_shutdown (line 43) | def on_app_shutdown(func: Callable[[], Union[None, Awaitable[None]]]) ->... function password_auth_callback (line 65) | def password_auth_callback( function header_auth_callback (line 86) | def header_auth_callback( function oauth_callback (line 107) | def oauth_callback( function on_logout (line 135) | def on_logout(func: Callable[[Request, Response], Any]) -> Callable: function on_message (line 145) | def on_message(func: Callable) -> Callable: function send_window_message (line 169) | async def send_window_message(data: Any): function on_window_message (line 179) | def on_window_message(func: Callable[[str], Any]) -> Callable: function on_chat_start (line 194) | def on_chat_start(func: Callable) -> Callable: function on_chat_resume (line 211) | def on_chat_resume(func: Callable[[ThreadDict], Any]) -> Callable: function set_chat_profiles (line 227) | def set_chat_profiles( function set_chat_profiles (line 233) | def set_chat_profiles( function set_chat_profiles (line 238) | def set_chat_profiles(func): function set_starters (line 254) | def set_starters( function set_starters (line 260) | def set_starters( function set_starters (line 265) | def set_starters(func): function set_starter_categories (line 281) | def set_starter_categories( function set_starter_categories (line 287) | def set_starter_categories( function set_starter_categories (line 296) | def set_starter_categories(func): function on_chat_end (line 311) | def on_chat_end(func: Callable) -> Callable: function on_audio_start (line 326) | def on_audio_start(func: Callable) -> Callable: function on_audio_chunk (line 338) | def on_audio_chunk(func: Callable) -> Callable: function on_audio_end (line 353) | def on_audio_end(func: Callable) -> Callable: function author_rename (line 367) | def author_rename( function on_mcp_connect (line 383) | def on_mcp_connect( function on_mcp_disconnect (line 394) | def on_mcp_disconnect( function on_stop (line 405) | def on_stop(func: Callable) -> Callable: function action_callback (line 420) | def action_callback(name: str) -> Callable: function on_settings_update (line 435) | def on_settings_update( function on_settings_edit (line 452) | def on_settings_edit( function data_layer (line 469) | def data_layer( function on_feedback (line 483) | def on_feedback(func: Callable) -> Callable: function on_slack_reaction_added (line 504) | def on_slack_reaction_added(func: Callable[[Dict[str, Any]], Any]) -> Ca... function on_shared_thread_view (line 531) | def on_shared_thread_view( FILE: backend/chainlit/chat_context.py class ChatContext (line 11) | class ChatContext: method get (line 12) | def get(self) -> List["Message"]: method add (line 22) | def add(self, message: "Message"): method remove (line 34) | def remove(self, message: "Message") -> bool: method clear (line 47) | def clear(self) -> None: method to_openai (line 51) | def to_openai(self): FILE: backend/chainlit/chat_settings.py class ChatSettings (line 11) | class ChatSettings: method __init__ (line 16) | def __init__( method settings (line 22) | def settings(self): method send (line 36) | async def send(self): FILE: backend/chainlit/cli/__init__.py function assert_app (line 39) | def assert_app(): function cli (line 53) | def cli(): function run_chainlit (line 58) | def run_chainlit(target: str): function chainlit_run (line 176) | def chainlit_run( function chainlit_hello (line 222) | def chainlit_hello(args=None, **kwargs): function chainlit_init (line 229) | def chainlit_init(args=None, **kwargs): function chainlit_create_secret (line 235) | def chainlit_create_secret(args=None, **kwargs): function chainlit_lint_translations (line 243) | def chainlit_lint_translations(args=None, **kwargs): FILE: backend/chainlit/config.py class RunSettings (line 255) | class RunSettings(BaseModel): class PaletteOptions (line 270) | class PaletteOptions(BaseModel): class TextOptions (line 276) | class TextOptions(BaseModel): class Palette (line 281) | class Palette(BaseModel): class SpontaneousFileUploadFeature (line 288) | class SpontaneousFileUploadFeature(BaseModel): class AudioFeature (line 295) | class AudioFeature(BaseModel): class McpSseFeature (line 300) | class McpSseFeature(BaseModel): class McpStreamableHttpFeature (line 304) | class McpStreamableHttpFeature(BaseModel): class McpStdioFeature (line 308) | class McpStdioFeature(BaseModel): class SlackFeature (line 313) | class SlackFeature(BaseModel): class McpFeature (line 317) | class McpFeature(BaseModel): class FeaturesSettings (line 326) | class FeaturesSettings(BaseModel): class HeaderLink (line 342) | class HeaderLink(BaseModel): class UISettings (line 350) | class UISettings(BaseModel): class CodeSettings (line 383) | class CodeSettings(BaseModel): class ProjectSettings (line 441) | class ProjectSettings(BaseModel): class ChainlitConfigOverrides (line 462) | class ChainlitConfigOverrides(BaseModel): class ChainlitConfig (line 470) | class ChainlitConfig(BaseSettings): method load_translation (line 479) | def load_translation(self, language: str): method with_overrides (line 523) | def with_overrides( function init_config (line 541) | def init_config(log: bool = False): function load_module (line 569) | def load_module(target: str, force_refresh: bool = False): function load_settings (line 610) | def load_settings(): function reload_config (line 645) | def reload_config(): function load_config (line 668) | def load_config(): function lint_translations (line 675) | def lint_translations(): FILE: backend/chainlit/context.py class ChainlitContextException (line 18) | class ChainlitContextException(Exception): method __init__ (line 19) | def __init__(self, msg="Chainlit context not found", *args, **kwargs): class ChainlitContext (line 23) | class ChainlitContext: method current_step (line 29) | def current_step(self): method current_run (line 34) | def current_run(self): method __init__ (line 40) | def __init__( function init_ws_context (line 64) | def init_ws_context(session_or_sid: Union[WebsocketSession, str]) -> Cha... function init_http_context (line 74) | def init_http_context( function get_context (line 105) | def get_context() -> ChainlitContext: FILE: backend/chainlit/data/__init__.py function get_data_layer (line 14) | def get_data_layer(): FILE: backend/chainlit/data/acl.py function is_thread_author (line 6) | async def is_thread_author(username: str, thread_id: str): FILE: backend/chainlit/data/base.py class BaseDataLayer (line 20) | class BaseDataLayer(ABC): method get_user (line 24) | async def get_user(self, identifier: str) -> Optional["PersistedUser"]: method create_user (line 28) | async def create_user(self, user: "User") -> Optional["PersistedUser"]: method delete_feedback (line 32) | async def delete_feedback( method upsert_feedback (line 39) | async def upsert_feedback( method create_element (line 47) | async def create_element(self, element: "Element"): method get_element (line 51) | async def get_element( method delete_element (line 58) | async def delete_element(self, element_id: str, thread_id: Optional[st... method create_step (line 63) | async def create_step(self, step_dict: "StepDict"): method update_step (line 68) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 73) | async def delete_step(self, step_id: str): method get_thread_author (line 77) | async def get_thread_author(self, thread_id: str) -> str: method delete_thread (line 81) | async def delete_thread(self, thread_id: str): method list_threads (line 85) | async def list_threads( method get_thread (line 91) | async def get_thread(self, thread_id: str) -> "Optional[ThreadDict]": method update_thread (line 95) | async def update_thread( method build_debug_url (line 106) | async def build_debug_url(self) -> str: method close (line 110) | async def close(self) -> None: method get_favorite_steps (line 114) | async def get_favorite_steps(self, user_id: str) -> List["StepDict"]: method set_step_favorite (line 117) | async def set_step_favorite( FILE: backend/chainlit/data/chainlit_data_layer.py class ChainlitDataLayer (line 40) | class ChainlitDataLayer(BaseDataLayer): method __init__ (line 41) | def __init__( method connect (line 52) | async def connect(self): method get_current_timestamp (line 56) | async def get_current_timestamp(self) -> datetime: method execute_query (line 59) | async def execute_query( method get_user (line 85) | async def get_user(self, identifier: str) -> Optional[PersistedUser]: method create_user (line 102) | async def create_user(self, user: User) -> Optional[PersistedUser]: method delete_feedback (line 128) | async def delete_feedback(self, feedback_id: str) -> bool: method upsert_feedback (line 135) | async def upsert_feedback(self, feedback: Feedback) -> str: method create_element (line 155) | async def create_element(self, element: "Element"): method get_element (line 259) | async def get_element( method delete_element (line 296) | async def delete_element(self, element_id: str, thread_id: Optional[st... method create_step (line 321) | async def create_step(self, step_dict: StepDict): method update_step (line 394) | async def update_step(self, step_dict: StepDict): method delete_step (line 398) | async def delete_step(self, step_id: str): method get_step (line 411) | async def get_step(self, step_id: str) -> Optional[StepDict]: method get_thread_author (line 426) | async def get_thread_author(self, thread_id: str) -> str: method delete_thread (line 438) | async def delete_thread(self, thread_id: str): method list_threads (line 456) | async def list_threads( method get_thread (line 520) | async def get_thread(self, thread_id: str) -> Optional[ThreadDict]: method update_thread (line 576) | async def update_thread( method get_favorite_steps (line 652) | async def get_favorite_steps(self, user_id: str) -> List[StepDict]: method _extract_feedback_dict_from_step_row (line 664) | def _extract_feedback_dict_from_step_row(self, row: Dict) -> Optional[... method _convert_step_row_to_dict (line 674) | def _convert_step_row_to_dict(self, row: Dict) -> StepDict: method _convert_element_row_to_dict (line 692) | def _convert_element_row_to_dict(self, row: Dict) -> ElementDict: method build_debug_url (line 713) | async def build_debug_url(self) -> str: method cleanup (line 716) | async def cleanup(self): method close (line 723) | async def close(self) -> None: function truncate (line 729) | def truncate(text: Optional[str], max_length: int = 255) -> Optional[str]: FILE: backend/chainlit/data/dynamodb.py class DynamoDBDataLayer (line 43) | class DynamoDBDataLayer(BaseDataLayer): method __init__ (line 44) | def __init__( method _get_current_timestamp (line 64) | def _get_current_timestamp(self) -> str: method _serialize_item (line 67) | def _serialize_item(self, item: dict[str, Any]) -> dict[str, Any]: method _deserialize_item (line 83) | def _deserialize_item(self, item: dict[str, Any]) -> dict[str, Any]: method _update_item (line 99) | def _update_item(self, key: Dict[str, Any], updates: Dict[str, Any]): method context (line 122) | def context(self): method get_user (line 125) | async def get_user(self, identifier: str) -> Optional["PersistedUser"]: method create_user (line 148) | async def create_user(self, user: "User") -> Optional["PersistedUser"]: method delete_feedback (line 175) | async def delete_feedback(self, feedback_id: str) -> bool: method upsert_feedback (line 195) | async def upsert_feedback(self, feedback: Feedback) -> str: method create_element (line 225) | async def create_element(self, element: "Element"): method get_element (line 303) | async def get_element( method delete_element (line 324) | async def delete_element(self, element_id: str, thread_id: Optional[st... method create_step (line 339) | async def create_step(self, step_dict: "StepDict"): method update_step (line 362) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 380) | async def delete_step(self, step_id: str): method get_thread_author (line 392) | async def get_thread_author(self, thread_id: str) -> str: method delete_thread (line 410) | async def delete_thread(self, thread_id: str): method list_threads (line 455) | async def list_threads( method get_thread (line 511) | async def get_thread(self, thread_id: str) -> "Optional[ThreadDict]": method update_thread (line 575) | async def update_thread( method get_favorite_steps (line 615) | async def get_favorite_steps(self, user_id: str) -> List["StepDict"]: method build_debug_url (line 678) | async def build_debug_url(self) -> str: method close (line 681) | async def close(self) -> None: FILE: backend/chainlit/data/literalai.py function _show_deprecation_warning (line 43) | def _show_deprecation_warning(): class LiteralToChainlitConverter (line 55) | class LiteralToChainlitConverter: method steptype_to_steptype (line 57) | def steptype_to_steptype(cls, step_type: Optional[StepType]) -> TrueSt... method score_to_feedbackdict (line 61) | def score_to_feedbackdict( method step_to_stepdict (line 75) | def step_to_stepdict(cls, step: LiteralStep) -> "StepDict": method attachment_to_elementdict (line 117) | def attachment_to_elementdict(cls, attachment: LiteralAttachment) -> E... method attachment_to_element (line 139) | def attachment_to_element( method step_to_step (line 171) | def step_to_step(cls, step: LiteralStep) -> Step: method thread_to_threaddict (line 198) | def thread_to_threaddict(cls, thread: LiteralThread) -> ThreadDict: class LiteralDataLayer (line 220) | class LiteralDataLayer(BaseDataLayer): method __init__ (line 221) | def __init__(self, api_key: str, server: Optional[str]): method build_debug_url (line 227) | async def build_debug_url(self) -> str: method get_user (line 235) | async def get_user(self, identifier: str) -> Optional[PersistedUser]: method create_user (line 246) | async def create_user(self, user: User) -> Optional[PersistedUser]: method delete_feedback (line 261) | async def delete_feedback( method upsert_feedback (line 272) | async def upsert_feedback( method safely_send_steps (line 295) | async def safely_send_steps(self, steps): method create_element (line 304) | async def create_element(self, element: "Element"): method get_element (line 351) | async def get_element( method delete_element (line 360) | async def delete_element(self, element_id: str, thread_id: Optional[st... method create_step (line 364) | async def create_step(self, step_dict: "StepDict"): method update_step (line 395) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 399) | async def delete_step(self, step_id: str): method get_thread_author (line 402) | async def get_thread_author(self, thread_id: str) -> str: method delete_thread (line 412) | async def delete_thread(self, thread_id: str): method list_threads (line 415) | async def list_threads( method get_thread (line 469) | async def get_thread(self, thread_id: str) -> Optional[ThreadDict]: method update_thread (line 503) | async def update_thread( method get_favorite_steps (line 519) | async def get_favorite_steps(self, user_id: str) -> List[StepDict]: method close (line 523) | async def close(self): FILE: backend/chainlit/data/sql_alchemy.py class SQLAlchemyDataLayer (line 37) | class SQLAlchemyDataLayer(BaseDataLayer): method __init__ (line 38) | def __init__( method build_debug_url (line 74) | async def build_debug_url(self) -> str: method execute_sql (line 78) | async def execute_sql( method get_current_timestamp (line 105) | async def get_current_timestamp(self) -> str: method clean_result (line 108) | def clean_result(self, obj): method get_user (line 119) | async def get_user(self, identifier: str) -> Optional[PersistedUser]: method _get_user_identifer_by_id (line 146) | async def _get_user_identifer_by_id(self, user_id: str) -> str: method _get_user_id_by_thread (line 158) | async def _get_user_id_by_thread(self, thread_id: str) -> Optional[str]: method create_user (line 170) | async def create_user(self, user: User) -> Optional[PersistedUser]: method get_thread_author (line 195) | async def get_thread_author(self, thread_id: str) -> str: method get_thread (line 207) | async def get_thread(self, thread_id: str) -> Optional[ThreadDict]: method update_thread (line 218) | async def update_thread( method delete_thread (line 283) | async def delete_thread(self, thread_id: str): method list_threads (line 305) | async def list_threads( method create_step (line 368) | async def create_step(self, step_dict: "StepDict"): method update_step (line 400) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 406) | async def delete_step(self, step_id: str): method get_step (line 418) | async def get_step(self, step_id: str) -> Optional["StepDict"]: method upsert_feedback (line 495) | async def upsert_feedback(self, feedback: Feedback) -> str: method delete_feedback (line 518) | async def delete_feedback(self, feedback_id: str) -> bool: method get_element (line 527) | async def get_element( method create_element (line 563) | async def create_element(self, element: "Element"): method delete_element (line 630) | async def delete_element(self, element_id: str, thread_id: Optional[st... method get_all_user_threads (line 650) | async def get_all_user_threads( method get_favorite_steps (line 856) | async def get_favorite_steps(self, user_id: str) -> List[StepDict]: method close (line 934) | async def close(self) -> None: FILE: backend/chainlit/data/storage_clients/azure.py class AzureStorageClient (line 21) | class AzureStorageClient(BaseStorageClient): method __init__ (line 31) | def __init__( method upload_file (line 58) | async def upload_file( method close (line 86) | async def close(self) -> None: FILE: backend/chainlit/data/storage_clients/azure_blob.py class AzureBlobStorageClient (line 11) | class AzureBlobStorageClient(BaseStorageClient): method __init__ (line 12) | def __init__(self, container_name: str, storage_account: str, storage_... method get_read_url (line 30) | async def get_read_url(self, object_key: str) -> str: method upload_file (line 50) | async def upload_file( method delete_file (line 87) | async def delete_file(self, object_key: str) -> bool: method close (line 96) | async def close(self) -> None: FILE: backend/chainlit/data/storage_clients/base.py class BaseStorageClient (line 8) | class BaseStorageClient(ABC): method upload_file (line 12) | async def upload_file( method delete_file (line 23) | async def delete_file(self, object_key: str) -> bool: method get_read_url (line 27) | async def get_read_url(self, object_key: str) -> str: method close (line 31) | async def close(self) -> None: FILE: backend/chainlit/data/storage_clients/gcs.py class GCSStorageClient (line 12) | class GCSStorageClient(BaseStorageClient): method __init__ (line 13) | def __init__( method sync_get_read_url (line 43) | def sync_get_read_url(self, object_key: str) -> str: method get_read_url (line 48) | async def get_read_url(self, object_key: str) -> str: method sync_upload_file (line 51) | def sync_upload_file( method upload_file (line 80) | async def upload_file( method sync_delete_file (line 92) | def sync_delete_file(self, object_key: str) -> bool: method delete_file (line 100) | async def delete_file(self, object_key: str) -> bool: method close (line 103) | async def close(self) -> None: FILE: backend/chainlit/data/storage_clients/s3.py class S3StorageClient (line 11) | class S3StorageClient(BaseStorageClient): method __init__ (line 16) | def __init__(self, bucket: str, **kwargs: Any): method sync_get_read_url (line 24) | def sync_get_read_url(self, object_key: str) -> str: method get_read_url (line 36) | async def get_read_url(self, object_key: str) -> str: method sync_upload_file (line 39) | def sync_upload_file( method upload_file (line 67) | async def upload_file( method sync_delete_file (line 79) | def sync_delete_file(self, object_key: str) -> bool: method delete_file (line 87) | async def delete_file(self, object_key: str) -> bool: method close (line 90) | async def close(self) -> None: FILE: backend/chainlit/data/utils.py function queue_until_user_message (line 8) | def queue_until_user_message(): FILE: backend/chainlit/discord/app.py class FeedbackView (line 29) | class FeedbackView(View): method __init__ (line 30) | def __init__(self, step_id: str): method thumbs_down (line 35) | async def thumbs_down(self, interaction: discord.Interaction, button: ... method thumbs_up (line 47) | async def thumbs_up(self, interaction: discord.Interaction, button: Bu... class DiscordEmitter (line 59) | class DiscordEmitter(BaseChainlitEmitter): method __init__ (line 60) | def __init__(self, session: HTTPSession, channel: "MessageableChannel"): method send_element (line 64) | async def send_element(self, element_dict: ElementDict): method send_step (line 95) | async def send_step(self, step_dict: StepDict): method update_step (line 120) | async def update_step(self, step_dict: StepDict): function init_discord_context (line 133) | def init_discord_context( function get_user (line 151) | async def get_user(discord_user: Union[discord.User, discord.Member]): function download_discord_file (line 174) | async def download_discord_file(url: str): function download_discord_files (line 183) | async def download_discord_files( function clean_content (line 221) | def clean_content(message: discord.Message): function process_discord_message (line 231) | async def process_discord_message( function on_ready (line 297) | async def on_ready(): function on_message (line 302) | async def on_message(message: discord.Message): FILE: backend/chainlit/element.py class ElementDict (line 49) | class ElementDict(TypedDict, total=False): class Element (line 70) | class Element: method __post_init__ (line 100) | def __post_init__(self) -> None: method to_dict (line 107) | def to_dict(self) -> ElementDict: method from_dict (line 131) | def from_dict(cls, e_dict: ElementDict): method infer_type_from_mime (line 189) | def infer_type_from_mime(cls, mime_type: str): method _create (line 206) | async def _create(self, persist=True) -> bool: method remove (line 228) | async def remove(self): method send (line 234) | async def send(self, for_id: str, persist=True): class Image (line 259) | class Image(Element): class Text (line 266) | class Text(Element): class Pdf (line 274) | class Pdf(Element): class Pyplot (line 283) | class Pyplot(Element): method __post_init__ (line 294) | def __post_init__(self) -> None: class TaskStatus (line 309) | class TaskStatus(Enum): class Task (line 317) | class Task: method __init__ (line 322) | def __init__( class TaskList (line 334) | class TaskList(Element): method __post_init__ (line 341) | def __post_init__(self) -> None: method add_task (line 345) | async def add_task(self, task: Task): method update (line 348) | async def update(self): method send (line 351) | async def send(self): method preprocess_content (line 355) | async def preprocess_content(self): class Audio (line 374) | class Audio(Element): class Video (line 380) | class Video(Element): class File (line 390) | class File(Element): class Plotly (line 395) | class Plotly(Element): method __post_init__ (line 406) | def __post_init__(self) -> None: class Dataframe (line 422) | class Dataframe(Element): method __post_init__ (line 429) | def __post_init__(self) -> None: class CustomElement (line 441) | class CustomElement(Element): method __post_init__ (line 448) | def __post_init__(self) -> None: method update (line 453) | async def update(self): FILE: backend/chainlit/emitter.py class BaseChainlitEmitter (line 33) | class BaseChainlitEmitter: method __init__ (line 42) | def __init__(self, session: BaseSession) -> None: method emit (line 46) | async def emit(self, event: str, data: Any): method emit_call (line 50) | async def emit_call(self): method resume_thread (line 54) | async def resume_thread(self, thread_dict: ThreadDict): method send_resume_thread_error (line 58) | async def send_resume_thread_error(self, error: str): method send_element (line 62) | async def send_element(self, element_dict: ElementDict): method update_audio_connection (line 66) | async def update_audio_connection(self, state: Literal["on", "off"]): method send_audio_chunk (line 70) | async def send_audio_chunk(self, chunk: OutputAudioChunk): method send_audio_interrupt (line 74) | async def send_audio_interrupt(self): method send_step (line 78) | async def send_step(self, step_dict: StepDict): method update_step (line 82) | async def update_step(self, step_dict: StepDict): method delete_step (line 86) | async def delete_step(self, step_dict: StepDict): method send_timeout (line 90) | def send_timeout(self, event: Literal["ask_timeout", "call_fn_timeout"]): method clear (line 94) | def clear(self, event: Literal["clear_ask", "clear_call_fn"]): method init_thread (line 97) | async def init_thread(self, interaction: str): method process_message (line 100) | async def process_message(self, payload: MessagePayload) -> Message: method send_ask_user (line 104) | async def send_ask_user( method send_call_fn (line 112) | async def send_call_fn( method update_token_count (line 118) | async def update_token_count(self, count: int): method task_start (line 122) | async def task_start(self): method task_end (line 126) | async def task_end(self): method stream_start (line 130) | async def stream_start(self, step_dict: StepDict): method send_token (line 134) | async def send_token(self, id: str, token: str, is_sequence=False, is_... method set_chat_settings (line 138) | async def set_chat_settings(self, settings: dict): method set_commands (line 142) | async def set_commands(self, commands: List[CommandDict]): method set_modes (line 146) | async def set_modes(self, modes: List[Mode]): method send_window_message (line 150) | async def send_window_message(self, data: Any): method send_toast (line 154) | def send_toast(self, message: str, type: Optional[ToastType] = "info"): method set_favorites (line 158) | async def set_favorites(self, steps: List[StepDict]): class ChainlitEmitter (line 163) | class ChainlitEmitter(BaseChainlitEmitter): method __init__ (line 171) | def __init__(self, session: WebsocketSession) -> None: method _get_session_property (line 175) | def _get_session_property(self, property_name: str, raise_error=True): method emit (line 185) | def emit(self): method emit_call (line 191) | def emit_call(self): method resume_thread (line 195) | def resume_thread(self, thread_dict: ThreadDict): method send_resume_thread_error (line 199) | def send_resume_thread_error(self, error: str): method update_audio_connection (line 203) | async def update_audio_connection(self, state: Literal["on", "off"]): method send_audio_chunk (line 207) | async def send_audio_chunk(self, chunk: OutputAudioChunk): method send_audio_interrupt (line 211) | async def send_audio_interrupt(self): method send_element (line 215) | async def send_element(self, element_dict: ElementDict): method send_step (line 219) | def send_step(self, step_dict: StepDict): method update_step (line 223) | def update_step(self, step_dict: StepDict): method delete_step (line 227) | def delete_step(self, step_dict: StepDict): method send_timeout (line 231) | def send_timeout(self, event: Literal["ask_timeout", "call_fn_timeout"]): method clear (line 234) | def clear(self, event: Literal["clear_ask", "clear_call_fn"]): method flush_thread_queues (line 237) | async def flush_thread_queues(self, interaction: str): method init_thread (line 258) | async def init_thread(self, interaction: str): method process_message (line 268) | async def process_message(self, payload: MessagePayload): method send_ask_user (line 317) | async def send_ask_user( method send_call_fn (line 393) | async def send_call_fn( method update_token_count (line 411) | def update_token_count(self, count: int): method task_start (line 416) | def task_start(self): method task_end (line 422) | def task_end(self): method stream_start (line 426) | def stream_start(self, step_dict: StepDict): method send_token (line 433) | def send_token(self, id: str, token: str, is_sequence=False, is_input=... method set_chat_settings (line 440) | def set_chat_settings(self, settings: Dict[str, Any]): method set_commands (line 443) | def set_commands(self, commands: List[CommandDict]): method set_modes (line 450) | def set_modes(self, modes: List[Mode]): method set_favorites (line 457) | def set_favorites(self, steps: List[StepDict]): method send_window_message (line 464) | def send_window_message(self, data: Any): method send_toast (line 468) | def send_toast(self, message: str, type: Optional[ToastType] = "info"): FILE: backend/chainlit/input_widget.py class InputWidget (line 12) | class InputWidget: method __post_init__ (line 20) | def __post_init__( method to_dict (line 27) | def to_dict(self) -> Dict[str, Any]: class Switch (line 32) | class Switch(InputWidget): method to_dict (line 38) | def to_dict(self) -> Dict[str, Any]: class Slider (line 51) | class Slider(InputWidget): method to_dict (line 60) | def to_dict(self) -> Dict[str, Any]: class Select (line 76) | class Select(InputWidget): method __post_init__ (line 86) | def __post_init__( method to_dict (line 114) | def to_dict(self) -> Dict[str, Any]: class TextInput (line 130) | class TextInput(InputWidget): method to_dict (line 138) | def to_dict(self) -> Dict[str, Any]: class NumberInput (line 153) | class NumberInput(InputWidget): method to_dict (line 160) | def to_dict(self) -> Dict[str, Any]: class Tags (line 174) | class Tags(InputWidget): method to_dict (line 181) | def to_dict(self) -> Dict[str, Any]: class MultiSelect (line 194) | class MultiSelect(InputWidget): method __post_init__ (line 202) | def __post_init__( method to_dict (line 218) | def to_dict(self) -> Dict[str, Any]: class Checkbox (line 234) | class Checkbox(InputWidget): method to_dict (line 240) | def to_dict(self) -> Dict[str, Any]: class RadioGroup (line 253) | class RadioGroup(InputWidget): method __post_init__ (line 263) | def __post_init__( method to_dict (line 291) | def to_dict(self) -> Dict[str, Any]: class Tab (line 307) | class Tab: method to_dict (line 312) | def to_dict(self) -> dict[str, Any]: class DatePicker (line 321) | class DatePicker(InputWidget): method __post_init__ (line 337) | def __post_init__(self) -> None: method _validate_range (line 378) | def _validate_range( method _validate_iso_format (line 389) | def _validate_iso_format( method _format_date (line 401) | def _format_date(date_value: str | date | None) -> str | None: method to_dict (line 406) | def to_dict(self) -> dict[str, Any]: FILE: backend/chainlit/langchain/callbacks.py class FinalStreamHelper (line 22) | class FinalStreamHelper: method __init__ (line 34) | def __init__( method _check_if_answer_reached (line 63) | def _check_if_answer_reached(self) -> bool: method _compare_last_tokens (line 69) | def _compare_last_tokens(self, last_tokens: List[str]): method _append_to_last_tokens (line 86) | def _append_to_last_tokens(self, token: str) -> None: class ChatGenerationStart (line 94) | class ChatGenerationStart(TypedDict): class CompletionGenerationStart (line 101) | class CompletionGenerationStart(TypedDict): class GenerationHelper (line 108) | class GenerationHelper: method __init__ (line 113) | def __init__(self) -> None: method ensure_values_serializable (line 118) | def ensure_values_serializable(self, data): method _convert_message_role (line 144) | def _convert_message_role(self, role: str): method _convert_message_dict (line 156) | def _convert_message_dict( method _convert_message (line 201) | def _convert_message( method _build_llm_settings (line 256) | def _build_llm_settings( function process_content (line 298) | def process_content(content: Any) -> Tuple[Dict | str, Optional[str]]: class LangchainTracer (line 317) | class LangchainTracer(AsyncBaseTracer, GenerationHelper, FinalStreamHelp... method __init__ (line 322) | def __init__( method on_chat_model_start (line 364) | async def on_chat_model_start( method on_llm_start (line 395) | async def on_llm_start( method on_llm_new_token (line 425) | async def on_llm_new_token( method _persist_run (line 475) | async def _persist_run(self, run: Run) -> None: method _get_run_parent_id (line 478) | def _get_run_parent_id(self, run: Run): method _get_non_ignored_parent_id (line 483) | def _get_non_ignored_parent_id(self, current_parent_id: Optional[str] ... method _should_ignore_run (line 499) | def _should_ignore_run(self, run: Run): method _start_trace (line 526) | async def _start_trace(self, run: Run) -> None: method _on_run_update (line 571) | async def _on_run_update(self, run: Run) -> None: method _on_error (line 666) | async def _on_error(self, error: BaseException, *, run_id: UUID, **kwa... FILE: backend/chainlit/langflow/__init__.py function load_flow (line 13) | async def load_flow(schema: Union[Dict, str], tweaks: Optional[Dict] = N... FILE: backend/chainlit/llama_index/callbacks.py class LlamaIndexCallbackHandler (line 23) | class LlamaIndexCallbackHandler(TokenCountingHandler): method __init__ (line 28) | def __init__( method _get_parent_id (line 41) | def _get_parent_id(self, event_parent_id: Optional[str] = None) -> Opt... method on_event_start (line 49) | def on_event_start( method on_event_end (line 90) | def on_event_end( method _noop (line 202) | def _noop(self, *args, **kwargs): FILE: backend/chainlit/markdown.py function init_markdown (line 27) | def init_markdown(root: str): function get_markdown_str (line 37) | def get_markdown_str(root: str, language: str) -> Optional[str]: FILE: backend/chainlit/mcp.py class StdioMcpConnection (line 9) | class StdioMcpConnection(BaseModel): class SseMcpConnection (line 16) | class SseMcpConnection(BaseModel): class HttpMcpConnection (line 23) | class HttpMcpConnection(BaseModel): function validate_mcp_command (line 33) | def validate_mcp_command(command_string: str): FILE: backend/chainlit/message.py class MessageBase (line 31) | class MessageBase(ABC): method __post_init__ (line 50) | def __post_init__(self) -> None: method from_dict (line 62) | def from_dict(self, _dict: StepDict): method to_dict (line 77) | def to_dict(self) -> StepDict: method update (line 100) | async def update( method remove (line 126) | async def remove(self): method _create (line 145) | async def _create(self): method send (line 159) | async def send(self): method stream_token (line 177) | async def stream_token(self, token: str, is_sequence=False): class Message (line 202) | class Message(MessageBase): method __init__ (line 214) | def __init__( method send (line 270) | async def send(self): method update (line 286) | async def update(self): method remove_actions (line 306) | async def remove_actions(self): class ErrorMessage (line 311) | class ErrorMessage(MessageBase): method __init__ (line 321) | def __init__( method send (line 335) | async def send(self): class AskMessageBase (line 343) | class AskMessageBase(MessageBase): method remove (line 344) | async def remove(self): class AskUserMessage (line 350) | class AskUserMessage(AskMessageBase): method __init__ (line 363) | def __init__( method send (line 379) | async def send(self) -> Union[StepDict, None]: class AskFileMessage (line 408) | class AskFileMessage(AskMessageBase): method __init__ (line 424) | def __init__( method send (line 446) | async def send(self) -> Union[List[AskFileResponse], None]: class AskActionMessage (line 494) | class AskActionMessage(AskMessageBase): method __init__ (line 500) | def __init__( method send (line 516) | async def send(self) -> Union[AskActionResponse, None]: class AskElementMessage (line 565) | class AskElementMessage(AskMessageBase): method __init__ (line 568) | def __init__( method send (line 584) | async def send(self) -> Union[AskElementResponse, None]: FILE: backend/chainlit/mistralai/__init__.py function instrument_mistralai (line 11) | def instrument_mistralai(): FILE: backend/chainlit/mode.py class ModeOption (line 15) | class ModeOption(DataClassJsonMixin): class Mode (line 34) | class Mode(DataClassJsonMixin): method get_default_option (line 50) | def get_default_option(self) -> Optional[ModeOption]: method get_option_by_id (line 57) | def get_option_by_id(self, option_id: str) -> Optional[ModeOption]: FILE: backend/chainlit/oauth_providers.py class OAuthProvider (line 15) | class OAuthProvider: method is_configured (line 24) | def is_configured(self): method get_raw_token_response (line 27) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 30) | async def get_token(self, code: str, url: str) -> str: method get_user_info (line 33) | async def get_user_info(self, token: str) -> Tuple[Dict[str, str], User]: method get_env_prefix (line 36) | def get_env_prefix(self) -> str: method get_prompt (line 41) | def get_prompt(self) -> Optional[str]: class GithubOAuthProvider (line 52) | class GithubOAuthProvider(OAuthProvider): method __init__ (line 65) | def __init__(self): method get_raw_token_response (line 75) | async def get_raw_token_response(self, code: str, url: str) -> Dict[st... method get_token (line 89) | async def get_token(self, code: str, url: str): method get_user_info (line 96) | async def get_user_info(self, token: str): class GoogleOAuthProvider (line 120) | class GoogleOAuthProvider(OAuthProvider): method __init__ (line 125) | def __init__(self): method get_raw_token_response (line 137) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 153) | async def get_token(self, code: str, url: str): method get_user_info (line 160) | async def get_user_info(self, token: str): class AzureADOAuthProvider (line 175) | class AzureADOAuthProvider(OAuthProvider): method __init__ (line 193) | def __init__(self): method get_raw_token_response (line 206) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 222) | async def get_token(self, code: str, url: str): method get_user_info (line 232) | async def get_user_info(self, token: str): class AzureADHybridOAuthProvider (line 267) | class AzureADHybridOAuthProvider(OAuthProvider): method __init__ (line 285) | def __init__(self): method get_raw_token_response (line 300) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 316) | async def get_token(self, code: str, url: str): method get_user_info (line 326) | async def get_user_info(self, token: str): class OktaOAuthProvider (line 361) | class OktaOAuthProvider(OAuthProvider): method __init__ (line 371) | def __init__(self): method get_authorization_server_path (line 389) | def get_authorization_server_path(self): method get_raw_token_response (line 396) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 412) | async def get_token(self, code: str, url: str): method get_user_info (line 419) | async def get_user_info(self, token: str): class Auth0OAuthProvider (line 435) | class Auth0OAuthProvider(OAuthProvider): method __init__ (line 439) | def __init__(self): method get_raw_token_response (line 461) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 477) | async def get_token(self, code: str, url: str): method get_user_info (line 484) | async def get_user_info(self, token: str): class DescopeOAuthProvider (line 502) | class DescopeOAuthProvider(OAuthProvider): method __init__ (line 510) | def __init__(self): method get_raw_token_response (line 522) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 538) | async def get_token(self, code: str, url: str): method get_user_info (line 545) | async def get_user_info(self, token: str): class AWSCognitoOAuthProvider (line 560) | class AWSCognitoOAuthProvider(OAuthProvider): method __init__ (line 570) | def __init__(self): method get_raw_token_response (line 583) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 599) | async def get_token(self, code: str, url: str): method get_user_info (line 606) | async def get_user_info(self, token: str): class GitlabOAuthProvider (line 630) | class GitlabOAuthProvider(OAuthProvider): method __init__ (line 638) | def __init__(self): method get_raw_token_response (line 654) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 670) | async def get_token(self, code: str, url: str): method get_user_info (line 677) | async def get_user_info(self, token: str): class KeycloakOAuthProvider (line 695) | class KeycloakOAuthProvider(OAuthProvider): method __init__ (line 704) | def __init__(self): method get_raw_token_response (line 722) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 738) | async def get_token(self, code: str, url: str): method get_user_info (line 747) | async def get_user_info(self, token: str): class GenericOAuthProvider (line 762) | class GenericOAuthProvider(OAuthProvider): method __init__ (line 773) | def __init__(self): method get_raw_token_response (line 790) | async def get_raw_token_response(self, code: str, url: str) -> dict: method get_token (line 803) | async def get_token(self, code: str, url: str) -> str: method get_user_info (line 810) | async def get_user_info(self, token: str): function get_oauth_provider (line 842) | def get_oauth_provider(provider: str) -> Optional[OAuthProvider]: function get_configured_oauth_providers (line 849) | def get_configured_oauth_providers(): FILE: backend/chainlit/openai/__init__.py function instrument_openai (line 11) | def instrument_openai(): FILE: backend/chainlit/sample/hello.py function main (line 7) | async def main(): FILE: backend/chainlit/sample/starters_demo.py function starter_categories (line 7) | async def starter_categories(user: Optional[cl.User] = None): function on_message (line 58) | async def on_message(msg: cl.Message): FILE: backend/chainlit/secret.py function random_secret (line 8) | def random_secret(length: int = 64): FILE: backend/chainlit/semantic_kernel/__init__.py class SemanticKernelFilter (line 14) | class SemanticKernelFilter(BaseModel): method __init__ (line 48) | def __init__( method add_to_kernel (line 61) | def add_to_kernel(self, kernel: "Kernel") -> None: method parse_arguments (line 69) | def parse_arguments(self, arguments: "KernelArguments") -> dict[str, A... method _function_invocation_filter (line 90) | async def _function_invocation_filter( FILE: backend/chainlit/server.py function lifespan (line 90) | async def lifespan(app: FastAPI): function get_build_dir (line 197) | def get_build_dir(local_target: str, packaged_target: str) -> str: class SafariWebSocketsCompatibleGZipMiddleware (line 246) | class SafariWebSocketsCompatibleGZipMiddleware(GZipMiddleware): method __call__ (line 247) | async def __call__(self, scope: Scope, receive: Receive, send: Send) -... function serve_public_file (line 265) | async def serve_public_file( function serve_asset_file (line 283) | async def serve_asset_file( function serve_copilot_file (line 301) | async def serve_copilot_file( function slack_endpoint (line 330) | async def slack_endpoint(req: Request): function teams_endpoint (line 344) | async def teams_endpoint(req: Request): function replace_between_tags (line 357) | def replace_between_tags( function get_html_template (line 366) | def get_html_template(root_path): function get_user_facing_url (line 438) | def get_user_facing_url(url: URL): function auth (line 462) | async def auth(request: Request): function _get_response_dict (line 466) | def _get_response_dict(access_token: str) -> dict: function _get_auth_response (line 472) | def _get_auth_response(access_token: str, redirect_to_callback: bool) ->... function _get_oauth_redirect_error (line 493) | def _get_oauth_redirect_error(request: Request, error: str) -> Response: function _authenticate_user (line 504) | async def _authenticate_user( function login (line 534) | async def login( function logout (line 555) | async def logout(request: Request, response: Response): function jwt_auth (line 566) | async def jwt_auth(request: Request): function header_auth (line 595) | async def header_auth(request: Request): function oauth_login (line 609) | async def oauth_login(provider_id: str, request: Request): function oauth_callback (line 644) | async def oauth_callback( function oauth_azure_hf_callback (line 703) | async def oauth_azure_hf_callback( function get_user (line 755) | async def get_user(current_user: UserParam) -> GenericUser: function set_session_cookie (line 765) | async def set_session_cookie(request: Request, response: Response): function project_translations (line 784) | async def project_translations( function project_settings (line 805) | async def project_settings( function update_feedback (line 882) | async def update_feedback( function delete_feedback (line 916) | async def delete_feedback( function get_user_threads (line 935) | async def get_user_threads( function get_thread (line 963) | async def get_thread( function get_shared_thread (line 984) | async def get_shared_thread( function get_thread_element (line 1039) | async def get_thread_element( function update_thread_element (line 1061) | async def update_thread_element( function delete_thread_element (line 1097) | async def delete_thread_element( function _sanitize_custom_element (line 1132) | def _sanitize_custom_element(element_dict: "ElementDict") -> "CustomElem... function rename_thread (line 1146) | async def rename_thread( function share_thread (line 1171) | async def share_thread( function delete_thread (line 1223) | async def delete_thread( function call_action (line 1247) | async def call_action( function connect_mcp (line 1290) | async def connect_mcp( function disconnect_mcp (line 1458) | async def disconnect_mcp( function upload_file (line 1500) | async def upload_file( function validate_file_upload (line 1554) | def validate_file_upload(file: UploadFile, spec: Optional[AskFileSpec] =... function validate_file_mime_type (line 1575) | def validate_file_mime_type(file: UploadFile, spec: Optional[AskFileSpec]): function validate_file_size (line 1613) | def validate_file_size(file: UploadFile, spec: Optional[AskFileSpec]): function get_file (line 1636) | async def get_file( function get_favicon (line 1667) | async def get_favicon(): function get_logo (line 1683) | async def get_logo(theme: Optional[Theme] = Query(Theme.light)): function get_avatar (line 1713) | async def get_avatar(avatar_id: str): function status_check (line 1739) | def status_check(): function health_check (line 1745) | def health_check(): function serve (line 1751) | async def serve(request: Request): FILE: backend/chainlit/session.py class JSONEncoderIgnoreNonSerializable (line 25) | class JSONEncoderIgnoreNonSerializable(json.JSONEncoder): method default (line 26) | def default(self, o): function clean_metadata (line 33) | def clean_metadata(metadata: Dict, max_size: int = 1048576): class BaseSession (line 48) | class BaseSession: method __init__ (line 55) | def __init__( method files_dir (line 92) | def files_dir(self): method persist_file (line 97) | async def persist_file( method to_persistable (line 147) | def to_persistable(self) -> Dict: class HTTPSession (line 166) | class HTTPSession(BaseSession): method __init__ (line 169) | def __init__( method delete (line 194) | async def delete(self): class WebsocketSession (line 203) | class WebsocketSession(BaseSession): method __init__ (line 219) | def __init__( method get_config (line 277) | def get_config(self) -> "ChainlitConfig": method restore (line 310) | def restore(self, new_socket_id: str): method delete (line 317) | async def delete(self): method flush_method_queue (line 330) | async def flush_method_queue(self): method get (line 340) | def get(cls, socket_id: str): method get_by_id (line 345) | def get_by_id(cls, session_id: str): method require (line 350) | def require(cls, socket_id: str): FILE: backend/chainlit/sidebar.py class ElementSidebar (line 8) | class ElementSidebar: method set_title (line 13) | async def set_title(title: str): method set_elements (line 28) | async def set_elements(elements: List[ElementBased], key: Optional[str... FILE: backend/chainlit/slack/app.py class SlackEmitter (line 25) | class SlackEmitter(BaseChainlitEmitter): method __init__ (line 26) | def __init__( method send_element (line 40) | async def send_element(self, element_dict: ElementDict): method send_step (line 65) | async def send_step(self, step_dict: StepDict): method update_step (line 114) | async def update_step(self, step_dict: StepDict): function start_socket_mode (line 129) | async def start_socket_mode(): function init_slack_context (line 139) | def init_slack_context( function get_bot_user_id (line 175) | async def get_bot_user_id() -> Optional[str]: function clean_content (line 192) | def clean_content(message: str): function get_user (line 197) | async def get_user(slack_user_id: str): function fetch_message_history (line 220) | async def fetch_message_history( function download_slack_file (line 238) | async def download_slack_file(url, token): function download_slack_files (line 248) | async def download_slack_files(session: HTTPSession, files, token): function add_reaction_if_enabled (line 284) | async def add_reaction_if_enabled(event, emoji: str = "eyes"): function process_slack_message (line 294) | async def process_slack_message( function handle_app_home_opened (line 366) | async def handle_app_home_opened(event, say): function handle_app_mentions (line 371) | async def handle_app_mentions(event, say): function handle_message (line 379) | async def handle_message(message, say): function handle_reaction_added (line 393) | async def handle_reaction_added(event): function thumb_down (line 471) | async def thumb_down(ack, context, body): function thumb_up (line 499) | async def thumb_up(ack, context, body): FILE: backend/chainlit/socket.py class WebSocketSessionAuth (line 33) | class WebSocketSessionAuth(TypedDict): function restore_existing_session (line 41) | def restore_existing_session(sid, session_id, emit_fn, emit_call_fn, env... function persist_user_session (line 52) | async def persist_user_session(thread_id: str, metadata: Dict): function resume_thread (line 57) | async def resume_thread(session: WebsocketSession): function load_user_env (line 81) | def load_user_env(user_env): function _get_token_from_cookie (line 97) | def _get_token_from_cookie(environ: WSGIEnvironment) -> Optional[str]: function _get_token (line 105) | def _get_token(environ: WSGIEnvironment) -> Optional[str]: function _authenticate_connection (line 110) | async def _authenticate_connection( function connect (line 122) | async def connect(sid: str, environ: WSGIEnvironment, auth: WebSocketSes... function connection_successful (line 183) | async def connection_successful(sid): function clean_session (line 221) | async def clean_session(sid): function disconnect (line 228) | async def disconnect(sid): function stop (line 262) | async def stop(sid): function process_message (line 274) | async def process_message(session: WebsocketSession, payload: MessagePay... function edit_message (line 296) | async def edit_message(sid, payload: MessagePayload): function message_favorite (line 326) | async def message_favorite(sid, payload: MessagePayload): function fetch_favorites (line 371) | async def fetch_favorites(sid): function message (line 381) | async def message(sid, payload: MessagePayload): function window_message (line 390) | async def window_message(sid, data): function audio_start (line 403) | async def audio_start(sid): function audio_chunk (line 417) | async def audio_chunk(sid, payload: InputAudioChunkPayload): function audio_end (line 434) | async def audio_end(sid): function change_settings (line 463) | async def change_settings(sid, settings: Dict[str, Any]): function edit_settings (line 475) | async def edit_settings(sid, settings: Dict[str, Any]): FILE: backend/chainlit/step.py function check_add_step_in_cot (line 22) | def check_add_step_in_cot(step: "Step"): function stub_step (line 33) | def stub_step(step: "Step") -> "StepDict": class StepDict (line 45) | class StepDict(TypedDict, total=False): function flatten_args_kwargs (line 71) | def flatten_args_kwargs(func, args, kwargs): function step (line 78) | def step( class Step (line 169) | class Step: method __init__ (line 195) | def __init__( method _clean_content (line 237) | def _clean_content(self, content): method _process_content (line 255) | def _process_content(self, content, set_language=False): method input (line 282) | def input(self): method input (line 286) | def input(self, content: Union[Dict, str]): method output (line 290) | def output(self): method output (line 294) | def output(self, content: Union[Dict, str]): method to_dict (line 297) | def to_dict(self) -> StepDict: method update (line 321) | async def update(self): method remove (line 349) | async def remove(self): method send (line 368) | async def send(self): method stream_token (line 401) | async def stream_token(self, token: str, is_sequence=False, is_input=F... method __call__ (line 436) | def __call__(self, func): method __aenter__ (line 447) | async def __aenter__(self): method __aexit__ (line 459) | async def __aexit__(self, exc_type, exc_val, exc_tb): method __enter__ (line 473) | def __enter__(self): method __exit__ (line 487) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: backend/chainlit/sync.py function run_sync (line 24) | def run_sync(co: Coroutine[Any, Any, T_Retval]) -> T_Retval: FILE: backend/chainlit/teams/app.py class TeamsEmitter (line 44) | class TeamsEmitter(BaseChainlitEmitter): method __init__ (line 45) | def __init__(self, session: HTTPSession, turn_context: TurnContext): method send_element (line 49) | async def send_element(self, element_dict: ElementDict): method send_step (line 83) | async def send_step(self, step_dict: StepDict): method update_step (line 122) | async def update_step(self, step_dict: StepDict): function init_teams_context (line 136) | def init_teams_context( function get_user (line 152) | async def get_user(teams_user: ChannelAccount): function download_teams_file (line 175) | async def download_teams_file(url: str): function download_teams_files (line 184) | async def download_teams_files( function clean_content (line 229) | def clean_content(activity: Activity): function process_teams_message (line 233) | async def process_teams_message( function handle_message (line 301) | async def handle_message(turn_context: TurnContext): function on_turn (line 337) | async def on_turn(turn_context: TurnContext): class TeamsBot (line 342) | class TeamsBot: method on_turn (line 343) | async def on_turn(self, turn_context: TurnContext): FILE: backend/chainlit/translations.py function compare_json_structures (line 6) | def compare_json_structures(truth, to_compare, path=""): function lint_translation_json (line 51) | def lint_translation_json(file, truth, to_compare): FILE: backend/chainlit/types.py class ThreadDict (line 42) | class ThreadDict(TypedDict): class Pagination (line 54) | class Pagination(BaseModel): class ThreadFilter (line 59) | class ThreadFilter(BaseModel): class PageInfo (line 66) | class PageInfo: method to_dict (line 71) | def to_dict(self): method from_dict (line 79) | def from_dict(cls, page_info_dict: Dict) -> "PageInfo": class HasFromDict (line 91) | class HasFromDict(Protocol[T]): method from_dict (line 93) | def from_dict(cls, obj_dict: Any) -> T: class PaginatedResponse (line 98) | class PaginatedResponse(Generic[T]): method to_dict (line 102) | def to_dict(self): method from_dict (line 112) | def from_dict( class FileSpec (line 123) | class FileSpec(DataClassJsonMixin): class ActionSpec (line 130) | class ActionSpec(DataClassJsonMixin): class AskSpec (line 135) | class AskSpec(DataClassJsonMixin): class AskFileSpec (line 144) | class AskFileSpec(FileSpec, AskSpec, DataClassJsonMixin): class AskActionSpec (line 149) | class AskActionSpec(ActionSpec, AskSpec, DataClassJsonMixin): class AskElementSpec (line 154) | class AskElementSpec(AskSpec, DataClassJsonMixin): class FileReference (line 160) | class FileReference(TypedDict): class FileDict (line 164) | class FileDict(TypedDict): class MessagePayload (line 172) | class MessagePayload(TypedDict): class InputAudioChunkPayload (line 177) | class InputAudioChunkPayload(TypedDict): class InputAudioChunk (line 185) | class InputAudioChunk: class OutputAudioChunk (line 192) | class OutputAudioChunk(TypedDict): class AskFileResponse (line 199) | class AskFileResponse: class AskActionResponse (line 207) | class AskActionResponse(TypedDict): class AskElementResponse (line 216) | class AskElementResponse(TypedDict, total=False): class UpdateThreadRequest (line 220) | class UpdateThreadRequest(BaseModel): class ShareThreadRequest (line 225) | class ShareThreadRequest(BaseModel): class DeleteThreadRequest (line 230) | class DeleteThreadRequest(BaseModel): class DeleteFeedbackRequest (line 234) | class DeleteFeedbackRequest(BaseModel): class GetThreadsRequest (line 238) | class GetThreadsRequest(BaseModel): class CallActionRequest (line 243) | class CallActionRequest(BaseModel): class ConnectStdioMCPRequest (line 248) | class ConnectStdioMCPRequest(BaseModel): class ConnectSseMCPRequest (line 255) | class ConnectSseMCPRequest(BaseModel): class ConnectStreamableHttpMCPRequest (line 264) | class ConnectStreamableHttpMCPRequest(BaseModel): class DisconnectMCPRequest (line 278) | class DisconnectMCPRequest(BaseModel): class ElementRequest (line 283) | class ElementRequest(BaseModel): class Theme (line 288) | class Theme(str, Enum): class Starter (line 294) | class Starter(DataClassJsonMixin): class StarterCategory (line 304) | class StarterCategory(DataClassJsonMixin): class ChatProfile (line 313) | class ChatProfile(DataClassJsonMixin): class CommandDict (line 328) | class CommandDict(TypedDict): class FeedbackDict (line 343) | class FeedbackDict(TypedDict): class Feedback (line 351) | class Feedback: class UpdateFeedbackRequest (line 359) | class UpdateFeedbackRequest(BaseModel): FILE: backend/chainlit/user.py class UserDict (line 20) | class UserDict(TypedDict): class User (line 29) | class User(DataClassJsonMixin): class PersistedUserFields (line 36) | class PersistedUserFields: class PersistedUser (line 42) | class PersistedUser(User, PersistedUserFields): FILE: backend/chainlit/user_session.py class UserSession (line 10) | class UserSession: method get (line 16) | def get(self, key, default=None): method set (line 36) | def set(self, key, value): method create_accessor (line 46) | def create_accessor( class SessionAccessor (line 92) | class SessionAccessor(Generic[T]): method __init__ (line 118) | def __init__( method get (line 125) | def get(self) -> T: method set (line 131) | def set(self, value: T) -> None: method reset (line 137) | def reset(self) -> None: method apply (line 143) | def apply(self) -> T: FILE: backend/chainlit/utils.py function utc_now (line 20) | def utc_now(): function timestamp_utc (line 25) | def timestamp_utc(timestamp: float): function wrap_user_function (line 30) | def wrap_user_function(user_function: Callable, with_task=False) -> Call... function make_module_getattr (line 77) | def make_module_getattr(registry): function check_module_version (line 92) | def check_module_version(name, required_version): function check_file (line 111) | def check_file(target: str): function mount_chainlit (line 132) | def mount_chainlit(app: FastAPI, target: str, path="/chainlit"): FILE: backend/tests/auth/test_cookie.py function test_app (line 18) | def test_app(): function client (line 42) | def client(test_app): function test_short_token (line 46) | def test_short_token(client): function test_set_and_read_4kb_token (line 65) | def test_set_and_read_4kb_token(client): function test_overwrite_shorter_token_chunked (line 88) | def test_overwrite_shorter_token_chunked(client): function test_overwrite_shorter_token_unchunked (line 112) | def test_overwrite_shorter_token_unchunked(client): function test_state_cookie_lifetime_default (line 136) | def test_state_cookie_lifetime_default(monkeypatch): function test_state_cookie_lifetime_custom (line 143) | def test_state_cookie_lifetime_custom(monkeypatch): function test_clear_auth_cookie (line 150) | def test_clear_auth_cookie(client): FILE: backend/tests/conftest.py function persisted_test_user (line 20) | def persisted_test_user(): function mock_session_factory (line 29) | def mock_session_factory(persisted_test_user: PersistedUser) -> Callable... function mock_session (line 51) | def mock_session(mock_session_factory) -> Mock: function create_chainlit_context (line 56) | async def create_chainlit_context(mock_session): function mock_chainlit_context (line 80) | async def mock_chainlit_context(persisted_test_user, mock_session): function user_session (line 86) | def user_session(): function mock_websocket_session (line 91) | def mock_websocket_session(): function mock_http_session (line 99) | def mock_http_session(): function mock_data_layer (line 104) | def mock_data_layer(monkeypatch: pytest.MonkeyPatch) -> AsyncMock: function mock_get_data_layer (line 111) | def mock_get_data_layer(mock_data_layer: AsyncMock, test_config: config.... function test_config (line 120) | def test_config(monkeypatch: pytest.MonkeyPatch, tmp_path: Path): FILE: backend/tests/data/conftest.py function mock_storage_client (line 10) | def mock_storage_client(): function test_user (line 20) | def test_user() -> User: FILE: backend/tests/data/storage_clients/test_gcs.py function mock_gcs_client (line 10) | def mock_gcs_client(): class TestGCSStorageClient (line 40) | class TestGCSStorageClient: method test_init (line 41) | def test_init(self, mock_gcs_client): method test_sync_get_read_url (line 72) | def test_sync_get_read_url(self, mock_gcs_client): method test_get_read_url (line 102) | async def test_get_read_url(self, mock_gcs_client): method test_sync_upload_file (line 131) | def test_sync_upload_file(self, mock_gcs_client): method test_sync_upload_file_string_data (line 162) | def test_sync_upload_file_string_data(self, mock_gcs_client): method test_sync_upload_file_no_overwrite (line 191) | def test_sync_upload_file_no_overwrite(self, mock_gcs_client): method test_sync_upload_file_error (line 220) | def test_sync_upload_file_error(self, mock_gcs_client): method test_upload_file (line 246) | async def test_upload_file(self, mock_gcs_client): method test_sync_delete_file (line 275) | def test_sync_delete_file(self, mock_gcs_client): method test_sync_delete_file_error (line 295) | def test_sync_delete_file_error(self, mock_gcs_client): method test_delete_file (line 319) | async def test_delete_file(self, mock_gcs_client): FILE: backend/tests/data/storage_clients/test_s3.py function aws_credentials (line 12) | def aws_credentials(): function s3_mock (line 22) | def s3_mock(aws_credentials): function test_upload_file (line 32) | async def test_upload_file(s3_mock): FILE: backend/tests/data/test_chainlit_data_layer.py function test_update_thread_preserves_metadata_when_none (line 10) | async def test_update_thread_preserves_metadata_when_none(): function test_update_thread_merges_metadata_when_provided (line 38) | async def test_update_thread_merges_metadata_when_provided(): function test_update_thread_deletes_keys_with_none_values (line 89) | async def test_update_thread_deletes_keys_with_none_values(): function test_create_step_uses_nullif_for_output_and_input (line 145) | async def test_create_step_uses_nullif_for_output_and_input(): FILE: backend/tests/data/test_get_data_layer.py function test_get_data_layer (line 6) | async def test_get_data_layer( FILE: backend/tests/data/test_literalai.py function mock_literal_client (line 39) | async def mock_literal_client(monkeypatch: pytest.MonkeyPatch): function literal_data_layer (line 47) | async def literal_data_layer(mock_literal_client): function test_thread (line 54) | def test_thread(): function test_step_dict (line 69) | def test_step_dict(test_thread) -> StepDict: function test_step (line 90) | def test_step(test_thread: LiteralThread): function literal_test_user (line 116) | def literal_test_user(test_user: User): function test_filters (line 126) | def test_filters() -> ThreadFilter: function test_pagination (line 131) | def test_pagination() -> Pagination: function test_attachment (line 136) | def test_attachment( function test_create_step (line 155) | async def test_create_step( function test_safely_send_steps_success (line 190) | async def test_safely_send_steps_success( function test_safely_send_steps_http_status_error (line 203) | async def test_safely_send_steps_http_status_error( function test_safely_send_steps_request_error (line 221) | async def test_safely_send_steps_request_error( function test_get_user (line 241) | async def test_get_user( function test_get_user_not_found (line 258) | async def test_get_user_not_found( function test_create_user_not_existing (line 271) | async def test_create_user_not_existing( function test_create_user_update_existing (line 292) | async def test_create_user_update_existing( function test_create_user_id_none (line 314) | async def test_create_user_id_none( function test_update_thread (line 336) | async def test_update_thread( function test_get_thread_author (line 352) | async def test_get_thread_author( function test_get_thread (line 364) | async def test_get_thread( function test_get_thread_with_stub_step (line 385) | async def test_get_thread_with_stub_step( function test_get_thread_with_attachment (line 424) | async def test_get_thread_with_attachment( function test_get_thread_non_existing (line 462) | async def test_get_thread_non_existing( function test_delete_thread (line 475) | async def test_delete_thread( function test_list_threads (line 485) | async def test_list_threads( function test_create_element (line 540) | async def test_create_element( function test_get_element (line 591) | async def test_get_element( function test_upsert_feedback_create (line 622) | async def test_upsert_feedback_create( function test_upsert_feedback_update (line 641) | async def test_upsert_feedback_update( function test_delete_feedback (line 664) | async def test_delete_feedback( function test_delete_feedback_empty_id (line 676) | async def test_delete_feedback_empty_id( function test_build_debug_url (line 688) | async def test_build_debug_url( function test_build_debug_url_error (line 704) | async def test_build_debug_url_error( function test_delete_element (line 718) | async def test_delete_element( function test_delete_step (line 731) | async def test_delete_step( function test_update_step (line 744) | async def test_update_step( function test_steptype_to_steptype (line 779) | def test_steptype_to_steptype(): function test_score_to_feedbackdict (line 796) | def test_score_to_feedbackdict(): function test_step_to_stepdict (line 830) | def test_step_to_stepdict(): function test_attachment_to_elementdict (line 879) | def test_attachment_to_elementdict(): function test_attachment_to_element (line 911) | def test_attachment_to_element(): function test_step_to_step (line 960) | def test_step_to_step(): function test_thread_to_threaddict (line 1010) | def test_thread_to_threaddict(): FILE: backend/tests/data/test_sql_alchemy.py function data_layer (line 15) | async def data_layer(mock_storage_client: BaseStorageClient, tmp_path: P... function test_create_and_get_element (line 126) | async def test_create_and_get_element( function test_get_current_timestamp (line 151) | async def test_get_current_timestamp(data_layer: SQLAlchemyDataLayer): function test_get_user (line 156) | async def test_get_user(test_user: User, data_layer: SQLAlchemyDataLayer): function test_create_user (line 170) | async def test_create_user(test_user: User, data_layer: SQLAlchemyDataLa... function test_update_thread (line 182) | async def test_update_thread(test_user: User, data_layer: SQLAlchemyData... function test_get_thread_author (line 189) | async def test_get_thread_author(test_user: User, data_layer: SQLAlchemy... function test_get_thread (line 199) | async def test_get_thread(test_user: User, data_layer: SQLAlchemyDataLay... function test_delete_thread (line 211) | async def test_delete_thread(test_user: User, data_layer: SQLAlchemyData... FILE: backend/tests/langchain/test_async_callback.py function create_mock_run (line 14) | def create_mock_run(**kwargs): function mock_run (line 33) | def mock_run(): function test_tracer_initialization (line 43) | async def test_tracer_initialization(mock_chainlit_context): function test_on_llm_start (line 55) | async def test_on_llm_start(mock_chainlit_context): function test_on_llm_new_token (line 76) | async def test_on_llm_new_token(mock_chainlit_context): function test_start_trace (line 100) | async def test_start_trace(mock_chainlit_context): function test_on_run_update (line 131) | async def test_on_run_update(mock_chainlit_context): function test_error_handling (line 153) | async def test_error_handling(mock_chainlit_context): FILE: backend/tests/langchain/test_chain_types.py function create_mock_run (line 11) | def create_mock_run(**kwargs): function test_different_run_types (line 29) | async def test_different_run_types(mock_chainlit_context): function test_nested_chain_hierarchy (line 63) | async def test_nested_chain_hierarchy(mock_chainlit_context): function test_ignored_runs (line 100) | async def test_ignored_runs(mock_chainlit_context): function test_custom_filtering (line 119) | async def test_custom_filtering(mock_chainlit_context): FILE: backend/tests/langchain/test_sync_callback.py function create_mock_run (line 16) | def create_mock_run(**kwargs): class TestFinalStreamHelper (line 34) | class TestFinalStreamHelper: method test_initialization (line 37) | def test_initialization(self): method test_check_if_answer_reached (line 45) | def test_check_if_answer_reached(self): class TestGenerationHelper (line 56) | class TestGenerationHelper: method test_initialization (line 59) | def test_initialization(self): method test_ensure_values_serializable (line 67) | def test_ensure_values_serializable(self): method test_convert_message (line 79) | def test_convert_message(self): method test_build_llm_settings (line 95) | def test_build_llm_settings(self): function test_should_ignore_run (line 115) | async def test_should_ignore_run(mock_chainlit_context): function test_get_non_ignored_parent_id (line 131) | async def test_get_non_ignored_parent_id(mock_chainlit_context): FILE: backend/tests/llama_index/test_callbacks.py function test_on_event_start_for_function_calls (line 10) | async def test_on_event_start_for_function_calls(mock_chainlit_context): function test_on_event_start_for_function_calls_missing_payload (line 38) | async def test_on_event_start_for_function_calls_missing_payload(mock_ch... function test_on_event_end_for_function_calls (line 61) | async def test_on_event_end_for_function_calls(mock_chainlit_context): function test_on_event_end_for_function_calls_missing_payload (line 81) | async def test_on_event_end_for_function_calls_missing_payload(mock_chai... FILE: backend/tests/test_action.py class TestAction (line 9) | class TestAction: method test_action_initialization_with_required_fields (line 12) | async def test_action_initialization_with_required_fields(self): method test_action_initialization_with_all_fields (line 29) | async def test_action_initialization_with_all_fields(self): method test_action_id_auto_generation (line 49) | async def test_action_id_auto_generation(self): method test_action_to_dict (line 59) | async def test_action_to_dict(self): method test_action_to_dict_with_for_id (line 81) | async def test_action_to_dict_with_for_id(self): method test_action_send (line 90) | async def test_action_send(self, mock_chainlit_context): method test_action_send_updates_for_id (line 116) | async def test_action_send_updates_for_id(self, mock_chainlit_context): method test_action_remove (line 132) | async def test_action_remove(self, mock_chainlit_context): method test_action_remove_without_for_id (line 154) | async def test_action_remove_without_for_id(self, mock_chainlit_context): method test_action_with_complex_payload (line 165) | async def test_action_with_complex_payload(self): method test_action_with_empty_payload (line 184) | async def test_action_with_empty_payload(self): method test_action_with_empty_strings (line 191) | async def test_action_with_empty_strings(self): method test_action_serialization_deserialization (line 207) | async def test_action_serialization_deserialization(self): method test_multiple_actions_with_same_name (line 230) | async def test_multiple_actions_with_same_name(self): method test_action_send_multiple_times (line 239) | async def test_action_send_multiple_times(self, mock_chainlit_context): method test_action_with_special_characters_in_payload (line 254) | async def test_action_with_special_characters_in_payload(self): method test_action_icon_variations (line 269) | async def test_action_icon_variations(self): FILE: backend/tests/test_cache.py class TestCacheDecorator (line 13) | class TestCacheDecorator: method setup_method (line 16) | def setup_method(self): method teardown_method (line 20) | def teardown_method(self): method test_cache_basic_function (line 24) | def test_cache_basic_function(self): method test_cache_different_arguments (line 44) | def test_cache_different_arguments(self): method test_cache_with_kwargs (line 67) | def test_cache_with_kwargs(self): method test_cache_kwargs_order_independence (line 91) | def test_cache_kwargs_order_independence(self): method test_cache_mixed_args_and_kwargs (line 110) | def test_cache_mixed_args_and_kwargs(self): method test_cache_with_no_arguments (line 132) | def test_cache_with_no_arguments(self): method test_cache_with_mutable_return_value (line 150) | def test_cache_with_mutable_return_value(self): method test_cache_thread_safety (line 171) | def test_cache_thread_safety(self): method test_cache_different_functions_same_args (line 200) | def test_cache_different_functions_same_args(self): method test_cache_with_none_arguments (line 231) | def test_cache_with_none_arguments(self): method test_cache_preserves_function_behavior (line 249) | def test_cache_preserves_function_behavior(self): class TestInitLcCache (line 263) | class TestInitLcCache: method test_init_lc_cache_disabled_by_config (line 266) | def test_init_lc_cache_disabled_by_config(self): method test_init_lc_cache_disabled_by_no_cache_flag (line 281) | def test_init_lc_cache_disabled_by_no_cache_flag(self): method test_init_lc_cache_langchain_not_installed (line 296) | def test_init_lc_cache_langchain_not_installed(self): method test_init_lc_cache_with_langchain_installed (line 311) | def test_init_lc_cache_with_langchain_installed(self): method test_init_lc_cache_creates_new_cache_file (line 343) | def test_init_lc_cache_creates_new_cache_file(self): method test_init_lc_cache_without_cache_path (line 375) | def test_init_lc_cache_without_cache_path(self): class TestCacheEdgeCases (line 405) | class TestCacheEdgeCases: method setup_method (line 408) | def setup_method(self): method teardown_method (line 412) | def teardown_method(self): method test_cache_with_unhashable_arguments (line 416) | def test_cache_with_unhashable_arguments(self): method test_cache_with_string_arguments (line 427) | def test_cache_with_string_arguments(self): method test_cache_with_tuple_arguments (line 445) | def test_cache_with_tuple_arguments(self): method test_cache_with_boolean_arguments (line 463) | def test_cache_with_boolean_arguments(self): method test_cache_global_state (line 485) | def test_cache_global_state(self): FILE: backend/tests/test_callbacks.py function test_password_auth_callback (line 13) | async def test_password_auth_callback(test_config: config.ChainlitConfig): function test_header_auth_callback (line 33) | async def test_header_auth_callback(test_config: config.ChainlitConfig): function test_oauth_callback (line 64) | async def test_oauth_callback(test_config: config.ChainlitConfig): function test_on_message (line 104) | async def test_on_message(mock_chainlit_context, test_config: config.Cha... function test_on_stop (line 131) | async def test_on_stop(mock_chainlit_context, test_config: config.Chainl... function test_action_callback (line 152) | async def test_action_callback( function test_on_settings_update (line 178) | async def test_on_settings_update( function test_author_rename (line 202) | async def test_author_rename(test_config: config.ChainlitConfig): function test_on_app_startup (line 232) | async def test_on_app_startup(test_config: config.ChainlitConfig): function test_on_app_shutdown (line 277) | async def test_on_app_shutdown(test_config: config.ChainlitConfig): function test_on_chat_start (line 322) | async def test_on_chat_start(mock_chainlit_context, test_config: config.... function test_on_chat_resume (line 343) | async def test_on_chat_resume( function test_set_chat_profiles (line 379) | async def test_set_chat_profiles( function test_set_chat_profiles_language (line 408) | async def test_set_chat_profiles_language( function test_set_starters (line 444) | async def test_set_starters(mock_chainlit_context, test_config: config.C... function test_set_starters_language (line 474) | async def test_set_starters_language( function test_set_starter_categories (line 514) | async def test_set_starter_categories( function test_on_shared_thread_view_allow (line 566) | async def test_on_shared_thread_view_allow( function test_on_shared_thread_view_block_and_exception (line 607) | async def test_on_shared_thread_view_block_and_exception( function test_on_chat_end (line 662) | async def test_on_chat_end(mock_chainlit_context, test_config: config.Ch... function test_data_layer_config (line 683) | def test_data_layer_config( function test_chat_profile_with_config_overrides (line 702) | def test_chat_profile_with_config_overrides(): function test_set_chat_profiles_with_config_overrides (line 742) | async def test_set_chat_profiles_with_config_overrides( FILE: backend/tests/test_chat_context.py function mock_chainlit_context (line 10) | def mock_chainlit_context(session=None): class TestChatContext (line 24) | class TestChatContext: method setup_method (line 27) | def setup_method(self): method teardown_method (line 31) | def teardown_method(self): method test_get_without_session (line 35) | def test_get_without_session(self): method test_get_with_new_session (line 41) | def test_get_with_new_session(self): method test_get_returns_copy (line 53) | def test_get_returns_copy(self): method test_get_with_existing_messages (line 68) | def test_get_with_existing_messages(self): method test_add_without_session (line 84) | def test_add_without_session(self): method test_add_with_new_session (line 94) | def test_add_with_new_session(self): method test_add_message_to_existing_context (line 107) | def test_add_message_to_existing_context(self): method test_add_duplicate_message (line 124) | def test_add_duplicate_message(self): method test_remove_without_session (line 138) | def test_remove_without_session(self): method test_remove_with_nonexistent_context (line 147) | def test_remove_with_nonexistent_context(self): method test_remove_nonexistent_message (line 158) | def test_remove_nonexistent_message(self): method test_remove_existing_message (line 173) | def test_remove_existing_message(self): method test_clear_without_session (line 190) | def test_clear_without_session(self): method test_clear_with_nonexistent_context (line 200) | def test_clear_with_nonexistent_context(self): method test_clear_existing_context (line 213) | def test_clear_existing_context(self): method test_to_openai_with_assistant_message (line 228) | def test_to_openai_with_assistant_message(self): method test_to_openai_with_user_message (line 248) | def test_to_openai_with_user_message(self): method test_to_openai_with_system_message (line 265) | def test_to_openai_with_system_message(self): method test_to_openai_with_unknown_message_type (line 285) | def test_to_openai_with_unknown_message_type(self): method test_to_openai_with_multiple_messages (line 302) | def test_to_openai_with_multiple_messages(self): method test_to_openai_with_empty_context (line 329) | def test_to_openai_with_empty_context(self): method test_to_openai_without_session (line 341) | def test_to_openai_without_session(self): class TestChatContextEdgeCases (line 349) | class TestChatContextEdgeCases: method setup_method (line 352) | def setup_method(self): method teardown_method (line 356) | def teardown_method(self): method test_multiple_sessions_isolated (line 360) | def test_multiple_sessions_isolated(self): method test_add_then_remove_then_add_again (line 383) | def test_add_then_remove_then_add_again(self): method test_clear_then_add (line 403) | def test_clear_then_add(self): method test_to_openai_with_mixed_message_types (line 421) | def test_to_openai_with_mixed_message_types(self): method test_chat_context_singleton (line 444) | def test_chat_context_singleton(self): method test_add_returns_message (line 450) | def test_add_returns_message(self): FILE: backend/tests/test_chat_settings.py class TestChatSettings (line 16) | class TestChatSettings: method test_chat_settings_initialization (line 19) | async def test_chat_settings_initialization(self, mock_chainlit_context): method test_chat_settings_with_empty_inputs (line 31) | async def test_chat_settings_with_empty_inputs(self, mock_chainlit_con... method test_chat_settings_settings_method (line 38) | async def test_chat_settings_settings_method(self, mock_chainlit_conte... method test_chat_settings_with_tabs (line 52) | async def test_chat_settings_with_tabs(self, mock_chainlit_context): method test_chat_settings_settings_with_tabs (line 72) | async def test_chat_settings_settings_with_tabs(self, mock_chainlit_co... method test_chat_settings_send (line 93) | async def test_chat_settings_send(self, mock_chainlit_context): method test_chat_settings_send_with_tabs (line 115) | async def test_chat_settings_send_with_tabs(self, mock_chainlit_context): method test_chat_settings_with_all_widget_types (line 133) | async def test_chat_settings_with_all_widget_types(self, mock_chainlit... method test_chat_settings_with_nested_tabs (line 160) | async def test_chat_settings_with_nested_tabs(self, mock_chainlit_cont... method test_chat_settings_only_widgets_or_only_tabs (line 187) | async def test_chat_settings_only_widgets_or_only_tabs(self, mock_chai... method test_chat_settings_with_none_initial_values (line 216) | async def test_chat_settings_with_none_initial_values(self, mock_chain... class TestChatSettingsEdgeCases (line 234) | class TestChatSettingsEdgeCases: method test_chat_settings_empty_tabs (line 237) | async def test_chat_settings_empty_tabs(self, mock_chainlit_context): method test_chat_settings_duplicate_ids (line 246) | async def test_chat_settings_duplicate_ids(self, mock_chainlit_context): method test_chat_settings_send_returns_settings (line 258) | async def test_chat_settings_send_returns_settings(self, mock_chainlit... method test_chat_settings_to_dict_serialization (line 270) | async def test_chat_settings_to_dict_serialization(self, mock_chainlit... method test_chat_settings_with_complex_tab_structure (line 289) | async def test_chat_settings_with_complex_tab_structure( FILE: backend/tests/test_context.py function mock_emitter (line 17) | def mock_emitter(): function test_chainlit_context_init_with_websocket (line 21) | async def test_chainlit_context_init_with_websocket( function test_chainlit_context_init_with_http (line 29) | async def test_chainlit_context_init_with_http(mock_http_session): function test_init_ws_context (line 35) | async def test_init_ws_context(mock_websocket_session): function test_init_http_context (line 42) | async def test_init_http_context(): function test_get_context (line 49) | async def test_get_context(): FILE: backend/tests/test_element.py class TestElementBase (line 23) | class TestElementBase: method test_element_initialization_with_url (line 26) | async def test_element_initialization_with_url(self, mock_chainlit_con... method test_element_initialization_with_content (line 38) | async def test_element_initialization_with_content(self, mock_chainlit... method test_element_initialization_with_path (line 49) | async def test_element_initialization_with_path(self, mock_chainlit_co... method test_element_requires_url_path_or_content (line 59) | async def test_element_requires_url_path_or_content(self, mock_chainli... method test_element_to_dict (line 65) | async def test_element_to_dict(self, mock_chainlit_context): method test_element_send (line 83) | async def test_element_send(self, mock_chainlit_context): method test_element_remove (line 93) | async def test_element_remove(self, mock_chainlit_context): method test_element_display_options (line 104) | async def test_element_display_options(self, mock_chainlit_context): method test_element_from_dict_file (line 121) | async def test_element_from_dict_file(self, mock_chainlit_context): method test_element_from_dict_image (line 138) | async def test_element_from_dict_image(self, mock_chainlit_context): method test_element_infer_type_from_mime (line 155) | async def test_element_infer_type_from_mime(self): class TestImageElement (line 167) | class TestImageElement: method test_image_initialization (line 170) | async def test_image_initialization(self, mock_chainlit_context): method test_image_size_options (line 183) | async def test_image_size_options(self, mock_chainlit_context): class TestTextElement (line 198) | class TestTextElement: method test_text_initialization (line 201) | async def test_text_initialization(self, mock_chainlit_context): method test_text_without_language (line 211) | async def test_text_without_language(self, mock_chainlit_context): class TestPdfElement (line 220) | class TestPdfElement: method test_pdf_initialization (line 223) | async def test_pdf_initialization(self, mock_chainlit_context): method test_pdf_without_page (line 233) | async def test_pdf_without_page(self, mock_chainlit_context): class TestAudioElement (line 242) | class TestAudioElement: method test_audio_initialization (line 245) | async def test_audio_initialization(self, mock_chainlit_context): method test_audio_default_auto_play (line 258) | async def test_audio_default_auto_play(self, mock_chainlit_context): class TestVideoElement (line 267) | class TestVideoElement: method test_video_initialization (line 270) | async def test_video_initialization(self, mock_chainlit_context): method test_video_without_player_config (line 286) | async def test_video_without_player_config(self, mock_chainlit_context): class TestFileElement (line 295) | class TestFileElement: method test_file_initialization (line 298) | async def test_file_initialization(self, mock_chainlit_context): method test_file_with_content (line 306) | async def test_file_with_content(self, mock_chainlit_context): class TestTaskListElement (line 316) | class TestTaskListElement: method test_tasklist_initialization (line 319) | async def test_tasklist_initialization(self, mock_chainlit_context): method test_tasklist_add_task (line 330) | async def test_tasklist_add_task(self, mock_chainlit_context): method test_tasklist_preprocess_content (line 344) | async def test_tasklist_preprocess_content(self, mock_chainlit_context): class TestTaskClass (line 360) | class TestTaskClass: method test_task_initialization (line 363) | def test_task_initialization(self): method test_task_with_for_id (line 371) | def test_task_with_for_id(self): method test_task_status_enum (line 377) | def test_task_status_enum(self): class TestCustomElement (line 386) | class TestCustomElement: method test_custom_element_initialization (line 389) | async def test_custom_element_initialization(self, mock_chainlit_conte... method test_custom_element_content_serialization (line 401) | async def test_custom_element_content_serialization(self, mock_chainli... method test_custom_element_update (line 411) | async def test_custom_element_update(self, mock_chainlit_context): class TestElementEdgeCases (line 427) | class TestElementEdgeCases: method test_element_with_custom_id (line 430) | async def test_element_with_custom_id(self, mock_chainlit_context): method test_element_with_object_key (line 440) | async def test_element_with_object_key(self, mock_chainlit_context): method test_element_with_chainlit_key (line 451) | async def test_element_with_chainlit_key(self, mock_chainlit_context): method test_element_send_without_url_or_key_raises_error (line 462) | async def test_element_send_without_url_or_key_raises_error( method test_element_from_dict_with_missing_fields (line 475) | async def test_element_from_dict_with_missing_fields(self, mock_chainl... method test_element_id_uniqueness (line 489) | async def test_element_id_uniqueness(self, mock_chainlit_context): FILE: backend/tests/test_emitter.py function emitter (line 11) | def emitter(mock_websocket_session): function test_send_element (line 15) | async def test_send_element( function test_send_step (line 42) | async def test_send_step( function test_update_step (line 57) | async def test_update_step( function test_delete_step (line 72) | async def test_delete_step( function test_send_timeout (line 87) | async def test_send_timeout(emitter, mock_websocket_session): function test_clear (line 92) | async def test_clear(emitter, mock_websocket_session): function test_send_token (line 97) | async def test_send_token( function test_set_chat_settings (line 107) | async def test_set_chat_settings(emitter, mock_websocket_session): function test_update_token_count (line 113) | async def test_update_token_count(emitter, mock_websocket_session): function test_task_start (line 119) | async def test_task_start(emitter, mock_websocket_session): function test_task_end (line 124) | async def test_task_end(emitter, mock_websocket_session): function test_stream_start (line 129) | async def test_stream_start( function test_send_toast (line 142) | async def test_send_toast( function test_send_toast_with_type (line 152) | async def test_send_toast_with_type( function test_send_toast_invalid_type (line 162) | async def test_send_toast_invalid_type(emitter: ChainlitEmitter) -> None: FILE: backend/tests/test_input_widget.py class TestInputWidgetBase (line 17) | class TestInputWidgetBase: method test_input_widget_requires_id_and_label (line 20) | def test_input_widget_requires_id_and_label(self): class TestSwitchWidget (line 29) | class TestSwitchWidget: method test_switch_initialization (line 32) | def test_switch_initialization(self): method test_switch_with_initial_value (line 42) | def test_switch_with_initial_value(self): method test_switch_with_tooltip_and_description (line 48) | def test_switch_with_tooltip_and_description(self): method test_switch_disabled (line 60) | def test_switch_disabled(self): method test_switch_to_dict (line 66) | def test_switch_to_dict(self): class TestSliderWidget (line 88) | class TestSliderWidget: method test_slider_initialization (line 91) | def test_slider_initialization(self): method test_slider_with_custom_range (line 103) | def test_slider_with_custom_range(self): method test_slider_to_dict (line 119) | def test_slider_to_dict(self): class TestSelectWidget (line 143) | class TestSelectWidget: method test_select_with_values (line 146) | def test_select_with_values(self): method test_select_with_items (line 163) | def test_select_with_items(self): method test_select_with_initial_index (line 170) | def test_select_with_initial_index(self): method test_select_with_initial_value (line 181) | def test_select_with_initial_value(self): method test_select_requires_values_or_items (line 192) | def test_select_requires_values_or_items(self): method test_select_cannot_have_both_values_and_items (line 197) | def test_select_cannot_have_both_values_and_items(self): method test_select_initial_index_requires_values (line 207) | def test_select_initial_index_requires_values(self): method test_select_to_dict (line 220) | def test_select_to_dict(self): class TestTextInputWidget (line 241) | class TestTextInputWidget: method test_textinput_initialization (line 244) | def test_textinput_initialization(self): method test_textinput_with_initial_and_placeholder (line 255) | def test_textinput_with_initial_and_placeholder(self): method test_textinput_multiline (line 267) | def test_textinput_multiline(self): method test_textinput_to_dict (line 275) | def test_textinput_to_dict(self): class TestNumberInputWidget (line 297) | class TestNumberInputWidget: method test_numberinput_initialization (line 300) | def test_numberinput_initialization(self): method test_numberinput_with_initial (line 310) | def test_numberinput_with_initial(self): method test_numberinput_to_dict (line 319) | def test_numberinput_to_dict(self): class TestTagsWidget (line 339) | class TestTagsWidget: method test_tags_initialization (line 342) | def test_tags_initialization(self): method test_tags_with_initial_values (line 352) | def test_tags_with_initial_values(self): method test_tags_to_dict (line 364) | def test_tags_to_dict(self): class TestMultiSelectWidget (line 382) | class TestMultiSelectWidget: method test_multiselect_with_values (line 385) | def test_multiselect_with_values(self): method test_multiselect_with_items (line 402) | def test_multiselect_with_items(self): method test_multiselect_with_initial (line 411) | def test_multiselect_with_initial(self): method test_multiselect_requires_values_or_items (line 422) | def test_multiselect_requires_values_or_items(self): method test_multiselect_cannot_have_both_values_and_items (line 427) | def test_multiselect_cannot_have_both_values_and_items(self): method test_multiselect_to_dict (line 437) | def test_multiselect_to_dict(self): class TestCheckboxWidget (line 457) | class TestCheckboxWidget: method test_checkbox_initialization (line 460) | def test_checkbox_initialization(self): method test_checkbox_with_initial_value (line 469) | def test_checkbox_with_initial_value(self): method test_checkbox_to_dict (line 475) | def test_checkbox_to_dict(self): class TestRadioGroupWidget (line 495) | class TestRadioGroupWidget: method test_radiogroup_with_values (line 498) | def test_radiogroup_with_values(self): method test_radiogroup_with_items (line 509) | def test_radiogroup_with_items(self): method test_radiogroup_with_initial_index (line 516) | def test_radiogroup_with_initial_index(self): method test_radiogroup_with_initial_value (line 527) | def test_radiogroup_with_initial_value(self): method test_radiogroup_requires_values_or_items (line 538) | def test_radiogroup_requires_values_or_items(self): method test_radiogroup_cannot_have_both_values_and_items (line 543) | def test_radiogroup_cannot_have_both_values_and_items(self): method test_radiogroup_initial_index_requires_values (line 553) | def test_radiogroup_initial_index_requires_values(self): method test_radiogroup_to_dict (line 563) | def test_radiogroup_to_dict(self): class TestTabWidget (line 584) | class TestTabWidget: method test_tab_initialization (line 587) | def test_tab_initialization(self): method test_tab_with_inputs (line 595) | def test_tab_with_inputs(self): method test_tab_to_dict (line 605) | def test_tab_to_dict(self): method test_tab_to_dict_empty_inputs (line 621) | def test_tab_to_dict_empty_inputs(self): class TestInputWidgetEdgeCases (line 632) | class TestInputWidgetEdgeCases: method test_all_widgets_have_consistent_common_fields (line 635) | def test_all_widgets_have_consistent_common_fields(self): method test_select_with_complex_items (line 691) | def test_select_with_complex_items(self): method test_multiselect_initial_with_multiple_values (line 706) | def test_multiselect_initial_with_multiple_values(self): method test_slider_with_negative_range (line 720) | def test_slider_with_negative_range(self): method test_textinput_empty_initial_value (line 728) | def test_textinput_empty_initial_value(self): FILE: backend/tests/test_markdown.py class TestInitMarkdown (line 10) | class TestInitMarkdown: method test_init_markdown_creates_file (line 13) | def test_init_markdown_creates_file(self): method test_init_markdown_does_not_overwrite_existing (line 26) | def test_init_markdown_does_not_overwrite_existing(self): method test_init_markdown_with_nonexistent_directory (line 44) | def test_init_markdown_with_nonexistent_directory(self): method test_init_markdown_creates_utf8_file (line 53) | def test_init_markdown_creates_utf8_file(self): class TestGetMarkdownStr (line 69) | class TestGetMarkdownStr: method test_get_markdown_str_returns_default (line 72) | def test_get_markdown_str_returns_default(self): method test_get_markdown_str_returns_translated (line 84) | def test_get_markdown_str_returns_translated(self): method test_get_markdown_str_falls_back_to_default (line 102) | def test_get_markdown_str_falls_back_to_default(self): method test_get_markdown_str_returns_none_when_no_file (line 117) | def test_get_markdown_str_returns_none_when_no_file(self): method test_get_markdown_str_with_utf8_content (line 123) | def test_get_markdown_str_with_utf8_content(self): method test_get_markdown_str_prevents_path_traversal (line 135) | def test_get_markdown_str_prevents_path_traversal(self): method test_get_markdown_str_with_multiple_languages (line 150) | def test_get_markdown_str_with_multiple_languages(self): method test_get_markdown_str_with_empty_file (line 177) | def test_get_markdown_str_with_empty_file(self): method test_get_markdown_str_with_large_file (line 187) | def test_get_markdown_str_with_large_file(self): class TestDefaultMarkdownStr (line 200) | class TestDefaultMarkdownStr: method test_default_markdown_str_is_string (line 203) | def test_default_markdown_str_is_string(self): method test_default_markdown_str_not_empty (line 207) | def test_default_markdown_str_not_empty(self): method test_default_markdown_str_contains_welcome (line 211) | def test_default_markdown_str_contains_welcome(self): method test_default_markdown_str_contains_links (line 215) | def test_default_markdown_str_contains_links(self): method test_default_markdown_str_is_valid_markdown (line 221) | def test_default_markdown_str_is_valid_markdown(self): class TestMarkdownEdgeCases (line 229) | class TestMarkdownEdgeCases: method test_init_markdown_with_special_characters_in_path (line 232) | def test_init_markdown_with_special_characters_in_path(self): method test_get_markdown_str_with_symlink (line 243) | def test_get_markdown_str_with_symlink(self): method test_get_markdown_str_with_relative_path (line 267) | def test_get_markdown_str_with_relative_path(self): method test_get_markdown_str_language_case_sensitivity (line 283) | def test_get_markdown_str_language_case_sensitivity(self): method test_init_markdown_concurrent_calls (line 308) | def test_init_markdown_concurrent_calls(self): FILE: backend/tests/test_mcp.py class TestStdioMcpConnection (line 15) | class TestStdioMcpConnection: method test_stdio_connection_initialization (line 18) | def test_stdio_connection_initialization(self): method test_stdio_connection_with_empty_args (line 29) | def test_stdio_connection_with_empty_args(self): method test_stdio_connection_requires_name (line 36) | def test_stdio_connection_requires_name(self): method test_stdio_connection_requires_command (line 41) | def test_stdio_connection_requires_command(self): method test_stdio_connection_requires_args (line 46) | def test_stdio_connection_requires_args(self): method test_stdio_connection_client_type_is_literal (line 51) | def test_stdio_connection_client_type_is_literal(self): method test_stdio_connection_serialization (line 57) | def test_stdio_connection_serialization(self): class TestSseMcpConnection (line 71) | class TestSseMcpConnection: method test_sse_connection_initialization (line 74) | def test_sse_connection_initialization(self): method test_sse_connection_with_headers (line 83) | def test_sse_connection_with_headers(self): method test_sse_connection_requires_name (line 92) | def test_sse_connection_requires_name(self): method test_sse_connection_requires_url (line 97) | def test_sse_connection_requires_url(self): method test_sse_connection_client_type_is_literal (line 102) | def test_sse_connection_client_type_is_literal(self): method test_sse_connection_serialization (line 108) | def test_sse_connection_serialization(self): class TestHttpMcpConnection (line 123) | class TestHttpMcpConnection: method test_http_connection_initialization (line 126) | def test_http_connection_initialization(self): method test_http_connection_with_headers (line 137) | def test_http_connection_with_headers(self): method test_http_connection_requires_name (line 149) | def test_http_connection_requires_name(self): method test_http_connection_requires_url (line 154) | def test_http_connection_requires_url(self): method test_http_connection_client_type_is_literal (line 159) | def test_http_connection_client_type_is_literal(self): method test_http_connection_serialization (line 167) | def test_http_connection_serialization(self): class TestValidateMcpCommand (line 182) | class TestValidateMcpCommand: method test_validate_simple_command (line 185) | def test_validate_simple_command(self): method test_validate_command_with_path (line 197) | def test_validate_command_with_path(self): method test_validate_command_with_windows_path (line 211) | def test_validate_command_with_windows_path(self): method test_validate_command_with_env_vars (line 226) | def test_validate_command_with_env_vars(self): method test_validate_command_with_env_var_with_spaces (line 240) | def test_validate_command_with_env_var_with_spaces(self): method test_validate_command_with_quoted_args (line 254) | def test_validate_command_with_quoted_args(self): method test_validate_command_with_multiple_args (line 268) | def test_validate_command_with_multiple_args(self): method test_validate_command_not_in_allowed_list (line 282) | def test_validate_command_not_in_allowed_list(self): method test_validate_empty_command (line 291) | def test_validate_empty_command(self): method test_validate_command_with_invalid_syntax (line 300) | def test_validate_command_with_invalid_syntax(self): method test_validate_command_with_none_allowed_executables (line 309) | def test_validate_command_with_none_allowed_executables(self): method test_validate_command_with_invalid_env_var_format (line 321) | def test_validate_command_with_invalid_env_var_format(self): method test_validate_command_with_complex_env_vars (line 330) | def test_validate_command_with_complex_env_vars(self): method test_validate_command_with_equals_in_arg (line 347) | def test_validate_command_with_equals_in_arg(self): method test_validate_command_preserves_arg_order (line 361) | def test_validate_command_preserves_arg_order(self): class TestMcpConnectionEdgeCases (line 374) | class TestMcpConnectionEdgeCases: method test_stdio_connection_with_complex_args (line 377) | def test_stdio_connection_with_complex_args(self): method test_sse_connection_with_multiple_headers (line 395) | def test_sse_connection_with_multiple_headers(self): method test_http_connection_with_localhost_url (line 411) | def test_http_connection_with_localhost_url(self): method test_connection_names_can_be_descriptive (line 419) | def test_connection_names_can_be_descriptive(self): method test_validate_command_with_special_characters_in_path (line 435) | def test_validate_command_with_special_characters_in_path(self): FILE: backend/tests/test_message.py function mock_chainlit_context (line 22) | def mock_chainlit_context(session=None): class TestMessageBase (line 38) | class TestMessageBase: method test_post_init_sets_thread_id (line 41) | def test_post_init_sets_thread_id(self): method test_post_init_generates_id_if_not_provided (line 47) | def test_post_init_generates_id_if_not_provided(self): method test_post_init_uses_provided_id (line 54) | def test_post_init_uses_provided_id(self): method test_from_dict_creates_message (line 60) | def test_from_dict_creates_message(self): method test_from_dict_with_minimal_data (line 87) | def test_from_dict_with_minimal_data(self): method test_to_dict_returns_step_dict (line 105) | def test_to_dict_returns_step_dict(self): method test_update_stops_streaming (line 139) | async def test_update_stops_streaming(self): method test_update_with_data_layer (line 155) | async def test_update_with_data_layer(self): method test_remove_from_chat_context (line 172) | async def test_remove_from_chat_context(self): class TestMessage (line 186) | class TestMessage: method test_message_with_string_content (line 189) | def test_message_with_string_content(self): method test_message_with_dict_content (line 197) | def test_message_with_dict_content(self): method test_message_with_non_serializable_dict (line 207) | def test_message_with_non_serializable_dict(self): method test_message_with_non_string_content (line 220) | def test_message_with_non_string_content(self): method test_message_with_custom_author (line 228) | def test_message_with_custom_author(self): method test_message_with_default_author (line 235) | def test_message_with_default_author(self): method test_message_with_actions (line 244) | def test_message_with_actions(self): method test_message_with_elements (line 255) | def test_message_with_elements(self): method test_message_send (line 267) | async def test_message_send(self): method test_message_send_with_author_rename (line 286) | async def test_message_send_with_author_rename(self): method test_message_send_with_actions_and_elements (line 304) | async def test_message_send_with_actions_and_elements(self): method test_message_update_with_actions (line 322) | async def test_message_update_with_actions(self): method test_message_remove_actions (line 341) | async def test_message_remove_actions(self): method test_stream_token_starts_streaming (line 354) | async def test_stream_token_starts_streaming(self): method test_stream_token_appends_content (line 366) | async def test_stream_token_appends_content(self): method test_stream_token_with_sequence (line 380) | async def test_stream_token_with_sequence(self): method test_stream_token_ignores_empty_token (line 394) | async def test_stream_token_ignores_empty_token(self): class TestErrorMessage (line 405) | class TestErrorMessage: method test_error_message_initialization (line 408) | def test_error_message_initialization(self): method test_error_message_with_custom_author (line 419) | def test_error_message_with_custom_author(self): method test_error_message_with_fail_on_persist (line 426) | def test_error_message_with_fail_on_persist(self): method test_error_message_send (line 434) | async def test_error_message_send(self): class TestAskUserMessage (line 450) | class TestAskUserMessage: method test_ask_user_message_initialization (line 453) | def test_ask_user_message_initialization(self): method test_ask_user_message_with_custom_timeout (line 463) | def test_ask_user_message_with_custom_timeout(self): method test_ask_user_message_send (line 471) | async def test_ask_user_message_send(self): class TestAskFileMessage (line 488) | class TestAskFileMessage: method test_ask_file_message_initialization (line 491) | def test_ask_file_message_initialization(self): method test_ask_file_message_with_custom_limits (line 505) | def test_ask_file_message_with_custom_limits(self): method test_ask_file_message_send_with_response (line 516) | async def test_ask_file_message_send_with_response(self): method test_ask_file_message_send_with_no_response (line 544) | async def test_ask_file_message_send_with_no_response(self): class TestAskActionMessage (line 559) | class TestAskActionMessage: method test_ask_action_message_initialization (line 562) | def test_ask_action_message_initialization(self): method test_ask_action_message_send_with_response (line 577) | async def test_ask_action_message_send_with_response(self): method test_ask_action_message_send_timeout (line 600) | async def test_ask_action_message_send_timeout(self): class TestAskElementMessage (line 619) | class TestAskElementMessage: method test_ask_element_message_initialization (line 622) | def test_ask_element_message_initialization(self): method test_ask_element_message_send_submitted (line 634) | async def test_ask_element_message_send_submitted(self): method test_ask_element_message_send_cancelled (line 657) | async def test_ask_element_message_send_cancelled(self): method test_ask_element_message_send_timeout (line 676) | async def test_ask_element_message_send_timeout(self): class TestMessageEdgeCases (line 695) | class TestMessageEdgeCases: method test_message_with_none_content (line 698) | def test_message_with_none_content(self): method test_message_language_override (line 704) | def test_message_language_override(self): method test_message_send_with_none_content (line 712) | async def test_message_send_with_none_content(self): method test_ask_message_remove_clears_ask (line 728) | async def test_ask_message_remove_clears_ask(self): method test_message_metadata_and_tags (line 739) | def test_message_metadata_and_tags(self): method test_message_to_dict_with_none_metadata (line 749) | def test_message_to_dict_with_none_metadata(self): FILE: backend/tests/test_modes.py function mock_modes (line 13) | def mock_modes(): class TestModeOption (line 51) | class TestModeOption: method test_mode_option_required_fields (line 54) | def test_mode_option_required_fields(self): method test_mode_option_all_fields (line 64) | def test_mode_option_all_fields(self): method test_mode_option_to_dict (line 80) | def test_mode_option_to_dict(self): class TestMode (line 100) | class TestMode: method test_mode_creation (line 103) | def test_mode_creation(self, mock_modes): method test_mode_to_dict (line 111) | def test_mode_to_dict(self, mock_modes): method test_mode_default_option (line 121) | def test_mode_default_option(self, mock_modes): method test_mode_fallback_to_first (line 131) | def test_mode_fallback_to_first(self, mock_modes): class TestMessageWithModes (line 152) | class TestMessageWithModes: method test_message_with_modes (line 155) | async def test_message_with_modes(self, mock_chainlit_context): method test_message_to_dict_includes_modes (line 164) | async def test_message_to_dict_includes_modes(self, mock_chainlit_cont... method test_message_from_dict_with_modes (line 174) | async def test_message_from_dict_with_modes(self, mock_chainlit_context): method test_message_without_modes (line 190) | async def test_message_without_modes(self, mock_chainlit_context): method test_message_send_with_modes (line 199) | async def test_message_send_with_modes(self, mock_chainlit_context): class TestEmitterSetModes (line 223) | class TestEmitterSetModes: method test_set_modes (line 226) | async def test_set_modes( method test_set_modes_empty_list (line 237) | async def test_set_modes_empty_list( method test_set_modes_single_mode (line 247) | async def test_set_modes_single_mode( class TestModeExports (line 268) | class TestModeExports: method test_mode_exported_from_chainlit (line 271) | def test_mode_exported_from_chainlit(self): method test_mode_option_exported_from_chainlit (line 276) | def test_mode_option_exported_from_chainlit(self): FILE: backend/tests/test_oauth_providers.py class TestOAuthProviderBase (line 28) | class TestOAuthProviderBase: method test_oauth_provider_has_required_methods (line 31) | def test_oauth_provider_has_required_methods(self): method test_oauth_provider_is_configured_returns_false_when_env_missing (line 43) | def test_oauth_provider_is_configured_returns_false_when_env_missing(s... method test_oauth_provider_is_configured_returns_true_when_env_present (line 50) | def test_oauth_provider_is_configured_returns_true_when_env_present(se... method test_oauth_provider_get_env_prefix (line 58) | def test_oauth_provider_get_env_prefix(self): method test_oauth_provider_get_prompt_returns_provider_specific (line 65) | def test_oauth_provider_get_prompt_returns_provider_specific(self): method test_oauth_provider_get_prompt_returns_global (line 74) | def test_oauth_provider_get_prompt_returns_global(self): method test_oauth_provider_get_prompt_returns_default (line 83) | def test_oauth_provider_get_prompt_returns_default(self): method test_oauth_provider_abstract_methods_raise_not_implemented (line 92) | async def test_oauth_provider_abstract_methods_raise_not_implemented(s... class TestGithubOAuthProvider (line 106) | class TestGithubOAuthProvider: method test_github_provider_initialization (line 109) | def test_github_provider_initialization(self): method test_github_provider_with_custom_urls (line 126) | def test_github_provider_with_custom_urls(self): method test_github_get_raw_token_response_success (line 154) | async def test_github_get_raw_token_response_success(self): method test_github_get_token_success (line 182) | async def test_github_get_token_success(self): method test_github_get_token_missing_access_token (line 207) | async def test_github_get_token_missing_access_token(self): method test_github_get_user_info_success (line 234) | async def test_github_get_user_info_success(self): class TestGoogleOAuthProvider (line 275) | class TestGoogleOAuthProvider: method test_google_provider_initialization (line 278) | def test_google_provider_initialization(self): method test_google_get_token_success (line 299) | async def test_google_get_token_success(self): method test_google_get_user_info_success (line 329) | async def test_google_get_user_info_success(self): class TestAzureADOAuthProvider (line 362) | class TestAzureADOAuthProvider: method test_azure_ad_provider_initialization (line 365) | def test_azure_ad_provider_initialization(self): method test_azure_ad_single_tenant_urls (line 383) | def test_azure_ad_single_tenant_urls(self): method test_azure_ad_get_token_with_refresh_token (line 408) | async def test_azure_ad_get_token_with_refresh_token(self): method test_azure_ad_get_user_info_with_photo (line 440) | async def test_azure_ad_get_user_info_with_photo(self): class TestOktaOAuthProvider (line 480) | class TestOktaOAuthProvider: method test_okta_provider_initialization (line 483) | def test_okta_provider_initialization(self): method test_okta_authorization_server_path_default (line 506) | def test_okta_authorization_server_path_default(self): method test_okta_authorization_server_path_custom (line 520) | def test_okta_authorization_server_path_custom(self): method test_okta_authorization_server_path_false (line 535) | def test_okta_authorization_server_path_false(self): class TestAuth0OAuthProvider (line 551) | class TestAuth0OAuthProvider: method test_auth0_provider_initialization (line 554) | def test_auth0_provider_initialization(self): method test_auth0_with_original_domain (line 570) | def test_auth0_with_original_domain(self): class TestGenericOAuthProvider (line 587) | class TestGenericOAuthProvider: method test_generic_provider_initialization (line 590) | def test_generic_provider_initialization(self): method test_generic_provider_custom_name (line 611) | def test_generic_provider_custom_name(self): method test_generic_provider_custom_user_identifier (line 637) | def test_generic_provider_custom_user_identifier(self): class TestAzureADHybridOAuthProvider (line 656) | class TestAzureADHybridOAuthProvider: method test_azure_ad_hybrid_provider_initialization (line 659) | def test_azure_ad_hybrid_provider_initialization(self): method test_azure_ad_hybrid_get_token_success (line 681) | async def test_azure_ad_hybrid_get_token_success(self): method test_azure_ad_hybrid_get_user_info_success (line 713) | async def test_azure_ad_hybrid_get_user_info_success(self): class TestDescopeOAuthProvider (line 752) | class TestDescopeOAuthProvider: method test_descope_provider_initialization (line 755) | def test_descope_provider_initialization(self): method test_descope_get_token_success (line 772) | async def test_descope_get_token_success(self): method test_descope_get_user_info_success (line 802) | async def test_descope_get_user_info_success(self): class TestAWSCognitoOAuthProvider (line 833) | class TestAWSCognitoOAuthProvider: method test_cognito_provider_initialization (line 836) | def test_cognito_provider_initialization(self): method test_cognito_provider_custom_scopes (line 853) | def test_cognito_provider_custom_scopes(self): method test_cognito_get_token_success (line 870) | async def test_cognito_get_token_success(self): method test_cognito_get_user_info_success (line 901) | async def test_cognito_get_user_info_success(self): class TestGitlabOAuthProvider (line 934) | class TestGitlabOAuthProvider: method test_gitlab_provider_initialization (line 937) | def test_gitlab_provider_initialization(self): method test_gitlab_provider_strips_trailing_slash (line 955) | def test_gitlab_provider_strips_trailing_slash(self): method test_gitlab_get_token_success (line 970) | async def test_gitlab_get_token_success(self): method test_gitlab_get_user_info_success (line 1001) | async def test_gitlab_get_user_info_success(self): class TestKeycloakOAuthProvider (line 1034) | class TestKeycloakOAuthProvider: method test_keycloak_provider_initialization (line 1037) | def test_keycloak_provider_initialization(self): method test_keycloak_provider_custom_name (line 1056) | def test_keycloak_provider_custom_name(self): method test_keycloak_get_token_success (line 1080) | async def test_keycloak_get_token_success(self): method test_keycloak_get_user_info_success (line 1113) | async def test_keycloak_get_user_info_success(self): class TestHelperFunctions (line 1146) | class TestHelperFunctions: method test_get_oauth_provider_returns_correct_provider (line 1149) | def test_get_oauth_provider_returns_correct_provider(self): method test_get_oauth_provider_returns_none_for_unknown (line 1156) | def test_get_oauth_provider_returns_none_for_unknown(self): method test_get_configured_oauth_providers_empty_when_none_configured (line 1162) | def test_get_configured_oauth_providers_empty_when_none_configured(self): method test_get_configured_oauth_providers_returns_configured (line 1170) | def test_get_configured_oauth_providers_returns_configured(self): class TestOAuthProviderEdgeCases (line 1187) | class TestOAuthProviderEdgeCases: method test_provider_handles_http_error (line 1191) | async def test_provider_handles_http_error(self): method test_provider_strips_trailing_slash_from_domain (line 1215) | def test_provider_strips_trailing_slash_from_domain(self): method test_provider_with_prompt_parameter (line 1229) | def test_provider_with_prompt_parameter(self): FILE: backend/tests/test_server.py function test_client (line 23) | def test_client(): function mock_load_translation (line 28) | def mock_load_translation(test_config: ChainlitConfig, monkeypatch: pyte... function test_project_translations_default_language (line 35) | def test_project_translations_default_language( function test_project_translations_specific_language (line 46) | def test_project_translations_specific_language( function test_project_translations_invalid_language (line 58) | def test_project_translations_invalid_language( function test_project_translations_bcp47_language (line 72) | def test_project_translations_bcp47_language( function mock_get_current_user (line 85) | def mock_get_current_user(): function test_project_settings (line 97) | async def test_project_settings(test_client: TestClient, mock_get_curren... function test_project_settings_path_traversal (line 119) | def test_project_settings_path_traversal( function test_get_avatar_default (line 162) | def test_get_avatar_default(test_client: TestClient, monkeypatch: pytest... function test_get_avatar_custom (line 169) | def test_get_avatar_custom(test_client: TestClient, monkeypatch: pytest.... function test_get_avatar_with_spaces (line 187) | def test_get_avatar_with_spaces( function test_get_avatar_non_existent_favicon (line 205) | def test_get_avatar_non_existent_favicon( function test_avatar_path_traversal (line 219) | def test_avatar_path_traversal( function mock_session_get_by_id_patched (line 242) | def mock_session_get_by_id_patched(mock_session: Mock, monkeypatch: pyte... function test_get_file_success (line 254) | def test_get_file_success( function test_get_file_not_existent_file (line 295) | def test_get_file_not_existent_file( function test_get_file_non_existing_session (line 313) | def test_get_file_non_existing_session( function test_upload_file_success (line 333) | def test_upload_file_success( function test_file_access_by_different_user (line 379) | def test_file_access_by_different_user( function test_upload_file_missing_file (line 438) | def test_upload_file_missing_file( function test_upload_file_invalid_session (line 455) | def test_upload_file_invalid_session( function test_upload_file_unauthorized (line 477) | def test_upload_file_unauthorized( function test_upload_file_disabled (line 503) | def test_upload_file_disabled( function test_upload_file_mime_type_check (line 571) | def test_upload_file_mime_type_check( function test_upload_file_size_check (line 624) | def test_upload_file_size_check( function test_ask_file_with_spontaneous_upload_disabled (line 688) | def test_ask_file_with_spontaneous_upload_disabled( function test_project_translations_file_path_traversal (line 750) | def test_project_translations_file_path_traversal( function test_project_settings_with_chat_profile_config_overrides (line 770) | def test_project_settings_with_chat_profile_config_overrides( function test_project_settings_config_overrides_serialization (line 880) | def test_project_settings_config_overrides_serialization( function test_project_settings_config_overrides_language (line 925) | def test_project_settings_config_overrides_language( function test_project_settings_thread_sharing_flag (line 1006) | def test_project_settings_thread_sharing_flag( function test_share_thread_endpoint_sets_flags (line 1044) | def test_share_thread_endpoint_sets_flags( function test_health_check (line 1108) | def test_health_check(test_client: TestClient): FILE: backend/tests/test_session.py class TestJSONEncoderIgnoreNonSerializable (line 18) | class TestJSONEncoderIgnoreNonSerializable: method test_encoder_handles_serializable_objects (line 21) | def test_encoder_handles_serializable_objects(self): method test_encoder_ignores_non_serializable_objects (line 32) | def test_encoder_ignores_non_serializable_objects(self): method test_encoder_with_nested_non_serializable (line 45) | def test_encoder_with_nested_non_serializable(self): class TestCleanMetadata (line 66) | class TestCleanMetadata: method test_clean_metadata_with_normal_data (line 69) | def test_clean_metadata_with_normal_data(self): method test_clean_metadata_removes_non_serializable (line 75) | def test_clean_metadata_removes_non_serializable(self): method test_clean_metadata_redacts_large_data (line 87) | def test_clean_metadata_redacts_large_data(self): method test_clean_metadata_with_custom_max_size (line 96) | def test_clean_metadata_with_custom_max_size(self): method test_clean_metadata_preserves_unicode (line 105) | def test_clean_metadata_preserves_unicode(self): class TestBaseSession (line 115) | class TestBaseSession: method test_base_session_initialization (line 118) | def test_base_session_initialization(self): method test_base_session_with_thread_id (line 137) | def test_base_session_with_thread_id(self): method test_base_session_with_user_env (line 152) | def test_base_session_with_user_env(self): method test_base_session_with_chat_profile (line 166) | def test_base_session_with_chat_profile(self): method test_base_session_files_dir (line 180) | def test_base_session_files_dir(self): method test_base_session_persist_file_with_content (line 195) | async def test_base_session_persist_file_with_content(self): method test_base_session_persist_file_with_string_content (line 221) | async def test_base_session_persist_file_with_string_content(self): method test_base_session_persist_file_without_path_or_content (line 246) | async def test_base_session_persist_file_without_path_or_content(self): method test_base_session_to_persistable (line 260) | def test_base_session_to_persistable(self): method test_base_session_to_persistable_without_persist_user_env (line 291) | def test_base_session_to_persistable_without_persist_user_env(self): class TestHTTPSession (line 319) | class TestHTTPSession: method test_http_session_initialization (line 322) | def test_http_session_initialization(self): method test_http_session_delete (line 338) | async def test_http_session_delete(self): class TestWebsocketSession (line 359) | class TestWebsocketSession: method test_websocket_session_initialization (line 362) | def test_websocket_session_initialization(self): method test_websocket_session_language_detection (line 383) | def test_websocket_session_language_detection(self): method test_websocket_session_default_language (line 397) | def test_websocket_session_default_language(self): method test_websocket_session_restore (line 411) | def test_websocket_session_restore(self): method test_websocket_session_delete (line 434) | async def test_websocket_session_delete(self): method test_websocket_session_get (line 461) | def test_websocket_session_get(self): method test_websocket_session_get_by_id (line 475) | def test_websocket_session_get_by_id(self): method test_websocket_session_require_success (line 489) | def test_websocket_session_require_success(self): method test_websocket_session_require_failure (line 503) | def test_websocket_session_require_failure(self): method test_websocket_session_flush_method_queue (line 509) | async def test_websocket_session_flush_method_queue(self): class TestSessionEdgeCases (line 539) | class TestSessionEdgeCases: method test_base_session_with_all_client_types (line 542) | def test_base_session_with_all_client_types(self): method test_persist_file_with_mime_extension (line 558) | async def test_persist_file_with_mime_extension(self): method test_clean_metadata_with_empty_dict (line 582) | def test_clean_metadata_with_empty_dict(self): method test_websocket_session_with_chat_profile (line 587) | def test_websocket_session_with_chat_profile(self): method test_websocket_session_delete_with_mcp_sessions (line 602) | async def test_websocket_session_delete_with_mcp_sessions(self): FILE: backend/tests/test_sidebar.py class TestElementSidebar (line 8) | class TestElementSidebar: method test_set_title (line 11) | async def test_set_title(self, mock_chainlit_context): method test_set_title_with_empty_string (line 20) | async def test_set_title_with_empty_string(self, mock_chainlit_context): method test_set_title_with_special_characters (line 27) | async def test_set_title_with_special_characters(self, mock_chainlit_c... method test_set_elements_with_single_element (line 35) | async def test_set_elements_with_single_element(self, mock_chainlit_co... method test_set_elements_with_multiple_elements (line 54) | async def test_set_elements_with_multiple_elements(self, mock_chainlit... method test_set_elements_with_empty_list (line 74) | async def test_set_elements_with_empty_list(self, mock_chainlit_context): method test_set_elements_with_key (line 89) | async def test_set_elements_with_key(self, mock_chainlit_context): method test_set_elements_with_for_id (line 102) | async def test_set_elements_with_for_id(self, mock_chainlit_context): method test_set_elements_without_for_id (line 119) | async def test_set_elements_without_for_id(self, mock_chainlit_context): method test_set_elements_persist_false (line 132) | async def test_set_elements_persist_false(self, mock_chainlit_context): method test_set_elements_serialization (line 149) | async def test_set_elements_serialization(self, mock_chainlit_context): class TestElementSidebarEdgeCases (line 172) | class TestElementSidebarEdgeCases: method test_set_title_multiple_times (line 175) | async def test_set_title_multiple_times(self, mock_chainlit_context): method test_set_elements_multiple_times (line 188) | async def test_set_elements_multiple_times(self, mock_chainlit_context): method test_set_elements_with_same_key_twice (line 203) | async def test_set_elements_with_same_key_twice(self, mock_chainlit_co... method test_set_elements_with_different_keys (line 216) | async def test_set_elements_with_different_keys(self, mock_chainlit_co... method test_set_elements_with_large_number_of_elements (line 232) | async def test_set_elements_with_large_number_of_elements( method test_set_title_and_set_elements_together (line 252) | async def test_set_title_and_set_elements_together(self, mock_chainlit... method test_set_elements_with_mixed_element_types (line 272) | async def test_set_elements_with_mixed_element_types(self, mock_chainl... method test_set_title_with_long_string (line 296) | async def test_set_title_with_long_string(self, mock_chainlit_context): FILE: backend/tests/test_slack_socket_mode.py function test_start_socket_mode_starts_handler (line 9) | async def test_start_socket_mode_starts_handler(monkeypatch): function test_slack_http_route_registered (line 38) | def test_slack_http_route_registered(monkeypatch): FILE: backend/tests/test_socket.py class TestGetTokenFromCookie (line 19) | class TestGetTokenFromCookie: method test_get_token_from_cookie_with_valid_cookie (line 22) | def test_get_token_from_cookie_with_valid_cookie(self): method test_get_token_from_cookie_without_cookie (line 33) | def test_get_token_from_cookie_without_cookie(self): method test_get_token_from_cookie_with_empty_cookie (line 39) | def test_get_token_from_cookie_with_empty_cookie(self): class TestGetToken (line 50) | class TestGetToken: method test_get_token_calls_get_token_from_cookie (line 53) | def test_get_token_calls_get_token_from_cookie(self): class TestAuthenticateConnection (line 65) | class TestAuthenticateConnection: method test_authenticate_connection_with_valid_token (line 69) | async def test_authenticate_connection_with_valid_token(self): method test_authenticate_connection_without_token (line 87) | async def test_authenticate_connection_without_token(self): method test_authenticate_connection_with_invalid_token (line 99) | async def test_authenticate_connection_with_invalid_token(self): class TestRestoreExistingSession (line 113) | class TestRestoreExistingSession: method test_restore_existing_session_success (line 116) | def test_restore_existing_session_success(self): method test_restore_existing_session_not_found (line 136) | def test_restore_existing_session_not_found(self): class TestPersistUserSession (line 148) | class TestPersistUserSession: method test_persist_user_session_with_data_layer (line 152) | async def test_persist_user_session_with_data_layer(self): method test_persist_user_session_without_data_layer (line 167) | async def test_persist_user_session_without_data_layer(self): class TestResumeThread (line 176) | class TestResumeThread: method test_resume_thread_without_data_layer (line 180) | async def test_resume_thread_without_data_layer(self): method test_resume_thread_without_user (line 194) | async def test_resume_thread_without_user(self): method test_resume_thread_without_thread_id (line 205) | async def test_resume_thread_without_thread_id(self): method test_resume_thread_thread_not_found (line 216) | async def test_resume_thread_thread_not_found(self): method test_resume_thread_user_not_author (line 235) | async def test_resume_thread_user_not_author(self): method test_resume_thread_success (line 254) | async def test_resume_thread_success(self): method test_resume_thread_with_string_metadata (line 288) | async def test_resume_thread_with_string_metadata(self): class TestLoadUserEnv (line 320) | class TestLoadUserEnv: method test_load_user_env_with_valid_json (line 323) | def test_load_user_env_with_valid_json(self): method test_load_user_env_with_required_keys (line 334) | def test_load_user_env_with_required_keys(self): method test_load_user_env_missing_required_key (line 345) | def test_load_user_env_missing_required_key(self): method test_load_user_env_none_with_required_keys (line 357) | def test_load_user_env_none_with_required_keys(self): method test_load_user_env_none_without_required_keys (line 368) | def test_load_user_env_none_without_required_keys(self): class TestCleanSession (line 379) | class TestCleanSession: method test_clean_session_with_existing_session (line 383) | async def test_clean_session_with_existing_session(self): method test_clean_session_without_session (line 397) | async def test_clean_session_without_session(self): class TestSocketEdgeCases (line 406) | class TestSocketEdgeCases: method test_restore_existing_session_with_none_session_id (line 409) | def test_restore_existing_session_with_none_session_id(self): method test_persist_user_session_with_empty_metadata (line 419) | async def test_persist_user_session_with_empty_metadata(self): method test_load_user_env_with_empty_json (line 432) | def test_load_user_env_with_empty_json(self): method test_resume_thread_with_empty_metadata (line 444) | async def test_resume_thread_with_empty_metadata(self): method test_authenticate_connection_with_exception (line 472) | async def test_authenticate_connection_with_exception(self): FILE: backend/tests/test_step.py class TestStepClass (line 19) | class TestStepClass: method test_step_initialization_with_defaults (line 22) | async def test_step_initialization_with_defaults(self, mock_chainlit_c... method test_step_initialization_with_all_fields (line 48) | async def test_step_initialization_with_all_fields(self, mock_chainlit... method test_step_input_setter_with_string (line 78) | async def test_step_input_setter_with_string(self, mock_chainlit_conte... method test_step_input_setter_with_dict (line 86) | async def test_step_input_setter_with_dict(self, mock_chainlit_context): method test_step_output_setter_with_string (line 98) | async def test_step_output_setter_with_string(self, mock_chainlit_cont... method test_step_output_setter_with_dict (line 106) | async def test_step_output_setter_with_dict(self, mock_chainlit_context): method test_step_clean_content_with_bytes (line 118) | async def test_step_clean_content_with_bytes(self, mock_chainlit_conte... method test_step_to_dict (line 132) | async def test_step_to_dict(self, mock_chainlit_context): method test_step_send (line 161) | async def test_step_send(self, mock_chainlit_context): method test_step_send_with_elements (line 172) | async def test_step_send_with_elements(self, mock_chainlit_context): method test_step_send_already_persisted (line 184) | async def test_step_send_already_persisted(self, mock_chainlit_context): method test_step_update (line 195) | async def test_step_update(self, mock_chainlit_context): method test_step_remove (line 207) | async def test_step_remove(self, mock_chainlit_context): method test_step_stream_token_output (line 217) | async def test_step_stream_token_output(self, mock_chainlit_context): method test_step_stream_token_input (line 229) | async def test_step_stream_token_input(self, mock_chainlit_context): method test_step_stream_token_sequence (line 239) | async def test_step_stream_token_sequence(self, mock_chainlit_context): method test_step_stream_token_empty (line 250) | async def test_step_stream_token_empty(self, mock_chainlit_context): method test_step_context_manager_async (line 260) | async def test_step_context_manager_async(self, mock_chainlit_context): method test_step_context_manager_with_exception (line 272) | async def test_step_context_manager_with_exception(self, mock_chainlit... method test_step_parent_id_from_context (line 284) | async def test_step_parent_id_from_context(self, mock_chainlit_context): method test_step_local_steps_tracking (line 291) | async def test_step_local_steps_tracking(self, mock_chainlit_context): method test_step_with_none_input (line 308) | async def test_step_with_none_input(self, mock_chainlit_context): method test_step_with_none_output (line 316) | async def test_step_with_none_output(self, mock_chainlit_context): method test_step_with_list_content (line 324) | async def test_step_with_list_content(self, mock_chainlit_context): method test_step_with_tuple_content (line 335) | async def test_step_with_tuple_content(self, mock_chainlit_context): class TestStepDecorator (line 346) | class TestStepDecorator: method test_step_decorator_async_function (line 349) | async def test_step_decorator_async_function(self, mock_chainlit_conte... method test_step_decorator_sync_function (line 362) | async def test_step_decorator_sync_function(self, mock_chainlit_context): method test_step_decorator_uses_function_name (line 374) | async def test_step_decorator_uses_function_name(self, mock_chainlit_c... method test_step_decorator_captures_input (line 389) | async def test_step_decorator_captures_input(self, mock_chainlit_conte... method test_step_decorator_captures_output (line 402) | async def test_step_decorator_captures_output(self, mock_chainlit_cont... method test_step_decorator_handles_exception (line 417) | async def test_step_decorator_handles_exception(self, mock_chainlit_co... method test_step_decorator_with_metadata (line 435) | async def test_step_decorator_with_metadata(self, mock_chainlit_context): method test_step_decorator_with_tags (line 450) | async def test_step_decorator_with_tags(self, mock_chainlit_context): method test_step_decorator_without_parentheses (line 465) | async def test_step_decorator_without_parentheses(self, mock_chainlit_... class TestStepHelperFunctions (line 480) | class TestStepHelperFunctions: method test_flatten_args_kwargs (line 483) | def test_flatten_args_kwargs(self): method test_flatten_args_kwargs_with_all_kwargs (line 496) | def test_flatten_args_kwargs_with_all_kwargs(self): method test_stub_step (line 506) | async def test_stub_step(self, mock_chainlit_context): method test_check_add_step_in_cot_hidden (line 524) | async def test_check_add_step_in_cot_hidden(self, mock_chainlit_context): method test_check_add_step_in_cot_visible (line 539) | async def test_check_add_step_in_cot_visible(self, mock_chainlit_conte... class TestStepEdgeCases (line 552) | class TestStepEdgeCases: method test_step_with_non_serializable_content (line 555) | async def test_step_with_non_serializable_content(self, mock_chainlit_... method test_step_with_very_long_content (line 569) | async def test_step_with_very_long_content(self, mock_chainlit_context): method test_step_multiple_updates (line 579) | async def test_step_multiple_updates(self, mock_chainlit_context): method test_step_id_uniqueness (line 590) | async def test_step_id_uniqueness(self, mock_chainlit_context): method test_step_with_custom_thread_id (line 600) | async def test_step_with_custom_thread_id(self, mock_chainlit_context): method test_step_fail_on_persist_error_flag (line 608) | async def test_step_fail_on_persist_error_flag(self, mock_chainlit_con... FILE: backend/tests/test_translations.py class TestCompareJsonStructures (line 9) | class TestCompareJsonStructures: method test_compare_identical_structures (line 12) | def test_compare_identical_structures(self): method test_compare_with_missing_keys (line 21) | def test_compare_with_missing_keys(self): method test_compare_with_extra_keys (line 32) | def test_compare_with_extra_keys(self): method test_compare_with_both_missing_and_extra_keys (line 43) | def test_compare_with_both_missing_and_extra_keys(self): method test_compare_nested_structures (line 54) | def test_compare_nested_structures(self): method test_compare_nested_with_missing_keys (line 63) | def test_compare_nested_with_missing_keys(self): method test_compare_nested_with_extra_keys (line 73) | def test_compare_nested_with_extra_keys(self): method test_compare_deeply_nested_structures (line 83) | def test_compare_deeply_nested_structures(self): method test_compare_structure_mismatch_dict_vs_value (line 93) | def test_compare_structure_mismatch_dict_vs_value(self): method test_compare_structure_mismatch_value_vs_dict (line 103) | def test_compare_structure_mismatch_value_vs_dict(self): method test_compare_with_non_dict_input_truth (line 113) | def test_compare_with_non_dict_input_truth(self): method test_compare_with_non_dict_input_to_compare (line 118) | def test_compare_with_non_dict_input_to_compare(self): method test_compare_with_both_non_dict_inputs (line 123) | def test_compare_with_both_non_dict_inputs(self): method test_compare_empty_dicts (line 128) | def test_compare_empty_dicts(self): method test_compare_empty_truth_with_data (line 137) | def test_compare_empty_truth_with_data(self): method test_compare_empty_to_compare_with_data (line 147) | def test_compare_empty_to_compare_with_data(self): method test_compare_with_different_value_types (line 157) | def test_compare_with_different_value_types(self): method test_compare_complex_nested_structure (line 167) | def test_compare_complex_nested_structure(self): method test_compare_with_null_values (line 193) | def test_compare_with_null_values(self): method test_compare_with_list_values (line 202) | def test_compare_with_list_values(self): method test_compare_path_formatting (line 212) | def test_compare_path_formatting(self): class TestLintTranslationJson (line 224) | class TestLintTranslationJson: method test_lint_with_no_errors (line 227) | def test_lint_with_no_errors(self): method test_lint_with_errors (line 239) | def test_lint_with_errors(self): method test_lint_with_nested_errors (line 253) | def test_lint_with_nested_errors(self): method test_lint_with_structure_mismatch (line 265) | def test_lint_with_structure_mismatch(self): method test_lint_with_multiple_errors (line 277) | def test_lint_with_multiple_errors(self): method test_lint_output_format (line 299) | def test_lint_output_format(self): class TestTranslationsEdgeCases (line 314) | class TestTranslationsEdgeCases: method test_compare_with_numeric_keys (line 317) | def test_compare_with_numeric_keys(self): method test_compare_with_special_characters_in_keys (line 326) | def test_compare_with_special_characters_in_keys(self): method test_compare_with_unicode_keys (line 335) | def test_compare_with_unicode_keys(self): method test_compare_very_deeply_nested (line 344) | def test_compare_very_deeply_nested(self): method test_compare_with_empty_string_values (line 354) | def test_compare_with_empty_string_values(self): method test_lint_with_empty_filename (line 363) | def test_lint_with_empty_filename(self): method test_compare_preserves_error_order (line 374) | def test_compare_preserves_error_order(self): FILE: backend/tests/test_user_session.py function test_user_session_set_get (line 1) | async def test_user_session_set_get(mock_chainlit_context, user_session): FILE: backend/tests/test_utils.py class TestUtcNow (line 19) | class TestUtcNow: method test_utc_now_returns_string (line 22) | def test_utc_now_returns_string(self): method test_utc_now_ends_with_z (line 27) | def test_utc_now_ends_with_z(self): method test_utc_now_is_iso_format (line 32) | def test_utc_now_is_iso_format(self): method test_utc_now_is_current_time (line 40) | def test_utc_now_is_current_time(self): method test_utc_now_multiple_calls (line 55) | def test_utc_now_multiple_calls(self): class TestTimestampUtc (line 65) | class TestTimestampUtc: method test_timestamp_utc_returns_string (line 68) | def test_timestamp_utc_returns_string(self): method test_timestamp_utc_ends_with_z (line 73) | def test_timestamp_utc_ends_with_z(self): method test_timestamp_utc_converts_correctly (line 78) | def test_timestamp_utc_converts_correctly(self): method test_timestamp_utc_with_zero (line 90) | def test_timestamp_utc_with_zero(self): method test_timestamp_utc_with_fractional_seconds (line 98) | def test_timestamp_utc_with_fractional_seconds(self): method test_timestamp_utc_with_negative_timestamp (line 107) | def test_timestamp_utc_with_negative_timestamp(self): class TestWrapUserFunction (line 118) | class TestWrapUserFunction: method test_wrap_user_function_with_sync_function (line 121) | async def test_wrap_user_function_with_sync_function(self, mock_chainl... method test_wrap_user_function_with_async_function (line 133) | async def test_wrap_user_function_with_async_function(self, mock_chain... method test_wrap_user_function_with_no_args (line 145) | async def test_wrap_user_function_with_no_args(self, mock_chainlit_con... method test_wrap_user_function_with_task (line 157) | async def test_wrap_user_function_with_task(self, mock_chainlit_context): method test_wrap_user_function_handles_exception (line 173) | async def test_wrap_user_function_handles_exception(self, mock_chainli... method test_wrap_user_function_with_task_handles_exception (line 186) | async def test_wrap_user_function_with_task_handles_exception( method test_wrap_user_function_preserves_function_metadata (line 206) | async def test_wrap_user_function_preserves_function_metadata( method test_wrap_user_function_with_kwargs (line 221) | async def test_wrap_user_function_with_kwargs(self, mock_chainlit_cont... class TestMakeModuleGetattr (line 234) | class TestMakeModuleGetattr: method test_make_module_getattr_creates_function (line 237) | def test_make_module_getattr_creates_function(self): method test_make_module_getattr_imports_module (line 244) | def test_make_module_getattr_imports_module(self): method test_make_module_getattr_with_nested_module (line 253) | def test_make_module_getattr_with_nested_module(self): class TestCheckModuleVersion (line 262) | class TestCheckModuleVersion: method test_check_module_version_with_installed_module (line 265) | def test_check_module_version_with_installed_module(self): method test_check_module_version_with_higher_required_version (line 271) | def test_check_module_version_with_higher_required_version(self): method test_check_module_version_with_nonexistent_module (line 277) | def test_check_module_version_with_nonexistent_module(self): method test_check_module_version_exact_match (line 282) | def test_check_module_version_exact_match(self): method test_check_module_version_with_builtin_module (line 288) | def test_check_module_version_with_builtin_module(self): class TestCheckFile (line 295) | class TestCheckFile: method test_check_file_with_valid_py_file (line 298) | def test_check_file_with_valid_py_file(self): method test_check_file_with_valid_py3_file (line 309) | def test_check_file_with_valid_py3_file(self): method test_check_file_with_invalid_extension (line 320) | def test_check_file_with_invalid_extension(self): method test_check_file_with_no_extension (line 332) | def test_check_file_with_no_extension(self): method test_check_file_with_nonexistent_file (line 344) | def test_check_file_with_nonexistent_file(self): method test_check_file_with_json_extension (line 352) | def test_check_file_with_json_extension(self): class TestUtilsEdgeCases (line 365) | class TestUtilsEdgeCases: method test_utc_now_format_consistency (line 368) | def test_utc_now_format_consistency(self): method test_timestamp_utc_with_large_timestamp (line 379) | def test_timestamp_utc_with_large_timestamp(self): method test_wrap_user_function_with_multiple_exceptions (line 389) | async def test_wrap_user_function_with_multiple_exceptions( method test_check_file_with_relative_path (line 406) | def test_check_file_with_relative_path(self): method test_check_file_with_absolute_path (line 418) | def test_check_file_with_absolute_path(self): method test_make_module_getattr_with_empty_registry (line 429) | def test_make_module_getattr_with_empty_registry(self): method test_wrap_user_function_with_default_args (line 438) | async def test_wrap_user_function_with_default_args(self, mock_chainli... FILE: cypress.config.ts constant CHAINLIT_APP_PORT (line 6) | const CHAINLIT_APP_PORT = 8000; function killChainlit (line 8) | async function killChainlit() { method setupNodeEvents (line 37) | async setupNodeEvents(on, config) { FILE: cypress/e2e/action/main.py function on_test_action (line 5) | async def on_test_action(): function on_removable_action (line 10) | async def on_removable_action(action: cl.Action): function on_multiple_actions (line 16) | async def on_multiple_actions(action: cl.Action): function on_all_actions_removed (line 22) | async def on_all_actions_removed(_: cl.Action): function main (line 29) | async def main(): FILE: cypress/e2e/ask_custom_element/main.py function on_start (line 5) | async def on_start(): FILE: cypress/e2e/ask_custom_element/public/elements/JiraTicket.jsx function JiraTicket (line 9) | function JiraTicket() { FILE: cypress/e2e/ask_file/main.py function start (line 7) | async def start(): FILE: cypress/e2e/ask_multiple_files/main.py function start (line 5) | async def start(): FILE: cypress/e2e/ask_user/main.py function main (line 5) | async def main(): FILE: cypress/e2e/audio_element/main.py function start (line 12) | async def start(): FILE: cypress/e2e/auth/main.py function custom_auth (line 15) | async def custom_auth(request: Request) -> Response: function custom_token_auth (line 25) | async def custom_token_auth() -> Response: function on_chat_start (line 45) | async def on_chat_start(): function on_message (line 51) | async def on_message(msg: cl.Message): FILE: cypress/e2e/auth/spec.cy.ts function login (line 3) | function login() { function getToken (line 11) | function getToken() { function shouldShowGreetingMessage (line 19) | function shouldShowGreetingMessage() { function shouldSendMessageAndRecieveAnswer (line 26) | function shouldSendMessageAndRecieveAnswer() { FILE: cypress/e2e/blinking_cursor/main.py function main (line 5) | async def main(): function tool (line 10) | async def tool(): function on_message (line 16) | async def on_message(message: cl.Message): FILE: cypress/e2e/chat_context/main.py function main (line 5) | async def main(): FILE: cypress/e2e/chat_prefill/main.py function main (line 5) | async def main(): FILE: cypress/e2e/chat_profiles/main.py function chat_profile (line 23) | async def chat_profile(current_user: cl.User): function auth_callback (line 50) | def auth_callback(username: str, password: str) -> Optional[cl.User]: function on_message (line 58) | async def on_message(): FILE: cypress/e2e/chat_settings/main.py function start (line 6) | async def start(): function setup_agent (line 65) | async def setup_agent(settings): FILE: cypress/e2e/command/main.py function start (line 28) | async def start(): function message (line 33) | async def message(msg: cl.Message): FILE: cypress/e2e/config_overrides/main.py function chat_profile (line 29) | async def chat_profile(current_user: cl.User): function auth_callback (line 70) | def auth_callback(username: str, password: str) -> Optional[cl.User]: function on_message (line 78) | async def on_message(): FILE: cypress/e2e/context/main.py function async_function_from_sync (line 6) | async def async_function_from_sync(): function sync_function (line 11) | def sync_function(): function async_function (line 17) | async def async_function(): function another_async_function (line 21) | async def another_async_function(): function main (line 27) | async def main(): FILE: cypress/e2e/copilot/main.py function on_chat_start (line 5) | async def on_chat_start(): function on_message (line 10) | async def on_message(msg: cl.Message): FILE: cypress/e2e/custom_build/main.py function main (line 5) | async def main(): FILE: cypress/e2e/custom_data_layer/sql_alchemy.py function data_layer (line 16) | def data_layer(): function main (line 23) | async def main(): function handle_message (line 28) | async def handle_message(): function auth_callback (line 34) | def auth_callback(username: str, password: str) -> Optional[cl.User]: FILE: cypress/e2e/custom_element/main.py function on_test_action (line 5) | async def on_test_action(): function on_start (line 11) | async def on_start(): FILE: cypress/e2e/custom_element/public/elements/Counter.jsx function Counter (line 4) | function Counter() { FILE: cypress/e2e/custom_element/spec.cy.ts function getCustomElement (line 2) | function getCustomElement() { FILE: cypress/e2e/custom_element_auth/main.py function auth_callback (line 9) | def auth_callback(username: str, password: str) -> Optional[cl.User]: function on_start (line 17) | async def on_start(): FILE: cypress/e2e/custom_element_command/main.py function on_start (line 5) | async def on_start(): function on_message (line 13) | async def on_message(message: cl.Message): FILE: cypress/e2e/custom_element_command/public/elements/Commander.jsx function Commander (line 3) | function Commander() { FILE: cypress/e2e/custom_theme/main.py function main (line 5) | async def main(): FILE: cypress/e2e/data_layer/main.py function save_thread_history (line 85) | async def save_thread_history(): class TestDataLayer (line 95) | class TestDataLayer(cl_data.BaseDataLayer): method get_user (line 96) | async def get_user(self, identifier: str): method create_user (line 103) | async def create_user(self, user: cl.User): method update_thread (line 114) | async def update_thread( method create_step (line 149) | async def create_step(self, step_dict: StepDict): method get_thread_author (line 160) | async def get_thread_author(self, thread_id: str): method list_threads (line 164) | async def list_threads( method get_thread (line 172) | async def get_thread(self, thread_id: str): method delete_thread (line 179) | async def delete_thread(self, thread_id: str): method delete_feedback (line 182) | async def delete_feedback( method upsert_feedback (line 188) | async def upsert_feedback( method create_element (line 195) | async def create_element(self, element: "Element"): method get_element (line 201) | async def get_element( method delete_element (line 207) | async def delete_element(self, element_id: str, thread_id: Optional[st... method update_step (line 211) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 215) | async def delete_step(self, step_id: str): method get_favorite_steps (line 218) | async def get_favorite_steps(self, user_id: str) -> List["StepDict"]: method build_debug_url (line 221) | async def build_debug_url(self) -> str: method close (line 224) | async def close(self) -> None: function data_layer (line 229) | def data_layer(): function send_count (line 233) | async def send_count(): function main (line 239) | async def main(): function handle_message (line 247) | async def handle_message(): function auth_callback (line 260) | def auth_callback(username: str, password: str) -> Optional[cl.User]: function on_chat_resume (line 270) | async def on_chat_resume(thread: ThreadDict): FILE: cypress/e2e/data_layer/spec.cy.ts constant SELECTORS (line 7) | const SELECTORS = { FILE: cypress/e2e/dataframe/main.py function start (line 7) | async def start(): FILE: cypress/e2e/edit_message/main.py function main (line 5) | async def main(): FILE: cypress/e2e/elements/main.py function gen_img (line 13) | async def gen_img(): function start (line 18) | async def start(): FILE: cypress/e2e/error_handling/main.py function main (line 5) | def main(): FILE: cypress/e2e/file_element/main.py function start (line 20) | async def start(): FILE: cypress/e2e/header_auth/main.py function header_auth_callback (line 10) | async def header_auth_callback(headers) -> Optional[cl.User]: function on_chat_start (line 18) | async def on_chat_start(): FILE: cypress/e2e/llama_index_cb/main.py function start (line 9) | async def start(): FILE: cypress/e2e/modes/main.py function start (line 7) | async def start(): function on_message (line 63) | async def on_message(message: cl.Message): FILE: cypress/e2e/on_chat_start/main.py function start (line 5) | async def start(): FILE: cypress/e2e/password_auth/main.py function auth_callback (line 10) | def auth_callback(username: str, password: str) -> Optional[cl.User]: function on_chat_start (line 18) | async def on_chat_start(): FILE: cypress/e2e/plotly/main.py function start (line 7) | async def start(): FILE: cypress/e2e/pyplot/main.py function start (line 7) | async def start(): FILE: cypress/e2e/readme/main.py function on_message (line 5) | async def on_message(msg): FILE: cypress/e2e/readme/spec.cy.ts function openReadme (line 1) | function openReadme() { method onBeforeLoad (line 13) | onBeforeLoad(win) { method onBeforeLoad (line 25) | onBeforeLoad(win) { FILE: cypress/e2e/remove_elements/main.py function start (line 16) | async def start(): FILE: cypress/e2e/remove_step/main.py function main (line 5) | async def main(): FILE: cypress/e2e/sidebar/main.py function start (line 13) | async def start(): function message (line 26) | async def message(msg: cl.Message): FILE: cypress/e2e/starters/main.py function starters (line 5) | async def starters(): function on_message (line 14) | async def on_message(msg: cl.Message): FILE: cypress/e2e/starters_categories/main.py function starter_categories (line 7) | async def starter_categories(user: Optional[cl.User] = None): function on_message (line 26) | async def on_message(msg: cl.Message): FILE: cypress/e2e/step/main_async.py function tool_3 (line 4) | async def tool_3(): function tool_2 (line 11) | async def tool_2(): function tool_1 (line 18) | async def tool_1(): function main (line 24) | async def main(message: cl.Message): FILE: cypress/e2e/step/main_sync.py function tool_3 (line 4) | def tool_3(): function tool_2 (line 11) | def tool_2(): function tool_1 (line 18) | def tool_1(): function main (line 24) | async def main(message: cl.Message): FILE: cypress/e2e/step/tests.ts function tests (line 3) | function tests() { FILE: cypress/e2e/stop_task/main_async.py function message (line 5) | async def message(message: cl.Message): FILE: cypress/e2e/stop_task/main_sync.py function sync_function (line 6) | def sync_function(): function message (line 11) | async def message(message: cl.Message): FILE: cypress/e2e/stop_task/tests.ts function tests (line 3) | function tests() { FILE: cypress/e2e/streaming/main.py function main (line 9) | async def main(): FILE: cypress/e2e/streaming/spec.cy.ts function messageStream (line 3) | function messageStream(index: number) { function toolStream (line 10) | function toolStream(tool: string) { FILE: cypress/e2e/tasklist/main.py function on_message (line 30) | async def on_message(): function main (line 37) | async def main(): FILE: cypress/e2e/thread_resume/main.py class MemoryDataLayer (line 26) | class MemoryDataLayer(cl_data.BaseDataLayer): method get_user (line 27) | async def get_user(self, identifier: str): method create_user (line 30) | async def create_user(self, user: cl.User): method delete_feedback (line 35) | async def delete_feedback( method upsert_feedback (line 41) | async def upsert_feedback( method create_element (line 47) | async def create_element(self, element: "Element"): method get_element (line 50) | async def get_element( method delete_element (line 55) | async def delete_element(self, element_id: str, thread_id: Optional[st... method create_step (line 58) | async def create_step(self, step_dict: "StepDict"): method update_step (line 61) | async def update_step(self, step_dict: "StepDict"): method delete_step (line 64) | async def delete_step(self, step_id: str): method get_thread_author (line 67) | async def get_thread_author(self, thread_id: str) -> str: method delete_thread (line 70) | async def delete_thread(self, thread_id: str): method list_threads (line 74) | async def list_threads( method get_thread (line 84) | async def get_thread(self, thread_id: str) -> "Optional[ThreadDict]": method update_thread (line 91) | async def update_thread( method get_favorite_steps (line 118) | async def get_favorite_steps(self, user_id: str) -> List["StepDict"]: method build_debug_url (line 121) | async def build_debug_url(self) -> str: method close (line 124) | async def close(self) -> None: function data_layer (line 129) | def data_layer(): function auth (line 134) | def auth(username: str, password: str) -> Optional[cl.User]: function start (line 141) | async def start(): function on_resume (line 146) | async def on_resume(thread: ThreadDict): function on_message (line 151) | async def on_message(msg: cl.Message): FILE: cypress/e2e/update_step/main.py function main (line 5) | async def main(): FILE: cypress/e2e/upload_attachments/main.py function main (line 5) | async def main(message: cl.Message): FILE: cypress/e2e/user_env/main.py function main (line 5) | async def main(): FILE: cypress/e2e/user_session/main.py function main (line 5) | async def main(message: cl.Message): FILE: cypress/e2e/user_session/spec.cy.ts function newSession (line 3) | function newSession() { FILE: cypress/e2e/window_message/main.py function window_message (line 5) | async def window_message(message: str): function message (line 11) | async def message(message: str): FILE: cypress/fixtures/hello.cpp function main (line 5) | int main() { FILE: cypress/support/testUtils.ts function submitMessage (line 11) | function submitMessage(message: string) { function openHistory (line 19) | function openHistory() { function closeHistory (line 23) | function closeHistory() { function loadCopilotScript (line 27) | function loadCopilotScript() { function mountCopilotWidget (line 46) | function mountCopilotWidget(widgetConfig?: Partial) { function colilotShouldBeClosed (line 59) | function colilotShouldBeClosed() { function copilotShouldBeOpen (line 68) | function copilotShouldBeOpen() { function openCopilot (line 77) | function openCopilot() { function getCopilotThreadId (line 87) | function getCopilotThreadId() { function clearCopilotThreadId (line 94) | function clearCopilotThreadId(newThreadId?: string) { constant SOCKET_IO_EVENT_PREFIX (line 101) | const SOCKET_IO_EVENT_PREFIX = '42'; constant SOCKET_IO_PREFIX_LENGTH (line 102) | const SOCKET_IO_PREFIX_LENGTH = 2; function setupWebSocketListener (line 104) | function setupWebSocketListener( FILE: frontend/src/App.tsx type Window (line 17) | interface Window { function App (line 27) | function App() { FILE: frontend/src/AppWrapper.tsx function AppWrapper (line 13) | function AppWrapper() { FILE: frontend/src/api/index.ts class ExtendedChainlitAPI (line 27) | class ExtendedChainlitAPI extends ChainlitAPI { method shareThread (line 28) | async shareThread( method connectStreamableHttpMCP (line 39) | connectStreamableHttpMCP( FILE: frontend/src/components/Alert.tsx type AlertVariant (line 4) | type AlertVariant = 'info' | 'error'; type AlertProps (line 6) | interface AlertProps { FILE: frontend/src/components/AudioPresence.tsx type Props (line 8) | interface Props { function AudioPresence (line 16) | function AudioPresence({ FILE: frontend/src/components/AutoResizeTextarea.tsx type Props (line 6) | interface Props extends Omit, 'onPaste'> { FILE: frontend/src/components/AutoResumeThread.tsx type Props (line 13) | interface Props { function AutoResumeThread (line 17) | function AutoResumeThread({ id }: Props) { FILE: frontend/src/components/BlinkingCursor.tsx constant CURSOR_PLACEHOLDER (line 3) | const CURSOR_PLACEHOLDER = '\u200B'; type Props (line 5) | interface Props { function BlinkingCursor (line 9) | function BlinkingCursor({ whitespace }: Props) { FILE: frontend/src/components/ButtonLink.tsx type ButtonLinkProps (line 13) | interface ButtonLinkProps { function ButtonLink (line 21) | function ButtonLink({ FILE: frontend/src/components/ChatSettings/ChatSettingsSidebar.tsx function ChatSettingsSidebar (line 32) | function ChatSettingsSidebar() { FILE: frontend/src/components/ChatSettings/CheckboxInput.tsx type CheckboxInputProps (line 14) | interface CheckboxInputProps extends IInput { FILE: frontend/src/components/ChatSettings/DatePickerInput.tsx type DatePickerBaseProps (line 72) | interface DatePickerBaseProps extends IInput { type DatePickerSharedProps (line 133) | interface DatePickerSharedProps { type DatePickerSingleProps (line 145) | interface DatePickerSingleProps extends IInput, DatePickerSharedProps { type DatePickerRangeProps (line 211) | interface DatePickerRangeProps extends IInput, DatePickerSharedProps { type DatePickerInputProps (line 324) | interface DatePickerInputProps extends IInput, DatePickerSharedProps { FILE: frontend/src/components/ChatSettings/FormInput.tsx type TFormInputValue (line 13) | type TFormInputValue = string | number | boolean | string[] | undefined; type IFormInput (line 15) | interface IFormInput extends IInput { type TFormInput (line 22) | type TFormInput = FILE: frontend/src/components/ChatSettings/InputLabel.tsx type InputLabelProps (line 13) | interface InputLabelProps { FILE: frontend/src/components/ChatSettings/InputStateHandler.tsx type NotificationsProps (line 14) | interface NotificationsProps { type InputProps (line 19) | interface InputProps { type InputStateHandlerProps (line 29) | interface InputStateHandlerProps extends InputProps { FILE: frontend/src/components/ChatSettings/MultiSelectInput.tsx type SelectItemType (line 17) | interface SelectItemType { type MultiSelectInputProps (line 24) | interface MultiSelectInputProps extends IInput { FILE: frontend/src/components/ChatSettings/NotificationCount.tsx type NotificationCountProps (line 5) | interface NotificationCountProps { FILE: frontend/src/components/ChatSettings/RadioButtonGroup.tsx type RadioItemType (line 9) | interface RadioItemType { type RadioButtonGroupProps (line 14) | interface RadioButtonGroupProps extends IInput { FILE: frontend/src/components/ChatSettings/SelectInput.tsx type SelectItemType (line 14) | interface SelectItemType { type SelectInputProps (line 21) | interface SelectInputProps extends IInput { FILE: frontend/src/components/ChatSettings/SliderInput.tsx type IInput (line 7) | interface IInput { type SliderInputProps (line 15) | interface SliderInputProps extends IInput { FILE: frontend/src/components/ChatSettings/SwitchInput.tsx type InputStateProps (line 8) | interface InputStateProps { type SwitchInputProps (line 17) | interface SwitchInputProps extends InputStateProps { FILE: frontend/src/components/ChatSettings/TagsInput.tsx type TagsInputProps (line 11) | type TagsInputProps = { FILE: frontend/src/components/ChatSettings/TextInput.tsx type TextInputProps (line 8) | interface TextInputProps FILE: frontend/src/components/ChatSettings/index.tsx function ChatSettingsModal (line 29) | function ChatSettingsModal() { FILE: frontend/src/components/CodeSnippet.tsx type CodeSnippetProps (line 11) | interface CodeSnippetProps { type CodeProps (line 45) | interface CodeProps { function CodeSnippet (line 59) | function CodeSnippet({ ...props }: CodeProps) { FILE: frontend/src/components/CopyButton.tsx type Props (line 14) | interface Props { FILE: frontend/src/components/ElementSideView.tsx function ElementSideView (line 22) | function ElementSideView() { FILE: frontend/src/components/ElementView.tsx type ElementViewProps (line 10) | interface ElementViewProps { FILE: frontend/src/components/Elements/Dataframe.tsx type DataframeData (line 35) | interface DataframeData { function DataframeElement (line 177) | function DataframeElement({ element }: { element: IDataframeElement }) { FILE: frontend/src/components/Elements/ElementRef.tsx type ElementRefProps (line 6) | interface ElementRefProps { FILE: frontend/src/components/Elements/LazyDataframe.tsx type Props (line 7) | interface Props { FILE: frontend/src/components/Elements/PDF.tsx type Props (line 3) | interface Props { FILE: frontend/src/components/Elements/Plotly.tsx type Props (line 12) | interface Props { FILE: frontend/src/components/Elements/Text.tsx type TextElementProps (line 9) | interface TextElementProps { FILE: frontend/src/components/Elements/index.tsx type ElementProps (line 13) | interface ElementProps { FILE: frontend/src/components/ErrorBoundary.tsx type Props (line 5) | interface Props { type State (line 10) | interface State { class ErrorBoundary (line 15) | class ErrorBoundary extends Component { method getDerivedStateFromError (line 21) | public static getDerivedStateFromError(err: Error): State { method componentDidCatch (line 26) | public componentDidCatch(error: Error, errorInfo: ErrorInfo) { method render (line 30) | public render() { FILE: frontend/src/components/Icon.tsx type Props (line 3) | interface Props { FILE: frontend/src/components/Kbd.tsx type KbdProps (line 8) | type KbdProps = React.HTMLAttributes & { FILE: frontend/src/components/LeftSidebar/Search.tsx function SearchChats (line 31) | function SearchChats() { FILE: frontend/src/components/LeftSidebar/ThreadHistory.tsx constant BATCH_SIZE (line 20) | const BATCH_SIZE = 35; function ThreadHistory (line 23) | function ThreadHistory() { FILE: frontend/src/components/LeftSidebar/ThreadList.tsx type ThreadListProps (line 63) | interface ThreadListProps { function ThreadList (line 70) | function ThreadList({ FILE: frontend/src/components/LeftSidebar/ThreadOptions.tsx type Props (line 15) | interface Props { function ThreadOptions (line 22) | function ThreadOptions({ FILE: frontend/src/components/LeftSidebar/index.tsx function LeftSidebar (line 10) | function LeftSidebar({ FILE: frontend/src/components/Loader.tsx type LoaderProps (line 4) | interface LoaderProps { FILE: frontend/src/components/LoginForm.tsx type Props (line 16) | interface Props { type FormValues (line 28) | interface FormValues { function LoginForm (line 33) | function LoginForm({ FILE: frontend/src/components/Logo.tsx type Props (line 8) | interface Props { FILE: frontend/src/components/Markdown.tsx type Props (line 37) | interface Props { method code (line 145) | code(props) { method pre (line 153) | pre({ children, ...props }: any) { method a (line 156) | a({ children, ...props }) { method blockquote (line 221) | blockquote(props) { method em (line 229) | em(props) { method strong (line 232) | strong(props) { method hr (line 235) | hr() { method ul (line 238) | ul(props) { method ol (line 246) | ol(props) { method h1 (line 254) | h1(props) { method h2 (line 262) | h2(props) { method h3 (line 270) | h3(props) { method h4 (line 278) | h4(props) { method p (line 286) | p(props) { method table (line 295) | table({ children, ...props }) { method thead (line 302) | thead({ children, ...props }) { method tr (line 305) | tr({ children, ...props }) { method th (line 308) | th({ children, ...props }) { method td (line 311) | td({ children, ...props }) { method tbody (line 314) | tbody({ children, ...props }) { FILE: frontend/src/components/MarkdownAlert.tsx type AlertProps (line 25) | interface AlertProps { type AlertVariant (line 48) | type AlertVariant = (typeof AlertTypes)[number]; FILE: frontend/src/components/ProviderButton.tsx function capitalizeFirstLetter (line 13) | function capitalizeFirstLetter(string: string) { function getProviderName (line 17) | function getProviderName(provider: string) { function renderProviderIcon (line 35) | function renderProviderIcon(provider: string) { type ProviderButtonProps (line 59) | interface ProviderButtonProps { FILE: frontend/src/components/QuiltedGrid.tsx type QuiltedGridProps (line 18) | interface QuiltedGridProps { FILE: frontend/src/components/ReadOnlyThread.tsx type Props (line 28) | type Props = { FILE: frontend/src/components/Tasklist/Task.tsx type ITask (line 5) | interface ITask { type ITaskList (line 11) | interface ITaskList { type TaskProps (line 16) | interface TaskProps { FILE: frontend/src/components/Tasklist/index.tsx type HeaderProps (line 11) | interface HeaderProps { type TaskListProps (line 27) | interface TaskListProps { FILE: frontend/src/components/ThemeProvider.tsx type Theme (line 3) | type Theme = 'dark' | 'light' | 'system'; type ThemeProviderProps (line 5) | type ThemeProviderProps = { type ThemeProviderState (line 11) | type ThemeProviderState = { function applyThemeVariables (line 23) | function applyThemeVariables(variant: 'dark' | 'light') { function ThemeProvider (line 37) | function ThemeProvider({ FILE: frontend/src/components/WaterMark.tsx function WaterMark (line 4) | function WaterMark() { FILE: frontend/src/components/chat/Footer.tsx type Props (line 10) | interface Props { function ChatFooter (line 18) | function ChatFooter({ showIfEmptyThread, ...props }: Props) { FILE: frontend/src/components/chat/MessageComposer/Attachment.tsx type AttachmentProps (line 12) | interface AttachmentProps { FILE: frontend/src/components/chat/MessageComposer/CommandButtons.tsx type Props (line 17) | interface Props { type AnimatedCommandButtonProps (line 23) | interface AnimatedCommandButtonProps { FILE: frontend/src/components/chat/MessageComposer/CommandPopoverButton.tsx type Props (line 33) | interface Props { FILE: frontend/src/components/chat/MessageComposer/FavoriteButton.tsx constant TOOLTIP_DELAY_MS (line 33) | const TOOLTIP_DELAY_MS = 700; type Props (line 35) | interface Props { FILE: frontend/src/components/chat/MessageComposer/Input.tsx type Props (line 24) | interface Props { type InputMethods (line 36) | interface InputMethods { FILE: frontend/src/components/chat/MessageComposer/Mcp/AddForm.tsx type McpAddFormProps (line 23) | interface McpAddFormProps { FILE: frontend/src/components/chat/MessageComposer/Mcp/AnimatedPlugIcon.tsx type AnimatedPlugIconProps (line 4) | interface AnimatedPlugIconProps { FILE: frontend/src/components/chat/MessageComposer/Mcp/List.tsx type McpListProps (line 30) | interface McpListProps { type McpItemProps (line 85) | interface McpItemProps { type DeleteMcpButtonProps (line 152) | interface DeleteMcpButtonProps { FILE: frontend/src/components/chat/MessageComposer/Mcp/index.tsx type Props (line 27) | interface Props { FILE: frontend/src/components/chat/MessageComposer/ModePicker.tsx type Props (line 21) | interface Props { FILE: frontend/src/components/chat/MessageComposer/SubmitButton.tsx type SubmitButtonProps (line 18) | interface SubmitButtonProps { function SubmitButton (line 23) | function SubmitButton({ FILE: frontend/src/components/chat/MessageComposer/UploadButton.tsx type UploadButtonProps (line 15) | interface UploadButtonProps { FILE: frontend/src/components/chat/MessageComposer/VoiceButton.tsx type Props (line 19) | interface Props { FILE: frontend/src/components/chat/MessageComposer/index.tsx type Props (line 48) | interface Props { function MessageComposer (line 55) | function MessageComposer({ FILE: frontend/src/components/chat/Messages/Message/AskFileButton.tsx type UploadState (line 14) | interface UploadState { type _AskFileButtonProps (line 21) | interface _AskFileButtonProps { type AskFileButtonProps (line 180) | interface AskFileButtonProps { FILE: frontend/src/components/chat/Messages/Message/Avatar.tsx type Props (line 20) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Buttons/Actions/ActionButton.tsx type ActionProps (line 22) | interface ActionProps { FILE: frontend/src/components/chat/Messages/Message/Buttons/Actions/index.tsx type Props (line 5) | interface Props { function MessageActions (line 9) | function MessageActions({ actions }: Props) { FILE: frontend/src/components/chat/Messages/Message/Buttons/DebugButton.tsx type DebugButtonProps (line 13) | interface DebugButtonProps { FILE: frontend/src/components/chat/Messages/Message/Buttons/FeedbackButtons.tsx type FeedbackButtonsProps (line 30) | interface FeedbackButtonsProps { function FeedbackButtons (line 34) | function FeedbackButtons({ message }: FeedbackButtonsProps) { FILE: frontend/src/components/chat/Messages/Message/Buttons/index.tsx type Props (line 14) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlineCustomElementList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedAudioList.tsx type InlinedAudioListProps (line 5) | interface InlinedAudioListProps { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedDataframeList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedFileList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedImageList.tsx type Props (line 6) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedPDFList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedPlotlyList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedTextList.tsx type Props (line 6) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/InlinedVideoList.tsx type Props (line 5) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/InlinedElements/index.tsx type Props (line 15) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Content/index.tsx type ContentSection (line 12) | type ContentSection = 'input' | 'output'; type Props (line 14) | interface Props { FILE: frontend/src/components/chat/Messages/Message/Step.tsx type Props (line 14) | interface Props { FILE: frontend/src/components/chat/Messages/Message/UserMessage.tsx type Props (line 22) | interface Props { FILE: frontend/src/components/chat/Messages/Message/index.tsx type Props (line 22) | interface Props { constant EMPTY_ELEMENTS (line 32) | const EMPTY_ELEMENTS: IMessageElement[] = []; FILE: frontend/src/components/chat/Messages/index.tsx type Props (line 14) | interface Props { constant CL_RUN_NAMES (line 23) | const CL_RUN_NAMES = ['on_chat_start', 'on_message', 'on_audio_end']; FILE: frontend/src/components/chat/MessagesContainer/index.tsx type Props (line 24) | interface Props { FILE: frontend/src/components/chat/ScrollContainer.tsx type Props (line 15) | interface Props { function ScrollContainer (line 23) | function ScrollContainer({ FILE: frontend/src/components/chat/ScrollDownButton.tsx type Props (line 5) | interface Props { function ScrollDownButton (line 9) | function ScrollDownButton({ onClick }: Props) { FILE: frontend/src/components/chat/Starter.tsx type StarterProps (line 19) | interface StarterProps { function Starter (line 23) | function Starter({ starter }: StarterProps) { FILE: frontend/src/components/chat/StarterCategory.tsx type Props (line 5) | interface Props { function StarterCategory (line 11) | function StarterCategory({ category, isSelected, onClick }: Props) { FILE: frontend/src/components/chat/Starters.tsx type Props (line 9) | interface Props { function Starters (line 13) | function Starters({ className }: Props) { FILE: frontend/src/components/chat/WelcomeScreen.tsx type Props (line 24) | interface Props { function WelcomeScreen (line 31) | function WelcomeScreen(props: Props) { FILE: frontend/src/components/header/ApiKeys.tsx function ApiKeys (line 15) | function ApiKeys() { FILE: frontend/src/components/header/ChatProfiles.tsx type Props (line 27) | interface Props { function ChatProfiles (line 31) | function ChatProfiles({ navigate }: Props) { FILE: frontend/src/components/header/NewChat.tsx type NewChatDialogProps (line 24) | type NewChatDialogProps = { type Props (line 70) | interface Props extends React.ButtonHTMLAttributes { FILE: frontend/src/components/header/Readme.tsx function ReadmeButton (line 16) | function ReadmeButton() { FILE: frontend/src/components/header/Share.tsx function ShareButton (line 16) | function ShareButton() { FILE: frontend/src/components/header/SidebarTrigger.tsx function SidebarTrigger (line 13) | function SidebarTrigger() { FILE: frontend/src/components/header/ThemeToggle.tsx type Props (line 14) | interface Props { function ThemeToggle (line 18) | function ThemeToggle({ className }: Props) { FILE: frontend/src/components/header/UserNav.tsx function UserNav (line 18) | function UserNav() { FILE: frontend/src/components/i18n/Translator.tsx type options (line 7) | type options = TOptions<$Dictionary>; type TranslatorProps (line 9) | type TranslatorProps = { FILE: frontend/src/components/share/ShareDialog.tsx type ShareDialogProps (line 21) | type ShareDialogProps = { function ShareDialog (line 27) | function ShareDialog({ FILE: frontend/src/components/ui/badge.tsx type BadgeProps (line 25) | interface BadgeProps function Badge (line 29) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: frontend/src/components/ui/button.tsx type ButtonProps (line 35) | interface ButtonProps FILE: frontend/src/components/ui/calendar.tsx function Calendar (line 12) | function Calendar({ function CalendarDayButton (line 173) | function CalendarDayButton({ FILE: frontend/src/components/ui/carousel.tsx type CarouselApi (line 10) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 11) | type UseCarouselParameters = Parameters; type CarouselOptions (line 12) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 13) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 15) | type CarouselProps = { type CarouselContextProps (line 22) | type CarouselContextProps = { function useCarousel (line 33) | function useCarousel() { FILE: frontend/src/components/ui/form.tsx type FormFieldContextValue (line 18) | type FormFieldContextValue< type FormItemContextValue (line 65) | type FormItemContextValue = { FILE: frontend/src/components/ui/pagination.tsx type PaginationLinkProps (line 37) | type PaginationLinkProps = { FILE: frontend/src/components/ui/radio-group.tsx function RadioGroup (line 8) | function RadioGroup({ function RadioGroupItem (line 21) | function RadioGroupItem({ FILE: frontend/src/components/ui/sheet.tsx type SheetContentProps (line 49) | interface SheetContentProps FILE: frontend/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 21) | const SIDEBAR_COOKIE_NAME = 'sidebar:state'; constant SIDEBAR_COOKIE_MAX_AGE (line 22) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; constant SIDEBAR_WIDTH (line 23) | const SIDEBAR_WIDTH = '16rem'; constant SIDEBAR_WIDTH_MOBILE (line 24) | const SIDEBAR_WIDTH_MOBILE = '18rem'; constant SIDEBAR_WIDTH_ICON (line 25) | const SIDEBAR_WIDTH_ICON = '3rem'; constant SIDEBAR_KEYBOARD_SHORTCUT (line 26) | const SIDEBAR_KEYBOARD_SHORTCUT = 'b'; type SidebarContext (line 28) | type SidebarContext = { function useSidebar (line 40) | function useSidebar() { FILE: frontend/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ FILE: frontend/src/components/ui/sonner.tsx type ToasterProps (line 5) | type ToasterProps = React.ComponentProps; FILE: frontend/src/components/ui/tooltip.tsx constant TOOLTIP_DELAY_MS (line 6) | const TOOLTIP_DELAY_MS = 500; constant TOOLTIP_SKIP_DELAY_MS (line 7) | const TOOLTIP_SKIP_DELAY_MS = 0; type ProviderProps (line 9) | type ProviderProps = React.ComponentProps { FILE: frontend/src/lib/utils.ts function cn (line 6) | function cn(...inputs: ClassValue[]) { function hslToHex (line 18) | function hslToHex(hslStr: string): string { FILE: frontend/src/pages/AuthCallback.tsx function AuthCallback (line 6) | function AuthCallback() { FILE: frontend/src/pages/Element.tsx function Element (line 19) | function Element() { FILE: frontend/src/pages/Env.tsx type FormValues (line 42) | type FormValues = z.infer; FILE: frontend/src/pages/Home.tsx function Home (line 5) | function Home() { FILE: frontend/src/pages/Login.tsx function Login (line 16) | function Login() { FILE: frontend/src/pages/Page.tsx type Props (line 16) | type Props = { FILE: frontend/src/pages/Thread.tsx function ThreadPage (line 18) | function ThreadPage() { FILE: frontend/src/state/chat.ts type IAttachment (line 5) | interface IAttachment { FILE: frontend/src/types/Input.ts type IInput (line 3) | interface IInput { FILE: frontend/src/types/NotificationCount.tsx type NotificationCountProps (line 1) | type NotificationCountProps = { FILE: frontend/src/types/chat.ts type IToken (line 3) | interface IToken { type ISession (line 9) | interface ISession { FILE: frontend/src/types/messageContext.ts type IMessageContext (line 9) | interface IMessageContext { FILE: frontend/tests/FavoriteButton.spec.tsx method observe (line 46) | observe() {} method unobserve (line 47) | unobserve() {} method disconnect (line 48) | disconnect() {} FILE: libs/copilot/index.tsx type Window (line 24) | interface Window { FILE: libs/copilot/src/ThemeProvider.tsx type Theme (line 3) | type Theme = 'dark' | 'light' | 'system'; type ThemeProviderProps (line 5) | type ThemeProviderProps = { type ThemeProviderState (line 11) | type ThemeProviderState = { function applyThemeVariables (line 23) | function applyThemeVariables(variant: 'dark' | 'light') { function ThemeProvider (line 38) | function ThemeProvider({ FILE: libs/copilot/src/api.ts function makeApiClient (line 5) | function makeApiClient( FILE: libs/copilot/src/app.tsx type Props (line 17) | interface Props { type Window (line 22) | interface Window { function App (line 34) | function App({ widgetConfig }: Props) { FILE: libs/copilot/src/appWrapper.tsx type Props (line 12) | interface Props { function AppWrapper (line 16) | function AppWrapper({ widgetConfig }: Props) { FILE: libs/copilot/src/chat/index.tsx function ChatWrapper (line 13) | function ChatWrapper() { FILE: libs/copilot/src/components/ElementSideView.tsx function ElementSideView (line 12) | function ElementSideView() { FILE: libs/copilot/src/components/Header.tsx type IProjectConfig (line 12) | interface IProjectConfig { type Props (line 19) | interface Props { FILE: libs/copilot/src/components/WelcomeScreen.tsx function WelcomeScreen (line 7) | function WelcomeScreen() { FILE: libs/copilot/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: libs/copilot/src/state.ts constant COPILOT_THREAD_ID_KEY (line 4) | const COPILOT_THREAD_ID_KEY = 'chainlit-copilot-thread-id'; constant COPILOT_THREAD_CHANGED_EVENT_KEY (line 5) | const COPILOT_THREAD_CHANGED_EVENT_KEY = class CopilotThreadChangedEventParams (line 7) | class CopilotThreadChangedEventParams { FILE: libs/copilot/src/types.ts type IWidgetConfig (line 1) | interface IWidgetConfig { FILE: libs/copilot/src/widget.tsx type Props (line 23) | interface Props { FILE: libs/copilot/stories/App.stories.ts type Story (line 19) | type Story = StoryObj; FILE: libs/react-client/src/api/hooks/api.ts function useApi (line 48) | function useApi( FILE: libs/react-client/src/api/hooks/auth/types.ts type JWTPayload (line 3) | interface JWTPayload extends IUser { type AuthState (line 7) | interface AuthState { type AuthActions (line 14) | interface AuthActions { type IUseAuth (line 19) | type IUseAuth = AuthState & AuthActions; FILE: libs/react-client/src/api/index.tsx type IThreadFilters (line 9) | interface IThreadFilters { type IPageInfo (line 14) | interface IPageInfo { type IPagination (line 19) | interface IPagination { class ClientError (line 24) | class ClientError extends Error { method constructor (line 28) | constructor(message: string, status: number, detail?: string) { method toString (line 34) | toString() { type Payload (line 43) | type Payload = FormData | any; class APIBase (line 45) | class APIBase { method constructor (line 46) | constructor( method buildEndpoint (line 54) | buildEndpoint(path: string) { method getDetailFromErrorResponse (line 73) | private async getDetailFromErrorResponse( method handleRequestError (line 85) | private handleRequestError(error: any) { method fetch (line 115) | async fetch( method get (line 153) | async get(endpoint: string) { method post (line 157) | async post(endpoint: string, data: Payload, signal?: AbortSignal) { method put (line 161) | async put(endpoint: string, data: Payload) { method patch (line 165) | async patch(endpoint: string, data: Payload) { method delete (line 169) | async delete(endpoint: string, data: Payload) { class ChainlitAPI (line 174) | class ChainlitAPI extends APIBase { method headerAuth (line 175) | async headerAuth() { method jwtAuth (line 180) | async jwtAuth(token: string) { method stickyCookie (line 187) | async stickyCookie(sessionId: string) { method passwordAuth (line 194) | async passwordAuth(data: FormData) { method getUser (line 199) | async getUser(): Promise { method logout (line 204) | async logout() { method setFeedback (line 209) | async setFeedback( method deleteFeedback (line 217) | async deleteFeedback(feedbackId: string): Promise<{ success: boolean }> { method listThreads (line 222) | async listThreads( method renameThread (line 234) | async renameThread(threadId: string, name: string) { method deleteThread (line 240) | async deleteThread(threadId: string) { method uploadFile (line 246) | uploadFile( method callAction (line 301) | async callAction(action: IAction, sessionId: string) { method updateElement (line 307) | async updateElement(element: IElement, sessionId: string) { method deleteElement (line 313) | async deleteElement(element: IElement, sessionId: string) { method connectStdioMCP (line 319) | async connectStdioMCP(sessionId: string, name: string, fullCommand: st... method connectSseMCP (line 329) | async connectSseMCP( method connectStreamableHttpMCP (line 345) | async connectStreamableHttpMCP( method disconnectMcp (line 361) | async disconnectMcp(sessionId: string, name: string) { method getElementUrl (line 366) | getElementUrl(id: string, sessionId: string) { method getLogoEndpoint (line 371) | getLogoEndpoint(theme: string, configuredLogoUrl?: string) { method getOAuthEndpoint (line 376) | getOAuthEndpoint(provider: string) { method shareThread (line 379) | async shareThread(threadId: string, isShared: boolean): Promise<{ succ... FILE: libs/react-client/src/state.ts type ISession (line 25) | interface ISession { FILE: libs/react-client/src/types/action.ts type IAction (line 1) | interface IAction { type ICallFn (line 12) | interface ICallFn { FILE: libs/react-client/src/types/audio.ts type OutputAudioChunk (line 1) | interface OutputAudioChunk { FILE: libs/react-client/src/types/command.ts type ICommand (line 1) | interface ICommand { FILE: libs/react-client/src/types/config.ts type IStarter (line 1) | interface IStarter { type IStarterCategory (line 8) | interface IStarterCategory { type ChatProfile (line 14) | interface ChatProfile { type IAudioConfig (line 23) | interface IAudioConfig { type IAuthConfig (line 28) | interface IAuthConfig { type IChainlitConfig (line 37) | interface IChainlitConfig { FILE: libs/react-client/src/types/element.ts type IElement (line 1) | type IElement = type IMessageElement (line 13) | type IMessageElement = type ElementType (line 24) | type ElementType = IElement['type']; type IElementSize (line 25) | type IElementSize = 'small' | 'medium' | 'large'; type TElement (line 27) | interface TElement { type TMessageElement (line 37) | interface TMessageElement extends TElement { type IImageElement (line 42) | interface IImageElement extends TMessageElement<'image'> { type ITextElement (line 46) | interface ITextElement extends TMessageElement<'text'> { type IPdfElement (line 50) | interface IPdfElement extends TMessageElement<'pdf'> { type IAudioElement (line 54) | interface IAudioElement extends TMessageElement<'audio'> { type IVideoElement (line 58) | interface IVideoElement extends TMessageElement<'video'> { type IFileElement (line 69) | interface IFileElement extends TMessageElement<'file'> { type IPlotlyElement (line 73) | type IPlotlyElement = TMessageElement<'plotly'>; type ITasklistElement (line 75) | type ITasklistElement = TElement<'tasklist'>; type IDataframeElement (line 77) | type IDataframeElement = TMessageElement<'dataframe'>; type ICustomElement (line 79) | interface ICustomElement extends TMessageElement<'custom'> { FILE: libs/react-client/src/types/feedback.ts type IFeedback (line 1) | interface IFeedback { FILE: libs/react-client/src/types/file.ts type IAskElementResponse (line 4) | interface IAskElementResponse { type FileSpec (line 9) | interface FileSpec { type ActionSpec (line 15) | interface ActionSpec { type IFileRef (line 19) | interface IFileRef { type IAsk (line 23) | interface IAsk { FILE: libs/react-client/src/types/history.ts type UserInput (line 5) | type UserInput = { type ThreadHistory (line 10) | type ThreadHistory = { FILE: libs/react-client/src/types/mcp.ts type IMcp (line 1) | interface IMcp { FILE: libs/react-client/src/types/mode.ts type IModeOption (line 4) | interface IModeOption { type IMode (line 16) | interface IMode { FILE: libs/react-client/src/types/step.ts type StepType (line 3) | type StepType = type IStep (line 15) | interface IStep { FILE: libs/react-client/src/types/thread.ts type IThread (line 4) | interface IThread { FILE: libs/react-client/src/types/user.ts type AuthProvider (line 1) | type AuthProvider = type IUserMetadata (line 9) | interface IUserMetadata extends Record { type IUser (line 15) | interface IUser { FILE: libs/react-client/src/useChatData.ts type IToken (line 16) | interface IToken { FILE: libs/react-client/src/useChatInteract.ts type PartialBy (line 27) | type PartialBy = Omit & Partial>; FILE: libs/react-client/src/wavtools/analysis/audio_analysis.js class AudioAnalysis (line 20) | class AudioAnalysis { method getFrequencies (line 32) | static getFrequencies( method constructor (line 94) | constructor(audioElement, audioBuffer = null) { method getFrequencies (line 166) | getFrequencies( method resumeIfSuspended (line 195) | async resumeIfSuspended() { FILE: libs/react-client/src/wavtools/wav_packer.js class WavPacker (line 15) | class WavPacker { method floatTo16BitPCM (line 21) | static floatTo16BitPCM(float32Array) { method mergeBuffers (line 38) | static mergeBuffers(leftBuffer, rightBuffer) { method _packData (line 54) | _packData(size, arg) { method pack (line 67) | pack(sampleRate, audio) { FILE: libs/react-client/src/wavtools/wav_recorder.js class WavRecorder (line 18) | class WavRecorder { method constructor (line 24) | constructor({ method decode (line 63) | static async decode(audioData, sampleRate = 24000, fromSampleRate = -1) { method log (line 137) | log() { method getSampleRate (line 148) | getSampleRate() { method getStatus (line 156) | getStatus() { method _event (line 174) | async _event(name, data = {}, _processor = null) { method listenForDeviceChange (line 202) | listenForDeviceChange(callback) { method requestPermission (line 241) | async requestPermission() { method listDevices (line 265) | async listDevices() { method begin (line 301) | async begin(deviceId) { method getFrequencies (line 390) | getFrequencies( method pause (line 413) | async pause() { method record (line 434) | async record(chunkProcessor = () => {}, chunkSize = 8192) { method clear (line 458) | async clear() { method read (line 470) | async read() { method save (line 484) | async save(force = false) { method end (line 504) | async end() { method quit (line 539) | async quit() { FILE: libs/react-client/src/wavtools/wav_stream_player.js class WavStreamPlayer (line 8) | class WavStreamPlayer { method constructor (line 14) | constructor({ sampleRate = 24000, onStop } = {}) { method connect (line 29) | async connect() { method getFrequencies (line 54) | getFrequencies( method _start (line 77) | _start() { method add16BitPCM (line 105) | add16BitPCM(arrayBuffer, trackId = 'default') { method getTrackSampleOffset (line 131) | async getTrackSampleOffset(interrupt = false) { method interrupt (line 157) | async interrupt() {