From 11888121af9c17babe4450fc6cdd1d7b0f67cac0 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Nov 2024 13:10:58 -0300 Subject: [PATCH 1/3] fix: Simplify exception handling and refactor error messaging (#4496) * Refactor `ExceptionWithMessageError` to remove redundant exception parameter * Handle nested exceptions in message schema initialization * fix: Simplify exception handling in LCAgentComponent --- src/backend/base/langflow/base/agents/agent.py | 2 +- src/backend/base/langflow/base/agents/events.py | 5 ++--- src/backend/base/langflow/schema/message.py | 5 ++++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/backend/base/langflow/base/agents/agent.py b/src/backend/base/langflow/base/agents/agent.py index a05edd795b5e..7e41ade2681d 100644 --- a/src/backend/base/langflow/base/agents/agent.py +++ b/src/backend/base/langflow/base/agents/agent.py @@ -160,7 +160,7 @@ async def run_agent( msg_id = e.agent_message.id await asyncio.to_thread(delete_message, id_=msg_id) self._send_message_event(e.agent_message, category="remove_message") - raise e.exception # noqa: B904 + raise except Exception: raise diff --git a/src/backend/base/langflow/base/agents/events.py b/src/backend/base/langflow/base/agents/events.py index 61ba6497d43c..f95940111e35 100644 --- a/src/backend/base/langflow/base/agents/events.py +++ b/src/backend/base/langflow/base/agents/events.py @@ -14,9 +14,8 @@ class ExceptionWithMessageError(Exception): - def __init__(self, e: Exception, agent_message: Message): + def __init__(self, agent_message: Message): self.agent_message = agent_message - self.exception = e super().__init__() @@ -253,5 +252,5 @@ async def process_agent_events( start_time = start_time or perf_counter() agent_message.properties.state = "complete" except Exception as e: - raise ExceptionWithMessageError(e, agent_message) from e + raise ExceptionWithMessageError(agent_message) from e return Message(**agent_message.model_dump()) diff --git a/src/backend/base/langflow/schema/message.py b/src/backend/base/langflow/schema/message.py index ea78f0f510a0..9b1ace4747c6 100644 --- a/src/backend/base/langflow/schema/message.py +++ b/src/backend/base/langflow/schema/message.py @@ -339,12 +339,15 @@ class ErrorMessage(Message): def __init__( self, - exception: Exception, + exception: BaseException, session_id: str, source: Source, trace_name: str | None = None, flow_id: str | None = None, ) -> None: + # This is done to avoid circular imports + if exception.__class__.__name__ == "ExceptionWithMessageError" and exception.__cause__ is not None: + exception = exception.__cause__ # Get the error reason reason = f"**{exception.__class__.__name__}**\n" if hasattr(exception, "body") and "message" in exception.body: From 06b7450652c604a7d83316a3b247114299e93f38 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Nov 2024 13:32:08 -0300 Subject: [PATCH 2/3] feat: Enhance tool mapping and output rendering with animations (#4481) * Enhance tool block mapping by using unique tool keys with name and run_id * Enhance tool output rendering with Markdown and JSON formatting in ContentDisplay component * Add animations for block title and content separators in ContentBlockDisplay component * Allow 'size' prop to accept string values and update styling in BorderTrail component * Adjust BorderTrail animation size and duration based on expansion state * fix both borders trailing at the same time * [autofix.ci] apply automated fixes * fix text sizing * fix spacing issues * Adjust header title and text styling in ContentBlockDisplay and DurationDisplay components * Refactor header title in ContentBlockDisplay component * [autofix.ci] apply automated fixes * Convert `test_handle_on_tool_start` to an async function and update tool content key logic * Handle logger without 'opt' method in code parsing error handling * Update test duration values in .test_durations file --------- Co-authored-by: anovazzi1 Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../base/langflow/base/agents/events.py | 13 +- src/backend/base/langflow/utils/validate.py | 5 +- src/backend/tests/.test_durations | 1370 +++++++++-------- .../components/agents/test_agent_events.py | 6 +- .../chatComponents/ContentBlockDisplay.tsx | 82 +- .../chatComponents/ContentDisplay.tsx | 97 +- .../chatComponents/DurationDisplay.tsx | 2 +- .../src/components/core/border-trail.tsx | 9 +- 8 files changed, 882 insertions(+), 702 deletions(-) diff --git a/src/backend/base/langflow/base/agents/events.py b/src/backend/base/langflow/base/agents/events.py index f95940111e35..4efe01c9d87c 100644 --- a/src/backend/base/langflow/base/agents/events.py +++ b/src/backend/base/langflow/base/agents/events.py @@ -105,6 +105,7 @@ def handle_on_tool_start( tool_name = event["name"] tool_input = event["data"].get("input") run_id = event.get("run_id", "") + tool_key = f"{tool_name}_{run_id}" # Create content blocks if they don't exist if not agent_message.content_blocks: @@ -122,11 +123,11 @@ def handle_on_tool_start( ) # Store in map and append to message - tool_blocks_map[run_id] = tool_content + tool_blocks_map[tool_key] = tool_content agent_message.content_blocks[0].contents.append(tool_content) agent_message = send_message_method(message=agent_message) - tool_blocks_map[run_id] = agent_message.content_blocks[0].contents[-1] + tool_blocks_map[tool_key] = agent_message.content_blocks[0].contents[-1] return agent_message, start_time @@ -138,7 +139,9 @@ def handle_on_tool_end( start_time: float, ) -> tuple[Message, float]: run_id = event.get("run_id", "") - tool_content = tool_blocks_map.get(run_id) + tool_name = event.get("name", "") + tool_key = f"{tool_name}_{run_id}" + tool_content = tool_blocks_map.get(tool_key) if tool_content and isinstance(tool_content, ToolContent): tool_content.output = event["data"].get("output") @@ -159,7 +162,9 @@ def handle_on_tool_error( start_time: float, ) -> tuple[Message, float]: run_id = event.get("run_id", "") - tool_content = tool_blocks_map.get(run_id) + tool_name = event.get("name", "") + tool_key = f"{tool_name}_{run_id}" + tool_content = tool_blocks_map.get(tool_key) if tool_content and isinstance(tool_content, ToolContent): tool_content.error = event["data"].get("error", "Unknown error") diff --git a/src/backend/base/langflow/utils/validate.py b/src/backend/base/langflow/utils/validate.py index ea9715612b5e..40c029385c02 100644 --- a/src/backend/base/langflow/utils/validate.py +++ b/src/backend/base/langflow/utils/validate.py @@ -29,7 +29,10 @@ def validate_code(code): try: tree = ast.parse(code) except Exception as e: # noqa: BLE001 - logger.opt(exception=True).debug("Error parsing code") + if hasattr(logger, "opt"): + logger.opt(exception=True).debug("Error parsing code") + else: + logger.debug("Error parsing code") errors["function"]["errors"].append(str(e)) return errors diff --git a/src/backend/tests/.test_durations b/src/backend/tests/.test_durations index c022cefd44ab..67d867e18eaa 100644 --- a/src/backend/tests/.test_durations +++ b/src/backend/tests/.test_durations @@ -1,10 +1,10 @@ { - "src/backend/tests/performance/test_server_init.py::test_create_starter_projects": 9.420285084022908, - "src/backend/tests/performance/test_server_init.py::test_get_and_cache_all_types_dict": 0.004676374985137954, - "src/backend/tests/performance/test_server_init.py::test_initialize_services": 0.1009007910033688, - "src/backend/tests/performance/test_server_init.py::test_initialize_super_user": 0.05258179100928828, - "src/backend/tests/performance/test_server_init.py::test_load_flows": 0.02415920697967522, - "src/backend/tests/performance/test_server_init.py::test_setup_llm_caching": 0.00272379198577255, + "src/backend/tests/performance/test_server_init.py::test_create_starter_projects": 9.349637124105357, + "src/backend/tests/performance/test_server_init.py::test_get_and_cache_all_types_dict": 0.009816041041631252, + "src/backend/tests/performance/test_server_init.py::test_initialize_services": 0.5938955409801565, + "src/backend/tests/performance/test_server_init.py::test_initialize_super_user": 0.31904370902338997, + "src/backend/tests/performance/test_server_init.py::test_load_flows": 0.002782625029794872, + "src/backend/tests/performance/test_server_init.py::test_setup_llm_caching": 0.01124733401229605, "src/backend/tests/test_endpoints.py::test_build_vertex_invalid_flow_id": 1.8161861660000795, "src/backend/tests/test_endpoints.py::test_build_vertex_invalid_vertex_id": 1.6184064170001875, "src/backend/tests/test_endpoints.py::test_get_all": 3.8724166670003797, @@ -67,86 +67,86 @@ "src/backend/tests/test_webhook.py::test_webhook_endpoint": 8.848518459000388, "src/backend/tests/test_webhook.py::test_webhook_flow_on_run_endpoint": 4.675444458000584, "src/backend/tests/test_webhook.py::test_webhook_with_random_payload": 5.161753501000476, - "src/backend/tests/unit/api/test_api_utils.py::test_get_outdated_components": 0.0011389600113034248, - "src/backend/tests/unit/api/test_api_utils.py::test_get_suggestion_message": 0.005443290981929749, - "src/backend/tests/unit/api/v1/test_api_key.py::test_create_api_key_route": 2.7758819590089843, - "src/backend/tests/unit/api/v1/test_api_key.py::test_create_folder": 6.600347209023312, - "src/backend/tests/unit/api/v1/test_api_key.py::test_delete_api_key_route": 2.596663416014053, - "src/backend/tests/unit/api/v1/test_api_key.py::test_save_store_api_key": 13.267098251002608, - "src/backend/tests/unit/api/v1/test_endpoints.py::test_get_config": 1.9936252090265043, - "src/backend/tests/unit/api/v1/test_endpoints.py::test_get_version": 2.310546292021172, - "src/backend/tests/unit/api/v1/test_endpoints.py::test_update_component_outputs": 3.03187774901744, - "src/backend/tests/unit/api/v1/test_flows.py::test_create_flow": 3.2623954990122, - "src/backend/tests/unit/api/v1/test_flows.py::test_create_flows": 3.070106875966303, - "src/backend/tests/unit/api/v1/test_flows.py::test_read_basic_examples": 2.4828928760252893, - "src/backend/tests/unit/api/v1/test_flows.py::test_read_flow": 3.059793581982376, - "src/backend/tests/unit/api/v1/test_flows.py::test_read_flows": 2.643098041997291, - "src/backend/tests/unit/api/v1/test_flows.py::test_update_flow": 3.091316417005146, - "src/backend/tests/unit/api/v1/test_folders.py::test_create_folder": 2.5106478340167087, - "src/backend/tests/unit/api/v1/test_folders.py::test_read_folder": 2.872897833964089, - "src/backend/tests/unit/api/v1/test_folders.py::test_read_folders": 13.81805141599034, - "src/backend/tests/unit/api/v1/test_folders.py::test_update_folder": 2.8705523330136202, - "src/backend/tests/unit/api/v1/test_starter_projects.py::test_get_starter_projects": 6.310954792017583, - "src/backend/tests/unit/api/v1/test_store.py::test_check_if_store_is_enabled": 2.451832500024466, - "src/backend/tests/unit/api/v1/test_users.py::test_add_user": 2.3872239180491306, - "src/backend/tests/unit/api/v1/test_users.py::test_delete_user": 3.7696464999753516, - "src/backend/tests/unit/api/v1/test_users.py::test_patch_user": 3.1576102919934783, - "src/backend/tests/unit/api/v1/test_users.py::test_read_all_users": 2.777953166048974, - "src/backend/tests/unit/api/v1/test_users.py::test_read_current_user": 3.352596042008372, - "src/backend/tests/unit/api/v1/test_users.py::test_reset_password": 4.661412834044313, - "src/backend/tests/unit/api/v1/test_validate.py::test_post_validate_code": 12.600838333979482, - "src/backend/tests/unit/api/v1/test_validate.py::test_post_validate_prompt": 4.080253084015567, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable": 2.8897589150292333, + "src/backend/tests/unit/api/test_api_utils.py::test_get_outdated_components": 0.00046070897951722145, + "src/backend/tests/unit/api/test_api_utils.py::test_get_suggestion_message": 0.0004775830893777311, + "src/backend/tests/unit/api/v1/test_api_key.py::test_create_api_key_route": 2.5889793329988606, + "src/backend/tests/unit/api/v1/test_api_key.py::test_create_folder": 5.879420668003149, + "src/backend/tests/unit/api/v1/test_api_key.py::test_delete_api_key_route": 5.08323762496002, + "src/backend/tests/unit/api/v1/test_api_key.py::test_save_store_api_key": 2.5483837079955265, + "src/backend/tests/unit/api/v1/test_endpoints.py::test_get_config": 1.8300487080705352, + "src/backend/tests/unit/api/v1/test_endpoints.py::test_get_version": 15.56689295801334, + "src/backend/tests/unit/api/v1/test_endpoints.py::test_update_component_outputs": 2.663210333965253, + "src/backend/tests/unit/api/v1/test_flows.py::test_create_flow": 4.495548666047398, + "src/backend/tests/unit/api/v1/test_flows.py::test_create_flows": 3.1307485009310767, + "src/backend/tests/unit/api/v1/test_flows.py::test_read_basic_examples": 2.3698979579494335, + "src/backend/tests/unit/api/v1/test_flows.py::test_read_flow": 2.789128624019213, + "src/backend/tests/unit/api/v1/test_flows.py::test_read_flows": 4.866618833038956, + "src/backend/tests/unit/api/v1/test_flows.py::test_update_flow": 2.358723249984905, + "src/backend/tests/unit/api/v1/test_folders.py::test_create_folder": 4.585997875023168, + "src/backend/tests/unit/api/v1/test_folders.py::test_read_folder": 2.081491626042407, + "src/backend/tests/unit/api/v1/test_folders.py::test_read_folders": 2.056147459021304, + "src/backend/tests/unit/api/v1/test_folders.py::test_update_folder": 13.467484833963681, + "src/backend/tests/unit/api/v1/test_starter_projects.py::test_get_starter_projects": 5.260392207012046, + "src/backend/tests/unit/api/v1/test_store.py::test_check_if_store_is_enabled": 1.7977962500299327, + "src/backend/tests/unit/api/v1/test_users.py::test_add_user": 2.418213166005444, + "src/backend/tests/unit/api/v1/test_users.py::test_delete_user": 5.889092375058681, + "src/backend/tests/unit/api/v1/test_users.py::test_patch_user": 2.9018829600536264, + "src/backend/tests/unit/api/v1/test_users.py::test_read_all_users": 2.8212402089848183, + "src/backend/tests/unit/api/v1/test_users.py::test_read_current_user": 2.27289370901417, + "src/backend/tests/unit/api/v1/test_users.py::test_reset_password": 2.837956835050136, + "src/backend/tests/unit/api/v1/test_validate.py::test_post_validate_code": 3.654669084062334, + "src/backend/tests/unit/api/v1/test_validate.py::test_post_validate_prompt": 3.0125097080599517, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable": 1.7783849989646114, "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__Exception": 5.891528583015315, "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__HTTPException": 2.8841335409670137, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__exception": 2.6588852090062574, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__httpexception": 5.15942075100611, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__exception": 4.416810167022049, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__httpexception": 2.779732874012552, "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_alread_exists": 3.690157334029209, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_already_exists": 3.119115791952936, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_and_value_cannot_be_empty": 2.721166625036858, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_cannot_be_empty": 2.68872883397853, - "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_value_cannot_be_empty": 5.387998749996768, - "src/backend/tests/unit/api/v1/test_variable.py::test_delete_variable": 2.845435457973508, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_already_exists": 13.62650291697355, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_and_value_cannot_be_empty": 2.4213992079603486, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_name_cannot_be_empty": 2.686067708011251, + "src/backend/tests/unit/api/v1/test_variable.py::test_create_variable__variable_value_cannot_be_empty": 2.3703256670269184, + "src/backend/tests/unit/api/v1/test_variable.py::test_delete_variable": 1.8349529590341263, "src/backend/tests/unit/api/v1/test_variable.py::test_delete_variable__Exception": 3.1565893749939278, - "src/backend/tests/unit/api/v1/test_variable.py::test_delete_variable__exception": 2.868247667007381, - "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables": 1.9514174170326442, - "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables__": 18.01061195798684, - "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables__empty": 2.1389802519988734, - "src/backend/tests/unit/api/v1/test_variable.py::test_update_variable": 2.798532041022554, + "src/backend/tests/unit/api/v1/test_variable.py::test_delete_variable__exception": 13.154085125017446, + "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables": 2.757411584025249, + "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables__": 3.637667417060584, + "src/backend/tests/unit/api/v1/test_variable.py::test_read_variables__empty": 3.7034704579855315, + "src/backend/tests/unit/api/v1/test_variable.py::test_update_variable": 2.858990293054376, "src/backend/tests/unit/api/v1/test_variable.py::test_update_variable__Exception": 3.202228542009834, - "src/backend/tests/unit/api/v1/test_variable.py::test_update_variable__exception": 3.3005840410187375, - "src/backend/tests/unit/base/load/test_load.py::test_run_flow_from_json_params": 0.0005697910091839731, + "src/backend/tests/unit/api/v1/test_variable.py::test_update_variable__exception": 4.347305501054507, + "src/backend/tests/unit/base/load/test_load.py::test_run_flow_from_json_params": 0.0014367500552907586, "src/backend/tests/unit/base/models/test_model_constants.py::test_provider_names": 0.024663168034749106, "src/backend/tests/unit/base/tools/test_component_tool.py::test_component_tool": 0.04467487393412739, - "src/backend/tests/unit/base/tools/test_component_toolkit.py::test_component_tool": 0.0036660420009866357, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_end_event": 0.0011566249886527658, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_start_event": 0.0013513749872799963, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_stream_event": 0.004259041015757248, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_empty_data": 0.0018064170144498348, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_no_output": 0.0012533750268630683, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_with_empty_return_values": 0.0019234160427004099, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_with_output": 0.0020586239988915622, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_start_no_input": 0.0024902090372052044, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_start_with_input": 0.006654792028712109, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_stream_no_output": 0.0039025000005494803, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_stream_with_output": 0.002290792006533593, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_end": 0.003109834040515125, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_error": 0.0034181249793618917, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_start": 0.002146375976735726, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_multiple_events": 0.0022595410118810833, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_end_event": 0.004264666000381112, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_error_event": 0.0018483739986550063, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_start_event": 0.0027927509509027004, - "src/backend/tests/unit/components/agents/test_agent_events.py::test_unknown_event": 0.006411709007807076, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_correctly_builds_output_model": 0.0020538749813567847, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_empty_output_schema": 0.0015370839973911643, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_handles_multiple_outputs": 0.0015619579935446382, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_invalid_llm_config": 0.0013708329934161156, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_invalid_output_schema_type": 0.005455999984405935, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_large_input_value": 0.002270625001983717, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_nested_output_schema": 0.00645133201032877, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_raises_value_error_for_unsupported_language_model": 0.0014085009752307087, - "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_successful_structured_output_generation_with_patch_with_config": 0.010007459030020982, + "src/backend/tests/unit/base/tools/test_component_toolkit.py::test_component_tool": 0.1196131250471808, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_end_event": 0.0031461670296266675, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_start_event": 0.41959074995247647, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_chain_stream_event": 0.003502250008750707, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_empty_data": 0.003317043010611087, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_no_output": 0.0031987499678507447, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_with_empty_return_values": 0.0031257080263458192, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_end_with_output": 0.002732874942012131, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_start_no_input": 0.0035242490121163428, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_start_with_input": 0.01647449895972386, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_stream_no_output": 0.004321499960497022, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_chain_stream_with_output": 0.0033161240280605853, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_end": 0.0034351240028627217, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_error": 0.0045179169974289834, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_handle_on_tool_start": 0.004680416022893041, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_multiple_events": 0.003887208004016429, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_end_event": 0.002465625002514571, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_error_event": 0.00482704205205664, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_tool_start_event": 0.005946709017734975, + "src/backend/tests/unit/components/agents/test_agent_events.py::test_unknown_event": 0.002935541037004441, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_correctly_builds_output_model": 0.0057195828994736075, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_empty_output_schema": 0.0016070419223979115, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_handles_multiple_outputs": 0.003055208013392985, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_invalid_llm_config": 0.0011500419932417572, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_invalid_output_schema_type": 0.0012654169695451856, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_large_input_value": 0.0019090840360149741, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_nested_output_schema": 0.0024119180161505938, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_raises_value_error_for_unsupported_language_model": 0.0017231259844265878, + "src/backend/tests/unit/components/helpers/test_structured_output_component.py::TestStructuredOutputComponent::test_successful_structured_output_generation_with_patch_with_config": 0.009122917021159083, "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_build_model": 0.0020211669616401196, "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_get_model_failure": 0.0068002091138623655, "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_get_model_success": 0.015780292043928057, @@ -154,542 +154,602 @@ "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_update_build_config_mirostat_disabled": 0.0013394170091487467, "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_update_build_config_mirostat_enabled": 0.0016756660188548267, "src/backend/tests/unit/components/models/test_ChatOllama_component.py::test_update_build_config_model_name": 0.0062951669679023325, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_build_model": 0.06435449997661635, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_get_model_failure": 0.015792125021107495, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_get_model_success": 0.02274316700641066, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_keep_alive": 0.0018102920148521662, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_mirostat_disabled": 0.0023359160113614053, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_mirostat_enabled": 0.0016359589935746044, - "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_model_name": 0.014772041962714866, - "src/backend/tests/unit/components/models/test_huggingface.py::test_huggingface_inputs": 0.0027930420183110982, - "src/backend/tests/unit/components/prompts/test_prompt_component.py::TestPromptComponent::test_post_code_processing": 0.0038275000115390867, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_build_data": 0.003583957994123921, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_get_data": 0.0006846240139566362, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_update_build_config": 0.003126081981463358, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_update_build_config_exceed_limit": 0.00282641698140651, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_validate_text_key_invalid": 0.0006683329702354968, - "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_validate_text_key_valid": 0.0005890000029467046, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_build_data": 0.00905175000661984, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_get_data": 0.0008992909861262888, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_update_build_config": 0.0008795840258244425, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_update_build_config_exceed_limit": 0.0008729180262889713, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_validate_text_key_invalid": 0.0014421249798033386, - "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_validate_text_key_valid": 0.0019457080052234232, - "src/backend/tests/unit/components/tools/test_python_repl_tool.py::test_python_repl_tool_template": 0.013226875016698614, - "src/backend/tests/unit/components/tools/test_yfinance_tool.py::test_yfinance_tool_template": 0.018900500988820568, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_build_model": 0.05815512494882569, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_get_model_failure": 0.023584623995702714, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_get_model_success": 0.021688584005460143, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_keep_alive": 0.003615666995756328, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_mirostat_disabled": 0.0030736250337213278, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_mirostat_enabled": 0.0017204579780809581, + "src/backend/tests/unit/components/models/test_chatollama_component.py::test_update_build_config_model_name": 0.018433375051245093, + "src/backend/tests/unit/components/models/test_huggingface.py::test_huggingface_inputs": 0.001714667014311999, + "src/backend/tests/unit/components/prompts/test_prompt_component.py::TestPromptComponent::test_post_code_processing": 0.0015109580126591027, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_build_data": 0.0016140410443767905, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_get_data": 0.0008367500267922878, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_update_build_config": 0.001162625034339726, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_update_build_config_exceed_limit": 0.005139043089002371, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_validate_text_key_invalid": 0.0006456660339608788, + "src/backend/tests/unit/components/prototypes/test_create_data_component.py::test_validate_text_key_valid": 0.0006595409940928221, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_build_data": 0.006239999027457088, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_get_data": 0.0011950000771321356, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_update_build_config": 0.0019992499728687108, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_update_build_config_exceed_limit": 0.002255084051284939, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_validate_text_key_invalid": 0.000936791009735316, + "src/backend/tests/unit/components/prototypes/test_update_data_component.py::test_validate_text_key_valid": 0.0009394589578732848, + "src/backend/tests/unit/components/tools/test_python_repl_tool.py::test_python_repl_tool_template": 0.011357625015079975, + "src/backend/tests/unit/components/tools/test_yfinance_tool.py::test_yfinance_tool_template": 0.011375251051504165, "src/backend/tests/unit/custom/component/test_component_to_tool.py::test_component_to_tool": 0.019733334018383175, "src/backend/tests/unit/custom/component/test_component_to_tool.py::test_component_to_tool_has_no_component_as_tool": 0.0017144169833045453, - "src/backend/tests/unit/custom/component/test_component_to_tool.py::test_component_to_toolkit": 0.004005042021162808, - "src/backend/tests/unit/custom/component/test_componet_set_functionality.py::test_set_with_message_text_input_list": 0.000499167013913393, - "src/backend/tests/unit/custom/component/test_componet_set_functionality.py::test_set_with_mixed_list_input": 0.001747208007145673, - "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_component": 0.002123998972820118, - "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_invalid_output": 0.001979833992663771, - "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_required_inputs": 0.002396792027866468, - "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_required_inputs_various_components": 0.009595500014256686, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_non_registered_callback": 0.00271520804380998, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_non_registered_event_callback_with_recommended_fix": 0.000321749976137653, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_registered_event_callback": 0.00027216700254939497, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_event_id_uniqueness_with_await": 0.0046503749617841095, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_handling_large_number_of_events": 0.0007093740277923644, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_performance_impact_frequent_registrations": 0.0014965849986765534, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_queue_receives_correct_event_data_format": 0.0016478759935125709, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_empty_name": 0.00039995700353756547, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_invalid_name_fixed": 0.00032745901262387633, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_valid_name_and_callback_with_mock_callback": 0.0011077910021413118, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_valid_name_and_no_callback": 0.0002632910036481917, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_without_event_type_argument_fixed": 0.000403207988711074, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_complex_data": 0.005210292001720518, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_none_data": 0.00034720796975307167, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_valid_type_and_data_asyncio_plugin": 0.004445290978765115, - "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_thread_safety_accessing_events_dictionary": 0.003621417039539665, - "src/backend/tests/unit/exceptions/test_api.py::test_api_exception": 0.0023849170247558504, - "src/backend/tests/unit/exceptions/test_api.py::test_api_exception_no_flow": 0.0002716669987421483, - "src/backend/tests/unit/graph/edge/test_edge_base.py::test_edge_raises_error_on_invalid_target_handle": 0.029266957979416475, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_and_assign_values_fails": 0.002811791026033461, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_fields_from_kwargs": 0.0006561249902006239, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_invalid_callable": 0.0003463329921942204, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_valid_return_type_annotations": 0.0036897089739795774, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_with_multiple_components": 0.006683750980300829, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_with_pydantic_field": 0.0024318750365637243, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_default_model_name_to_state": 0.0006157919997349381, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_graph_functional_start_state_update": 1.8422710000013467, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_handle_empty_kwargs_gracefully": 0.0004757070273626596, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_raise_typeerror_for_invalid_field_type_in_tuple": 0.00041845798841677606, + "src/backend/tests/unit/custom/component/test_component_to_tool.py::test_component_to_toolkit": 0.004081916995346546, + "src/backend/tests/unit/custom/component/test_componet_set_functionality.py::test_set_with_message_text_input_list": 0.0017268330557271838, + "src/backend/tests/unit/custom/component/test_componet_set_functionality.py::test_set_with_mixed_list_input": 0.004446917038876563, + "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_component": 0.0015936249983496964, + "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_invalid_output": 0.0032142079435288906, + "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_required_inputs": 0.0009162090136669576, + "src/backend/tests/unit/custom/custom_component/test_component.py::test_set_required_inputs_various_components": 0.009080707968678325, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_build_results": 1.522718749998603, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_error_handling": 4.2030872499453835, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_logging": 1.9351595000480302, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_message_sending": 11.93795562494779, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_streaming_message": 1.8019379999605007, + "src/backend/tests/unit/custom/custom_component/test_component_events.py::test_component_tool_output": 1.8185450420132838, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_custom_update": 0.0008805410470813513, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_invalid_output": 0.000512125960085541, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_output_validation": 0.002503083029296249, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_tool_mode": 0.0013509579584933817, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_with_existing_tool_output": 0.0017645410262048244, + "src/backend/tests/unit/custom/custom_component/test_update_outputs.py::TestComponentOutputs::test_run_and_validate_update_outputs_with_multiple_outputs": 0.0005928330938331783, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_non_registered_callback": 0.00044916599290445447, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_non_registered_event_callback_with_recommended_fix": 0.0003390010679140687, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_accessing_registered_event_callback": 0.00024991598911583424, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_event_id_uniqueness_with_await": 0.0026247500209137797, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_handling_large_number_of_events": 0.0006205420941114426, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_performance_impact_frequent_registrations": 0.0012078340514563024, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_queue_receives_correct_event_data_format": 0.00462833303026855, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_empty_name": 0.00041325093479827046, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_invalid_name_fixed": 0.00030162499751895666, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_valid_name_and_callback_with_mock_callback": 0.0013502090005204082, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_with_valid_name_and_no_callback": 0.0002652100520208478, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_register_event_without_event_type_argument_fixed": 0.002235958003439009, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_complex_data": 0.004761000047437847, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_none_data": 0.0002628749352879822, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_sending_event_with_valid_type_and_data_asyncio_plugin": 0.007096707937307656, + "src/backend/tests/unit/events/test_event_manager.py::TestEventManager::test_thread_safety_accessing_events_dictionary": 0.008751457964535803, + "src/backend/tests/unit/exceptions/test_api.py::test_api_exception": 0.004037750011775643, + "src/backend/tests/unit/exceptions/test_api.py::test_api_exception_no_flow": 0.0003051239182241261, + "src/backend/tests/unit/graph/edge/test_edge_base.py::test_edge_raises_error_on_invalid_target_handle": 0.028969040955416858, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_and_assign_values_fails": 0.002509708981961012, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_fields_from_kwargs": 0.0015128339873626828, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_invalid_callable": 0.001136915001552552, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_model_with_valid_return_type_annotations": 0.003671207930892706, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_with_multiple_components": 0.0030033339862711728, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_create_with_pydantic_field": 0.0027249569538980722, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_default_model_name_to_state": 0.0006715419585816562, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_graph_functional_start_state_update": 0.0040702500264160335, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_handle_empty_kwargs_gracefully": 0.0004774159751832485, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_raise_typeerror_for_invalid_field_type_in_tuple": 0.0004116260097362101, "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_raise_valueerror_for_invalid_field_type_in_tuple": 0.00342700001783669, - "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_raise_valueerror_for_unsupported_value_types": 0.00033762500970624387, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph": 0.04718491598032415, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional": 0.044066291011404246, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_async_start": 0.07147908501792699, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_start": 0.08302408302552067, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_start_end": 0.283143915963592, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_not_prepared": 0.010042542009614408, + "src/backend/tests/unit/graph/graph/state/test_state_model.py::TestCreateStateModel::test_raise_valueerror_for_unsupported_value_types": 0.00034600100480020046, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph": 1.8664495000848547, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional": 0.07218241697410122, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_async_start": 0.11505883297650144, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_start": 1.4226566250436008, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_functional_start_end": 0.030356583010870963, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_not_prepared": 0.037500042002648115, "src/backend/tests/unit/graph/graph/test_base.py::test_graph_set_with_invalid_component": 0.0009155830484814942, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_set_with_valid_component": 0.00016604101983830333, - "src/backend/tests/unit/graph/graph/test_base.py::test_graph_with_edge": 1.877900249994127, - "src/backend/tests/unit/graph/graph/test_callback_graph.py::test_callback_graph": 0.1566271659976337, - "src/backend/tests/unit/graph/graph/test_cycles.py::test_cycle_in_graph": 0.8313525839766953, - "src/backend/tests/unit/graph/graph/test_cycles.py::test_cycle_in_graph_max_iterations": 0.4029107080132235, - "src/backend/tests/unit/graph/graph/test_cycles.py::test_that_outputs_cache_is_set_to_false_in_cycle": 0.0181315419904422, - "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_functional_start_graph_state_update": 0.08090525001171045, - "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model": 0.04794704099185765, - "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model_json_schema": 0.00019312501535750926, - "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model_serialization": 0.08433204202447087, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_add_to_vertices_being_run": 0.0002514169900678098, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_are_all_predecessors_fulfilled": 0.00024591703549958766, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_are_all_predecessors_fulfilled__wrong": 0.0002656250144354999, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_build_run_map": 0.00029349897522479296, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict": 0.00028166701667942107, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_run_map__bad_case": 0.00031425003544427454, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_run_predecessors__bad_case": 0.0002891240001190454, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_vertices_being_run__bad_case": 0.0002889989991672337, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_vertices_to_run__bad_case": 0.00026012398302555084, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable": 0.00027954200049862266, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_is_active": 0.0002572920056991279, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_run_predecessors": 0.00025616594939492643, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_vertices_to_run": 0.00025400103186257184, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_pickle": 0.0010155829950235784, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_remove_from_predecessors": 0.00026116601657122374, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_remove_vertex_from_runnables": 0.0002833330072462559, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_to_dict": 0.00034229198354296386, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_run_state": 0.000567584007512778, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_vertex_run_state": 0.0012253749882802367, - "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_vertex_run_state__bad_case": 0.0005317910108715296, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_detects_cycles_in_simple_graph": 0.0005234569835010916, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_disconnected_components": 0.0002504580479580909, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_duplicate_edges": 0.00023949999012984335, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_identifies_multiple_cycles": 0.000622916966676712, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_large_graphs_efficiency": 0.0008130010101012886, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_mixed_data_types_in_edges": 0.0005429990123957396, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_multiple_edges_between_same_nodes": 0.0002772510051727295, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_no_cycles_present": 0.0004898749757558107, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_nodes_with_no_incoming_edges": 0.00039154099067673087, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_nodes_with_no_outgoing_edges": 0.0005313339934218675, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_self_loops": 0.00022566699772141874, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_single_node_no_edges": 0.00027462499565444887, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_detects_cycle_in_simple_graph": 0.000253666948992759, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_disconnected_components": 0.0005935000081080943, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_duplicate_edges": 0.0003236250195186585, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_empty_edges_list": 0.00021675098105333745, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_identifies_first_cycle": 0.0002397919597569853, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_large_graph_efficiency": 0.0010579169902484864, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_multiple_cycles": 0.0002637499710544944, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_multiple_edges_between_same_nodes": 0.0007334169931709766, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_nodes_with_no_outgoing_edges": 0.005420248984592035, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_returns_none_when_no_cycle": 0.00028145898249931633, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_self_loop_cycle": 0.00024320799275301397, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_single_node_no_edges": 0.0002377079799771309, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_correctly_identify_and_return_vertices_in_single_cycle": 0.0005435420025605708, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_detect_cycles_simple_graph": 0.0008502089767716825, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_duplicate_edges_fixed_fixed": 0.0004885399830527604, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_empty_edges": 0.001004458958050236, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_large_graphs_efficiently": 0.00045845797285437584, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_no_outgoing_edges": 0.0005061670090071857, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_self_loops": 0.0005978340050205588, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_single_cycle": 0.00229016799130477, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[0]": 0.00045783500536344945, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[1]": 0.0005696249718312174, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[2]": 0.00086766600725241, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[3]": 0.00041145901195704937, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[4]": 0.00036483400617726147, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_no_cycles_empty_list": 0.0006227920239325613, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_no_modification_of_input_edges_list": 0.00046537601156160235, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_non_string_vertex_ids": 0.0003740839892998338, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_process_disconnected_components": 0.0017938749806489795, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_return_vertices_involved_in_multiple_cycles": 0.000953373993979767, - "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_single_vertex_no_edges": 0.0003070829843636602, - "src/backend/tests/unit/graph/graph/test_utils.py::test_get_successors_a": 0.00045399999362416565, - "src/backend/tests/unit/graph/graph/test_utils.py::test_get_successors_z": 0.0002406249986961484, - "src/backend/tests/unit/graph/graph/test_utils.py::test_has_cycle": 0.0002603339671622962, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_a": 0.00032162602292373776, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_g": 0.0014117909886408597, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_h": 0.0015360000252258033, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_invalid_vertex": 0.00039154099067673087, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_m": 0.0006247500132303685, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_n_is_start": 0.0002734160516411066, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_t": 0.00027449996559880674, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_x": 0.00029912503669038415, - "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_z": 0.000425292004365474, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_set_with_valid_component": 0.00019387598149478436, + "src/backend/tests/unit/graph/graph/test_base.py::test_graph_with_edge": 0.1054259579977952, + "src/backend/tests/unit/graph/graph/test_callback_graph.py::test_callback_graph": 0.00015587499365210533, + "src/backend/tests/unit/graph/graph/test_cycles.py::test_conditional_router_max_iterations": 0.041235500015318394, + "src/backend/tests/unit/graph/graph/test_cycles.py::test_cycle_in_graph": 0.000267457973677665, + "src/backend/tests/unit/graph/graph/test_cycles.py::test_cycle_in_graph_max_iterations": 0.037366332951933146, + "src/backend/tests/unit/graph/graph/test_cycles.py::test_that_outputs_cache_is_set_to_false_in_cycle": 0.010305042087566108, + "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_functional_start_graph_state_update": 0.018378626031335443, + "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model": 0.02349175198469311, + "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model_json_schema": 0.00039483298314735293, + "src/backend/tests/unit/graph/graph/test_graph_state_model.py::test_graph_state_model_serialization": 0.018142791057471186, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_add_to_vertices_being_run": 0.0002476670197211206, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_are_all_predecessors_fulfilled": 0.0011267910012975335, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_are_all_predecessors_fulfilled__wrong": 0.0003554169670678675, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_build_run_map": 0.00026812596479430795, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict": 0.000963873986620456, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_run_map__bad_case": 0.001472541014663875, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_run_predecessors__bad_case": 0.0010348749347031116, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_vertices_being_run__bad_case": 0.001993166981264949, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_from_dict_without_vertices_to_run__bad_case": 0.0003054160042665899, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable": 0.0002876249491237104, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_is_active": 0.00024312501773238182, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_run_predecessors": 0.0005400410736910999, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_is_vertex_runnable__wrong_vertices_to_run": 0.0014861250529065728, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_pickle": 0.0011441680253483355, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_remove_from_predecessors": 0.00044087396236136556, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_remove_vertex_from_runnables": 0.0005044579738751054, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_to_dict": 0.0017160000279545784, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_run_state": 0.0003283339901827276, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_vertex_run_state": 0.0005591660155914724, + "src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py::test_update_vertex_run_state__bad_case": 0.0004551669699139893, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_detects_cycles_in_simple_graph": 0.00026724993949756026, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_disconnected_components": 0.0002821669913828373, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_duplicate_edges": 0.00021912500960752368, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_identifies_multiple_cycles": 0.00025812501553446054, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_large_graphs_efficiency": 0.0007382910698652267, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_mixed_data_types_in_edges": 0.00021845696028321981, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_multiple_edges_between_same_nodes": 0.0002460830728523433, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_no_cycles_present": 0.0002756660105660558, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_nodes_with_no_incoming_edges": 0.00021979294251650572, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_nodes_with_no_outgoing_edges": 0.0003090410609729588, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_self_loops": 0.000253000995144248, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindAllCycleEdges::test_single_node_no_edges": 0.00026000093203037977, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_detects_cycle_in_simple_graph": 0.00045262498315423727, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_disconnected_components": 0.00022062496282160282, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_duplicate_edges": 0.0007739180000498891, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_empty_edges_list": 0.0002501250128261745, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_identifies_first_cycle": 0.000237041967920959, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_large_graph_efficiency": 0.0009104579803533852, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_multiple_cycles": 0.0002475010114721954, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_multiple_edges_between_same_nodes": 0.00023878994397819042, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_nodes_with_no_outgoing_edges": 0.00029970903415232897, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_returns_none_when_no_cycle": 0.00024695793399587274, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_self_loop_cycle": 0.000244333001319319, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleEdge::test_single_node_no_edges": 0.00023858301574364305, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_correctly_identify_and_return_vertices_in_single_cycle": 0.00028429104713723063, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_detect_cycles_simple_graph": 0.0007923329831101, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_duplicate_edges_fixed_fixed": 0.000366666994523257, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_empty_edges": 0.00023050099844112992, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_large_graphs_efficiently": 0.0004664169973693788, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_no_outgoing_edges": 0.0002648750669322908, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_self_loops": 0.0009492079843766987, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_single_cycle": 0.0002994999522343278, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[0]": 0.00038199900882318616, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[1]": 0.0008092499920167029, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[2]": 0.0015593329444527626, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[3]": 0.0006993749993853271, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_handle_two_inputs_in_cycle[4]": 0.00036212499253451824, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_no_cycles_empty_list": 0.00025908404495567083, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_no_modification_of_input_edges_list": 0.0003286660648882389, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_non_string_vertex_ids": 0.00036191800609230995, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_process_disconnected_components": 0.0005638339789584279, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_return_vertices_involved_in_multiple_cycles": 0.0003491259994916618, + "src/backend/tests/unit/graph/graph/test_utils.py::TestFindCycleVertices::test_single_vertex_no_edges": 0.00023916596546769142, + "src/backend/tests/unit/graph/graph/test_utils.py::test_get_successors_a": 0.0002698740572668612, + "src/backend/tests/unit/graph/graph/test_utils.py::test_get_successors_z": 0.0019688329775817692, + "src/backend/tests/unit/graph/graph/test_utils.py::test_has_cycle": 0.0003182920045219362, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_a": 0.0008160430006682873, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_g": 0.001312917040195316, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_h": 0.000272500969003886, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_invalid_vertex": 0.0019030409748665988, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_m": 0.0005449170130304992, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_n_is_start": 0.0005516259698197246, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_t": 0.0007446670206263661, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_x": 0.00027004204457625747, + "src/backend/tests/unit/graph/graph/test_utils.py::test_sort_up_to_vertex_z": 0.00029762403573840857, "src/backend/tests/unit/graph/test_graph.py::test_build_edges": 0.001086625037714839, "src/backend/tests/unit/graph/test_graph.py::test_build_nodes": 0.0012113330303691328, "src/backend/tests/unit/graph/test_graph.py::test_build_params": 0.00745550001738593, "src/backend/tests/unit/graph/test_graph.py::test_circular_dependencies": 0.0011518750106915832, - "src/backend/tests/unit/graph/test_graph.py::test_find_last_node": 0.0008694580174051225, + "src/backend/tests/unit/graph/test_graph.py::test_find_last_node": 0.002307749993633479, "src/backend/tests/unit/graph/test_graph.py::test_get_node": 3.6276886249543168, "src/backend/tests/unit/graph/test_graph.py::test_get_node_neighbors_basic": 0.0015942919999361038, "src/backend/tests/unit/graph/test_graph.py::test_get_root_vertex": 0.00336533400695771, "src/backend/tests/unit/graph/test_graph.py::test_get_vertices_with_target": 0.0015001240535639226, "src/backend/tests/unit/graph/test_graph.py::test_graph_structure": 3.660518125980161, - "src/backend/tests/unit/graph/test_graph.py::test_invalid_node_types": 0.011996416025795043, + "src/backend/tests/unit/graph/test_graph.py::test_invalid_node_types": 0.026237833022605628, "src/backend/tests/unit/graph/test_graph.py::test_matched_type": 0.0011828330461867154, "src/backend/tests/unit/graph/test_graph.py::test_pickle_graph": 0.025576499931048602, - "src/backend/tests/unit/graph/test_graph.py::test_process_flow": 0.001116333995014429, - "src/backend/tests/unit/graph/test_graph.py::test_process_flow_one_group": 0.0024604159989394248, - "src/backend/tests/unit/graph/test_graph.py::test_process_flow_vector_store_grouped": 0.002910791983595118, - "src/backend/tests/unit/graph/test_graph.py::test_serialize_graph": 0.028078250004909933, - "src/backend/tests/unit/graph/test_graph.py::test_set_new_target_handle": 0.0002134149835910648, - "src/backend/tests/unit/graph/test_graph.py::test_ungroup_node": 0.0012817920360248536, - "src/backend/tests/unit/graph/test_graph.py::test_update_source_handle": 0.0002569159842096269, - "src/backend/tests/unit/graph/test_graph.py::test_update_target_handle_proxy": 0.00022320696734823287, - "src/backend/tests/unit/graph/test_graph.py::test_update_template": 0.0003257080097682774, + "src/backend/tests/unit/graph/test_graph.py::test_process_flow": 0.001180750085040927, + "src/backend/tests/unit/graph/test_graph.py::test_process_flow_one_group": 0.00234074896434322, + "src/backend/tests/unit/graph/test_graph.py::test_process_flow_vector_store_grouped": 0.0031264160061255097, + "src/backend/tests/unit/graph/test_graph.py::test_serialize_graph": 0.034727626014500856, + "src/backend/tests/unit/graph/test_graph.py::test_set_new_target_handle": 0.0003109159297309816, + "src/backend/tests/unit/graph/test_graph.py::test_ungroup_node": 0.0010227089514955878, + "src/backend/tests/unit/graph/test_graph.py::test_update_source_handle": 0.00022512488067150116, + "src/backend/tests/unit/graph/test_graph.py::test_update_target_handle_proxy": 0.0004344579647295177, + "src/backend/tests/unit/graph/test_graph.py::test_update_template": 0.0004319589934311807, "src/backend/tests/unit/graph/test_graph.py::test_validate_edges": 0.0010510420543141663, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_correctly_accesses_descriptions_recommended_fix": 0.0016275829984806478, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_create_model_from_valid_schema": 0.0014810829889029264, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handle_empty_schema": 0.0005666660144925117, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handle_large_schemas_efficiently": 0.0009790830372367054, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handles_multiple_fields_fixed_with_instance_check": 0.0010135829797945917, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_manages_unknown_field_types": 0.0004922070074826479, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_nested_list_and_dict_types_handling": 0.0006957079458516091, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_no_duplicate_field_names_fixed_fixed": 0.0024841679842211306, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_process_schema_missing_optional_keys_updated": 0.0008602509915363044, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_raises_error_for_invalid_input_different_exception_with_specific_exception": 0.000486082979477942, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_returns_valid_model_class": 0.0011024580162484199, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_schema_fields_with_none_default": 0.0012400819978211075, - "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_supports_single_and_multiple_type_annotations": 0.0009464170143473893, - "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot": 12.308336541987956, - "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot_dump_components_and_edges": 0.013247583963675424, - "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot_dump_structure": 0.029330083023523912, - "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag": 0.8347162929712795, - "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_add": 0.10416683397488669, - "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_dump": 0.05323183300788514, - "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_dump_components_and_edges": 0.03717525000683963, - "src/backend/tests/unit/inputs/test_inputs.py::test_bool_input_invalid": 0.0002849999873433262, - "src/backend/tests/unit/inputs/test_inputs.py::test_bool_input_valid": 0.0005054579814895988, - "src/backend/tests/unit/inputs/test_inputs.py::test_code_input_valid": 0.00043837502016685903, - "src/backend/tests/unit/inputs/test_inputs.py::test_data_input_valid": 0.00024120899615809321, - "src/backend/tests/unit/inputs/test_inputs.py::test_dict_input_invalid": 0.0002684170030988753, - "src/backend/tests/unit/inputs/test_inputs.py::test_dict_input_valid": 0.0002647079818416387, - "src/backend/tests/unit/inputs/test_inputs.py::test_dropdown_input_invalid": 0.0007044169760774821, - "src/backend/tests/unit/inputs/test_inputs.py::test_dropdown_input_valid": 0.0002592089876998216, - "src/backend/tests/unit/inputs/test_inputs.py::test_file_input_valid": 0.00025304200244136155, - "src/backend/tests/unit/inputs/test_inputs.py::test_float_input_invalid": 0.0003855409740936011, - "src/backend/tests/unit/inputs/test_inputs.py::test_float_input_valid": 0.0002572910161688924, - "src/backend/tests/unit/inputs/test_inputs.py::test_handle_input_invalid": 0.0002854590129572898, - "src/backend/tests/unit/inputs/test_inputs.py::test_handle_input_valid": 0.00029662498855032027, - "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_comprehensive": 0.0003992489946540445, - "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_invalid": 0.0006109160312917084, - "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_valid": 0.0003387500182725489, - "src/backend/tests/unit/inputs/test_inputs.py::test_int_input_invalid": 0.0002683750062715262, - "src/backend/tests/unit/inputs/test_inputs.py::test_int_input_valid": 0.000272165983915329, - "src/backend/tests/unit/inputs/test_inputs.py::test_message_text_input_invalid": 0.0002991660439874977, - "src/backend/tests/unit/inputs/test_inputs.py::test_message_text_input_valid": 0.0003568749816622585, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_input_invalid": 0.00045229194802232087, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_input_valid": 0.0004132079775445163, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_secret_input_invalid": 0.00030291700386442244, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_secret_input_valid": 0.0005078340182080865, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiselect_input_invalid": 0.0002864569833036512, - "src/backend/tests/unit/inputs/test_inputs.py::test_multiselect_input_valid": 0.000492626044433564, - "src/backend/tests/unit/inputs/test_inputs.py::test_nested_dict_input_invalid": 0.0004319580039009452, - "src/backend/tests/unit/inputs/test_inputs.py::test_nested_dict_input_valid": 0.0002699579927138984, - "src/backend/tests/unit/inputs/test_inputs.py::test_prompt_input_valid": 0.001585791993420571, - "src/backend/tests/unit/inputs/test_inputs.py::test_secret_str_input_invalid": 0.0002860829990822822, - "src/backend/tests/unit/inputs/test_inputs.py::test_secret_str_input_valid": 0.0002555000246502459, - "src/backend/tests/unit/inputs/test_inputs.py::test_str_input_invalid": 0.0003487509966362268, - "src/backend/tests/unit/inputs/test_inputs.py::test_str_input_valid": 0.0003342909913044423, - "src/backend/tests/unit/inputs/test_inputs.py::test_table_input_invalid": 0.0003617490001488477, - "src/backend/tests/unit/inputs/test_inputs.py::test_table_input_valid": 0.0006680410006083548, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_complex_nested_structures_handling": 0.0005604999896604568, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_default_values_assignment": 0.0004906250105705112, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_default_values_for_non_required_fields": 0.0007022500212769955, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_empty_list_of_inputs": 0.0003892499953508377, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_field_types_conversion": 0.001157874008640647, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_fields_creation_with_correct_types_and_attributes": 0.0009764990245457739, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_correctly_accesses_descriptions_recommended_fix": 0.0006701659876853228, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_create_model_from_valid_schema": 0.0010890840785577893, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handle_empty_schema": 0.00046241702511906624, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handle_large_schemas_efficiently": 0.0006454579415731132, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_handles_multiple_fields_fixed_with_instance_check": 0.0007467090617865324, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_manages_unknown_field_types": 0.0004999999073334038, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_nested_list_and_dict_types_handling": 0.000673624046612531, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_no_duplicate_field_names_fixed_fixed": 0.001717083971016109, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_process_schema_missing_optional_keys_updated": 0.0008960830164141953, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_raises_error_for_invalid_input_different_exception_with_specific_exception": 0.0002627489739097655, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_returns_valid_model_class": 0.0005503349239006639, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_schema_fields_with_none_default": 0.00063270702958107, + "src/backend/tests/unit/helpers/test_base_model_from_schema.py::TestBuildModelFromSchema::test_supports_single_and_multiple_type_annotations": 0.0007200430845841765, + "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot": 12.820865958055947, + "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot_dump_components_and_edges": 0.012427791021764278, + "src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py::test_memory_chatbot_dump_structure": 0.02846895798575133, + "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag": 1.9493195419781841, + "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_add": 0.06917400000384077, + "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_dump": 0.037611624982673675, + "src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py::test_vector_store_rag_dump_components_and_edges": 0.03499108296819031, + "src/backend/tests/unit/inputs/test_inputs.py::test_bool_input_invalid": 0.0002666670479811728, + "src/backend/tests/unit/inputs/test_inputs.py::test_bool_input_valid": 0.0002622499596327543, + "src/backend/tests/unit/inputs/test_inputs.py::test_code_input_valid": 0.00045866600703448057, + "src/backend/tests/unit/inputs/test_inputs.py::test_data_input_valid": 0.0002644999767653644, + "src/backend/tests/unit/inputs/test_inputs.py::test_dict_input_invalid": 0.00023766793310642242, + "src/backend/tests/unit/inputs/test_inputs.py::test_dict_input_valid": 0.0002497490495443344, + "src/backend/tests/unit/inputs/test_inputs.py::test_dropdown_input_invalid": 0.0005181650049053133, + "src/backend/tests/unit/inputs/test_inputs.py::test_dropdown_input_valid": 0.0004622919950634241, + "src/backend/tests/unit/inputs/test_inputs.py::test_file_input_valid": 0.00024066702462732792, + "src/backend/tests/unit/inputs/test_inputs.py::test_float_input_invalid": 0.00033175002317875624, + "src/backend/tests/unit/inputs/test_inputs.py::test_float_input_valid": 0.0013439589529298246, + "src/backend/tests/unit/inputs/test_inputs.py::test_handle_input_invalid": 0.000246831972617656, + "src/backend/tests/unit/inputs/test_inputs.py::test_handle_input_valid": 0.0002542920410633087, + "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_comprehensive": 0.00035108200972899795, + "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_invalid": 0.00032504100818187, + "src/backend/tests/unit/inputs/test_inputs.py::test_instantiate_input_valid": 0.000264250033069402, + "src/backend/tests/unit/inputs/test_inputs.py::test_int_input_invalid": 0.0005710420082323253, + "src/backend/tests/unit/inputs/test_inputs.py::test_int_input_valid": 0.00026408396661281586, + "src/backend/tests/unit/inputs/test_inputs.py::test_message_text_input_invalid": 0.0003577919560484588, + "src/backend/tests/unit/inputs/test_inputs.py::test_message_text_input_valid": 0.00043400004506111145, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_input_invalid": 0.00033308297861367464, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_input_valid": 0.0003004170721396804, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_secret_input_invalid": 0.00037404202157631516, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiline_secret_input_valid": 0.00028283405117690563, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiselect_input_invalid": 0.0002282499335706234, + "src/backend/tests/unit/inputs/test_inputs.py::test_multiselect_input_valid": 0.0002297920291312039, + "src/backend/tests/unit/inputs/test_inputs.py::test_nested_dict_input_invalid": 0.0003780000261031091, + "src/backend/tests/unit/inputs/test_inputs.py::test_nested_dict_input_valid": 0.0003223739913664758, + "src/backend/tests/unit/inputs/test_inputs.py::test_prompt_input_valid": 0.0006935019628144801, + "src/backend/tests/unit/inputs/test_inputs.py::test_secret_str_input_invalid": 0.00028462399495765567, + "src/backend/tests/unit/inputs/test_inputs.py::test_secret_str_input_valid": 0.00033654196886345744, + "src/backend/tests/unit/inputs/test_inputs.py::test_str_input_invalid": 0.0011346670216880739, + "src/backend/tests/unit/inputs/test_inputs.py::test_str_input_valid": 0.000880667008459568, + "src/backend/tests/unit/inputs/test_inputs.py::test_table_input_invalid": 0.00380275008501485, + "src/backend/tests/unit/inputs/test_inputs.py::test_table_input_valid": 0.001983581983949989, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_complex_nested_structures_handling": 0.0030952919623814523, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_default_values_assignment": 0.0005185420159250498, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_default_values_for_non_required_fields": 0.0007797080907039344, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_empty_list_of_inputs": 0.00041016493923962116, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_field_types_conversion": 0.0004856659797951579, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_fields_creation_with_correct_types_and_attributes": 0.000862583052366972, "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_invalid_field_types_handling": 0.0005195839912630618, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_is_list_attribute_processing": 0.0005107079923618585, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_is_list_handling": 0.0009902080055326223, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_missing_attributes_handling": 0.000512915983563289, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_missing_optional_attributes": 0.0004720840079244226, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_mixed_required_optional_fields_processing": 0.0007552909955848008, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_multiple_input_types": 0.001113665959564969, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_non_standard_field_types_handling": 0.0008782910299487412, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_none_default_value_handling": 0.00047404097858816385, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_options_attribute_processing": 0.0015816250233910978, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_options_handling": 0.000650041940389201, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_passing_input_type_directly": 0.00034329103073105216, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_schema_model_creation": 0.000629082991508767, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_single_input_type_conversion": 0.0005375839537009597, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_single_input_type_replica": 0.00046841602306813, - "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_special_characters_in_names_handling": 0.00046883299364708364, - "src/backend/tests/unit/io/test_io_schema.py::test_create_input_schema": 0.0029092089971527457, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_column_with_valid_formatter": 0.0009507070353720337, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_column_without_display_name": 0.00025783199816942215, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_with_type_instead_of_formatter": 0.0006355419754981995, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_default_sortable_filterable": 0.00025133302551694214, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_description_and_default": 0.0002507090102881193, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_explicitly_set_to_enum": 0.0002634989796206355, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_none_when_not_provided": 0.00024824999854899943, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_set_based_on_value": 0.00048520800191909075, - "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_invalid_formatter_raises_value_error": 0.00036833499325439334, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_is_list_attribute_processing": 0.0005015420028939843, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_is_list_handling": 0.0006114579737186432, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_missing_attributes_handling": 0.0008052079356275499, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_missing_optional_attributes": 0.000468374986667186, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_mixed_required_optional_fields_processing": 0.002099290897604078, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_multiple_input_types": 0.0024241250357590616, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_non_standard_field_types_handling": 0.008301167981699109, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_none_default_value_handling": 0.0005369589780457318, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_options_attribute_processing": 0.0006440419820137322, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_options_handling": 0.0006011250079609454, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_passing_input_type_directly": 0.00027875008527189493, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_schema_model_creation": 0.0005466659786179662, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_single_input_type_conversion": 0.0004978319630026817, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_single_input_type_replica": 0.0006945840432308614, + "src/backend/tests/unit/io/test_io_schema.py::TestCreateInputSchema::test_special_characters_in_names_handling": 0.0006890429649502039, + "src/backend/tests/unit/io/test_io_schema.py::test_create_input_schema": 0.001329874969087541, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_column_with_valid_formatter": 0.00028562499210238457, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_column_without_display_name": 0.0002880429965443909, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_create_with_type_instead_of_formatter": 0.00029345706570893526, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_default_sortable_filterable": 0.0007682930445298553, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_description_and_default": 0.0002763750380836427, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_explicitly_set_to_enum": 0.00034366699401289225, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_none_when_not_provided": 0.00028391601517796516, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_formatter_set_based_on_value": 0.00027029094053432345, + "src/backend/tests/unit/io/test_table_schema.py::TestColumn::test_invalid_formatter_raises_value_error": 0.0004301670123822987, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_allow_markdown_override": 0.0002733329893089831, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_initialize_with_empty_contents": 0.00028624996775761247, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_initialize_with_valid_title_and_contents": 0.0007044579833745956, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_invalid_contents_type": 0.0004489150596782565, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_media_url_handling": 0.0002673749695532024, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_serialize_contents": 0.0003351250197738409, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_single_content_conversion": 0.0008065829752013087, + "src/backend/tests/unit/schema/test_content_block.py::TestContentBlock::test_validate_different_content_types": 0.00029950099997222424, + "src/backend/tests/unit/schema/test_content_types.py::TestBaseContent::test_base_content_serialization": 0.0002906660665757954, + "src/backend/tests/unit/schema/test_content_types.py::TestBaseContent::test_base_content_with_duration": 0.00024025002494454384, + "src/backend/tests/unit/schema/test_content_types.py::TestBaseContent::test_base_content_with_header": 0.000263167021330446, + "src/backend/tests/unit/schema/test_content_types.py::TestCodeContent::test_code_content_creation": 0.0003462510067038238, + "src/backend/tests/unit/schema/test_content_types.py::TestCodeContent::test_code_content_without_title": 0.0004203749122098088, + "src/backend/tests/unit/schema/test_content_types.py::TestErrorContent::test_error_content_creation": 0.0007512079901061952, + "src/backend/tests/unit/schema/test_content_types.py::TestErrorContent::test_error_content_optional_fields": 0.0004739170544780791, + "src/backend/tests/unit/schema/test_content_types.py::TestJSONContent::test_json_content_complex_data": 0.00026983401039615273, + "src/backend/tests/unit/schema/test_content_types.py::TestJSONContent::test_json_content_creation": 0.0002479159738868475, + "src/backend/tests/unit/schema/test_content_types.py::TestMediaContent::test_media_content_creation": 0.0003469169605523348, + "src/backend/tests/unit/schema/test_content_types.py::TestMediaContent::test_media_content_without_caption": 0.0003001249278895557, + "src/backend/tests/unit/schema/test_content_types.py::TestTextContent::test_text_content_creation": 0.00026616599643602967, + "src/backend/tests/unit/schema/test_content_types.py::TestTextContent::test_text_content_with_duration": 0.0002679169992916286, + "src/backend/tests/unit/schema/test_content_types.py::TestToolContent::test_tool_content_creation": 0.001486831926740706, + "src/backend/tests/unit/schema/test_content_types.py::TestToolContent::test_tool_content_minimal": 0.00028129201382398605, + "src/backend/tests/unit/schema/test_content_types.py::TestToolContent::test_tool_content_with_error": 0.0016390830860473216, + "src/backend/tests/unit/schema/test_content_types.py::test_content_type_discrimination": 0.00027854100335389376, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_ai_response": 0.0002786249970085919, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_invalid_image_path": 0.0025373749085702, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_missing_required_keys": 0.0003245419356971979, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_with_image": 0.0013750839862041175, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_with_multiple_images": 0.001365667034406215, + "src/backend/tests/unit/schema/test_schema_data.py::TestDataSchema::test_data_to_message_with_text_only": 0.00027658400358632207, "src/backend/tests/unit/schema/test_schema_message.py::test_message_async_prompt_serialization": 0.00209424999775365, - "src/backend/tests/unit/schema/test_schema_message.py::test_message_prompt_serialization": 1.9502639580168761, - "src/backend/tests/unit/services/variable/test_service.py::test_create_variable": 0.004309915995690972, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_from_ai_text": 0.00034754094667732716, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_from_human_text": 0.0012164590298198164, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_prompt_serialization": 1.9019360410165973, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_serialization": 0.0019001259934157133, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_to_lc_without_sender": 0.0017389999702572823, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_with_invalid_image_path": 0.0007534589967690408, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_with_multiple_images": 0.016659082961268723, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_with_single_image": 0.025450084009207785, + "src/backend/tests/unit/schema/test_schema_message.py::test_message_without_sender": 0.0003494169795885682, + "src/backend/tests/unit/services/variable/test_service.py::test_create_variable": 0.02396712393965572, "src/backend/tests/unit/services/variable/test_service.py::test_delete_varaible_by_id": 0.0060262500192038715, - "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable": 0.005314916023053229, + "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable": 0.00510391709394753, "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable__ValueError": 0.0035743750049732625, - "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable__valueerror": 0.004099167010281235, - "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable_by_id": 0.035158875019988045, + "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable__valueerror": 0.0073865000158548355, + "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable_by_id": 0.005353167012799531, "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable_by_id__ValueError": 0.27340612601256, - "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable_by_id__valueerror": 0.0038380000041797757, - "src/backend/tests/unit/services/variable/test_service.py::test_get_variable": 0.005438916006824002, + "src/backend/tests/unit/services/variable/test_service.py::test_delete_variable_by_id__valueerror": 0.0034554169978946447, + "src/backend/tests/unit/services/variable/test_service.py::test_get_variable": 0.006138333003036678, "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__TypeError": 0.00458791694836691, "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__ValueError": 0.003811584028881043, - "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__typeerror": 0.007249707996379584, - "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__valueerror": 0.004023000015877187, - "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__create_and_update": 0.06368604101589881, + "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__typeerror": 0.008321874018292874, + "src/backend/tests/unit/services/variable/test_service.py::test_get_variable__valueerror": 0.006569876044522971, + "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__create_and_update": 0.0552749169874005, "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__donkey": 0.0002315010060556233, - "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__not_found_variable": 0.02503150000120513, - "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__skipping_environment_variable_storage": 0.004007832991192117, - "src/backend/tests/unit/services/variable/test_service.py::test_list_variables": 0.037237207987345755, - "src/backend/tests/unit/services/variable/test_service.py::test_list_variables__empty": 0.003694290993735194, - "src/backend/tests/unit/services/variable/test_service.py::test_update_variable": 0.005910667037824169, + "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__not_found_variable": 0.04962304187938571, + "src/backend/tests/unit/services/variable/test_service.py::test_initialize_user_variables__skipping_environment_variable_storage": 0.0034132919972762465, + "src/backend/tests/unit/services/variable/test_service.py::test_list_variables": 0.008342625049408525, + "src/backend/tests/unit/services/variable/test_service.py::test_list_variables__empty": 0.0035083330585621297, + "src/backend/tests/unit/services/variable/test_service.py::test_update_variable": 0.03663441602839157, "src/backend/tests/unit/services/variable/test_service.py::test_update_variable__ValueError": 0.0036237920285202563, - "src/backend/tests/unit/services/variable/test_service.py::test_update_variable__valueerror": 0.003762916021514684, - "src/backend/tests/unit/services/variable/test_service.py::test_update_variable_fields": 0.005136749998200685, - "src/backend/tests/unit/test_api_key.py::test_create_api_key": 2.9192013339779805, - "src/backend/tests/unit/test_api_key.py::test_delete_api_key": 2.7041595009795856, - "src/backend/tests/unit/test_api_key.py::test_get_api_keys": 13.157999957998982, + "src/backend/tests/unit/services/variable/test_service.py::test_update_variable__valueerror": 0.004020916006993502, + "src/backend/tests/unit/services/variable/test_service.py::test_update_variable_fields": 0.005824209074489772, + "src/backend/tests/unit/test_api_key.py::test_create_api_key": 2.760331876052078, + "src/backend/tests/unit/test_api_key.py::test_delete_api_key": 4.250179124006536, + "src/backend/tests/unit/test_api_key.py::test_get_api_keys": 11.92522079194896, "src/backend/tests/unit/test_cache.py::test_build_graph": 1.1988659180001378, - "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow": 9.863973708997946, - "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow_from_request_data": 18.91173420700943, - "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow_with_frozen_path": 9.679962958034594, - "src/backend/tests/unit/test_cli.py::test_components_path": 0.2105054580315482, - "src/backend/tests/unit/test_cli.py::test_superuser": 0.09048683303990401, - "src/backend/tests/unit/test_custom_component.py::test_build_config_field_keys": 0.00035595896770246327, - "src/backend/tests/unit/test_custom_component.py::test_build_config_field_value_keys": 0.00028820798615925014, - "src/backend/tests/unit/test_custom_component.py::test_build_config_field_values_dict": 0.0002781240036711097, - "src/backend/tests/unit/test_custom_component.py::test_build_config_fields_dict": 0.00042370895971544087, - "src/backend/tests/unit/test_custom_component.py::test_build_config_has_fields": 0.00024316596682183444, - "src/backend/tests/unit/test_custom_component.py::test_build_config_no_code": 0.0019427080114837736, - "src/backend/tests/unit/test_custom_component.py::test_build_config_return_type": 0.0003429159987717867, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_get_tree": 0.0004476240137591958, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_init": 0.0004161669930908829, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_ann_assign": 0.0008608330390416086, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_arg_no_annotation": 0.00046287497389130294, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_arg_with_annotation": 0.00028620800003409386, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_assign": 0.0009192080178763717, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_callable_details_no_args": 0.0020700419845525175, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_classes": 0.00041216504178009927, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_classes_raises": 0.001878582959761843, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_function_def_init": 0.0004060839710291475, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_function_def_not_init": 0.0003549999964889139, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_functions": 0.00028229100280441344, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_global_vars": 0.0003128329699393362, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_imports_import": 0.00035729195224121213, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_imports_importfrom": 0.0002285430091433227, - "src/backend/tests/unit/test_custom_component.py::test_code_parser_syntax_error": 0.001428666990250349, - "src/backend/tests/unit/test_custom_component.py::test_component_code_null_error": 0.001236000971402973, - "src/backend/tests/unit/test_custom_component.py::test_component_get_code_tree": 0.006725500017637387, - "src/backend/tests/unit/test_custom_component.py::test_component_get_code_tree_syntax_error": 0.0024166660150513053, - "src/backend/tests/unit/test_custom_component.py::test_component_get_function_valid": 0.003319748997455463, - "src/backend/tests/unit/test_custom_component.py::test_component_init": 0.00038795798900537193, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_build_not_implemented": 0.0002920420083682984, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_build_template_config": 0.003882499993778765, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_class_template_validation_no_code": 0.0003096660366281867, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_code_tree_syntax_error": 0.0004080829967278987, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function": 0.0003181659849360585, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_args": 0.0018983329937327653, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_args_no_args": 0.0005830420122947544, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_return_type": 0.0009241660009138286, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_return_type_no_return_type": 0.0012073749967385083, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_valid": 0.0010304159950464964, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_main_class_name": 0.0007378339942079037, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_main_class_name_no_main_class": 0.00040337498649023473, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_init": 0.00032387496321462095, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_multiple_outputs": 0.003974582970840856, - "src/backend/tests/unit/test_custom_component.py::test_custom_component_subclass_from_lctoolcomponent": 0.0018310410086996853, + "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow": 8.551071708032396, + "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow_from_request_data": 5.552124626003206, + "src/backend/tests/unit/test_chat_endpoint.py::test_build_flow_with_frozen_path": 5.318790583114605, + "src/backend/tests/unit/test_cli.py::test_components_path": 0.1909987919498235, + "src/backend/tests/unit/test_cli.py::test_superuser": 0.10571425000671297, + "src/backend/tests/unit/test_custom_component.py::test_build_config_field_keys": 0.0003112919512204826, + "src/backend/tests/unit/test_custom_component.py::test_build_config_field_value_keys": 0.00025070906849578023, + "src/backend/tests/unit/test_custom_component.py::test_build_config_field_values_dict": 0.0002822090173140168, + "src/backend/tests/unit/test_custom_component.py::test_build_config_fields_dict": 0.0007648749742656946, + "src/backend/tests/unit/test_custom_component.py::test_build_config_has_fields": 0.00025216699577867985, + "src/backend/tests/unit/test_custom_component.py::test_build_config_no_code": 0.00024991604732349515, + "src/backend/tests/unit/test_custom_component.py::test_build_config_return_type": 0.00036433403147384524, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_get_tree": 0.0003267080173827708, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_init": 0.00029012502636760473, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_ann_assign": 0.00023275002604350448, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_arg_no_annotation": 0.00024983298499137163, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_arg_with_annotation": 0.0003472079406492412, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_assign": 0.0002852080506272614, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_callable_details_no_args": 0.0002649589441716671, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_classes": 0.0004057500045746565, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_classes_raises": 0.0002842499525286257, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_function_def_init": 0.00023675098782405257, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_function_def_not_init": 0.0002423340338282287, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_functions": 0.0003364600124768913, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_global_vars": 0.0002477499656379223, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_imports_import": 0.0003402500879019499, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_parse_imports_importfrom": 0.0003161249333061278, + "src/backend/tests/unit/test_custom_component.py::test_code_parser_syntax_error": 0.0005928329774178565, + "src/backend/tests/unit/test_custom_component.py::test_component_code_null_error": 0.00034683302510529757, + "src/backend/tests/unit/test_custom_component.py::test_component_get_code_tree": 0.002789582998957485, + "src/backend/tests/unit/test_custom_component.py::test_component_get_code_tree_syntax_error": 0.0016098330379463732, + "src/backend/tests/unit/test_custom_component.py::test_component_get_function_valid": 0.0002673339331522584, + "src/backend/tests/unit/test_custom_component.py::test_component_init": 0.0002568330382928252, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_build_not_implemented": 0.0002595419646240771, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_build_template_config": 0.002081999904476106, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_class_template_validation_no_code": 0.0007612079498358071, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_code_tree_syntax_error": 0.0007237909594550729, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function": 0.001917583984322846, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_args": 0.000828583026304841, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_args_no_args": 0.0004628330352716148, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_return_type": 0.0007794589619152248, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_entrypoint_return_type_no_return_type": 0.0003956669825129211, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_function_valid": 0.0002475408837199211, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_main_class_name": 0.0006563340430147946, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_get_main_class_name_no_main_class": 0.00037370907375589013, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_init": 0.00027370802126824856, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_multiple_outputs": 0.00709158304380253, + "src/backend/tests/unit/test_custom_component.py::test_custom_component_subclass_from_lctoolcomponent": 0.0016188329900614917, "src/backend/tests/unit/test_custom_component.py::test_list_flows_flow_objects": 1.981454541994026, "src/backend/tests/unit/test_custom_component.py::test_list_flows_return_type": 0.36947908403817564, "src/backend/tests/unit/test_custom_component_with_client.py::test_feature_flags_add_toolkit_output": 2.7484489580092486, - "src/backend/tests/unit/test_custom_component_with_client.py::test_list_flows_flow_objects": 12.424440875009168, - "src/backend/tests/unit/test_custom_component_with_client.py::test_list_flows_return_type": 12.41198166704271, - "src/backend/tests/unit/test_data_class.py::test_add_method_for_integers": 0.0002778339840006083, - "src/backend/tests/unit/test_data_class.py::test_add_method_for_strings": 0.0002887500450015068, - "src/backend/tests/unit/test_data_class.py::test_add_method_with_non_overlapping_keys": 0.0007877089956309646, - "src/backend/tests/unit/test_data_class.py::test_conversion_from_document": 0.0010117499914485961, - "src/backend/tests/unit/test_data_class.py::test_conversion_to_document": 0.00023654199321754277, - "src/backend/tests/unit/test_data_class.py::test_custom_attribute_get_set_del": 0.0003059579757973552, - "src/backend/tests/unit/test_data_class.py::test_custom_attribute_setting_and_getting": 0.0031473749841097742, - "src/backend/tests/unit/test_data_class.py::test_data_initialization": 0.0011919999960809946, - "src/backend/tests/unit/test_data_class.py::test_deep_copy": 0.00034104299265891314, - "src/backend/tests/unit/test_data_class.py::test_dir_includes_data_keys": 0.0006704169791191816, - "src/backend/tests/unit/test_data_class.py::test_dir_reflects_attribute_deletion": 0.00032425098470412195, - "src/backend/tests/unit/test_data_class.py::test_get_text_with_empty_data": 0.0002655420103110373, - "src/backend/tests/unit/test_data_class.py::test_get_text_with_none_data": 0.00026112396153621376, - "src/backend/tests/unit/test_data_class.py::test_get_text_with_text_key": 0.00043566603562794626, - "src/backend/tests/unit/test_data_class.py::test_get_text_without_text_key": 0.0002825000265147537, - "src/backend/tests/unit/test_data_class.py::test_str_and_dir_methods": 0.0015590420516673476, - "src/backend/tests/unit/test_data_class.py::test_validate_data_with_extra_keys": 0.00023500097449868917, - "src/backend/tests/unit/test_data_components.py::test_build_with_multiple_urls": 0.6755112910177559, - "src/backend/tests/unit/test_data_components.py::test_directory_component_build_with_multithreading": 0.0034385409962851554, - "src/backend/tests/unit/test_data_components.py::test_directory_without_mocks": 0.17178000003332272, - "src/backend/tests/unit/test_data_components.py::test_failed_request": 1.9161645000276621, - "src/backend/tests/unit/test_data_components.py::test_parse_curl": 0.0014477090153377503, - "src/backend/tests/unit/test_data_components.py::test_successful_get_request": 0.02039095902000554, - "src/backend/tests/unit/test_data_components.py::test_timeout": 0.03955424900050275, - "src/backend/tests/unit/test_data_components.py::test_url_component": 0.3660493330389727, - "src/backend/tests/unit/test_database.py::test_create_flow": 11.586834459012607, - "src/backend/tests/unit/test_database.py::test_create_flow_with_invalid_data": 3.6098089589504525, - "src/backend/tests/unit/test_database.py::test_create_flows": 2.91397087398218, - "src/backend/tests/unit/test_database.py::test_delete_flow": 5.394519374996889, - "src/backend/tests/unit/test_database.py::test_delete_flows": 4.048986917012371, - "src/backend/tests/unit/test_database.py::test_delete_flows_with_transaction_and_build": 5.093700459023239, - "src/backend/tests/unit/test_database.py::test_delete_folder_with_flows_with_transaction_and_build": 14.05491041703499, - "src/backend/tests/unit/test_database.py::test_delete_nonexistent_flow": 3.0335201249690726, - "src/backend/tests/unit/test_database.py::test_download_file": 3.392836499027908, - "src/backend/tests/unit/test_database.py::test_get_flows_from_folder_pagination": 2.703286626987392, - "src/backend/tests/unit/test_database.py::test_get_flows_from_folder_pagination_with_params": 3.486201498977607, - "src/backend/tests/unit/test_database.py::test_get_nonexistent_flow": 2.6508309580094647, + "src/backend/tests/unit/test_custom_component_with_client.py::test_list_flows_flow_objects": 15.2948470840347, + "src/backend/tests/unit/test_custom_component_with_client.py::test_list_flows_return_type": 2.0909082910511643, + "src/backend/tests/unit/test_data_class.py::test_add_method_for_integers": 0.00032416597241535783, + "src/backend/tests/unit/test_data_class.py::test_add_method_for_strings": 0.00024437595857307315, + "src/backend/tests/unit/test_data_class.py::test_add_method_with_non_overlapping_keys": 0.0015005830209702253, + "src/backend/tests/unit/test_data_class.py::test_conversion_from_document": 0.0002870820462703705, + "src/backend/tests/unit/test_data_class.py::test_conversion_to_document": 0.006023500929586589, + "src/backend/tests/unit/test_data_class.py::test_custom_attribute_get_set_del": 0.00029191700741648674, + "src/backend/tests/unit/test_data_class.py::test_custom_attribute_setting_and_getting": 0.0002585409674793482, + "src/backend/tests/unit/test_data_class.py::test_data_initialization": 0.0036302070366218686, + "src/backend/tests/unit/test_data_class.py::test_deep_copy": 0.0005384170217439532, + "src/backend/tests/unit/test_data_class.py::test_dir_includes_data_keys": 0.0003018759307451546, + "src/backend/tests/unit/test_data_class.py::test_dir_reflects_attribute_deletion": 0.00028354296227917075, + "src/backend/tests/unit/test_data_class.py::test_get_text_with_empty_data": 0.0002786670229397714, + "src/backend/tests/unit/test_data_class.py::test_get_text_with_none_data": 0.000253666948992759, + "src/backend/tests/unit/test_data_class.py::test_get_text_with_text_key": 0.00026395899476483464, + "src/backend/tests/unit/test_data_class.py::test_get_text_without_text_key": 0.0003883759491145611, + "src/backend/tests/unit/test_data_class.py::test_str_and_dir_methods": 0.00035749899689108133, + "src/backend/tests/unit/test_data_class.py::test_validate_data_with_extra_keys": 0.00032462505623698235, + "src/backend/tests/unit/test_data_components.py::test_build_with_multiple_urls": 0.3398302910500206, + "src/backend/tests/unit/test_data_components.py::test_directory_component_build_with_multithreading": 0.0018548330408520997, + "src/backend/tests/unit/test_data_components.py::test_directory_without_mocks": 0.22499099909327924, + "src/backend/tests/unit/test_data_components.py::test_failed_request": 2.583180084009655, + "src/backend/tests/unit/test_data_components.py::test_parse_curl": 0.0027002080460079014, + "src/backend/tests/unit/test_data_components.py::test_successful_get_request": 0.018577999027911574, + "src/backend/tests/unit/test_data_components.py::test_timeout": 0.022905833029653877, + "src/backend/tests/unit/test_data_components.py::test_url_component": 0.16144524893024936, + "src/backend/tests/unit/test_database.py::test_create_flow": 12.229048417066224, + "src/backend/tests/unit/test_database.py::test_create_flow_with_invalid_data": 2.6868192089605145, + "src/backend/tests/unit/test_database.py::test_create_flows": 4.125035000033677, + "src/backend/tests/unit/test_database.py::test_delete_flow": 2.5442660829867236, + "src/backend/tests/unit/test_database.py::test_delete_flows": 3.0459045830066316, + "src/backend/tests/unit/test_database.py::test_delete_flows_with_transaction_and_build": 4.557027917006053, + "src/backend/tests/unit/test_database.py::test_delete_folder_with_flows_with_transaction_and_build": 5.18562575004762, + "src/backend/tests/unit/test_database.py::test_delete_nonexistent_flow": 2.7361094990046695, + "src/backend/tests/unit/test_database.py::test_download_file": 2.763290834031068, + "src/backend/tests/unit/test_database.py::test_get_flows_from_folder_pagination": 11.799599416030105, + "src/backend/tests/unit/test_database.py::test_get_flows_from_folder_pagination_with_params": 2.5585727910511196, + "src/backend/tests/unit/test_database.py::test_get_nonexistent_flow": 2.387806957005523, "src/backend/tests/unit/test_database.py::test_load_flows": 2.0784470409998903, "src/backend/tests/unit/test_database.py::test_migrate_transactions": 3.3142859160434455, "src/backend/tests/unit/test_database.py::test_migrate_transactions_no_duckdb": 4.5406213329406455, - "src/backend/tests/unit/test_database.py::test_read_flow": 3.447659667028347, - "src/backend/tests/unit/test_database.py::test_read_flows": 4.225522375985747, - "src/backend/tests/unit/test_database.py::test_read_flows_components_only": 10.934310416021617, - "src/backend/tests/unit/test_database.py::test_read_flows_components_only_paginated": 3.3029944580048323, - "src/backend/tests/unit/test_database.py::test_read_flows_custom_page_size": 11.993549833016004, - "src/backend/tests/unit/test_database.py::test_read_flows_invalid_page": 3.9288085009902716, - "src/backend/tests/unit/test_database.py::test_read_flows_invalid_size": 4.057541041984223, - "src/backend/tests/unit/test_database.py::test_read_flows_no_pagination_params": 3.228703457978554, - "src/backend/tests/unit/test_database.py::test_read_flows_pagination_with_flows": 3.9452323760197032, - "src/backend/tests/unit/test_database.py::test_read_flows_pagination_with_params": 2.8247759580262937, + "src/backend/tests/unit/test_database.py::test_read_flow": 2.6734563740319572, + "src/backend/tests/unit/test_database.py::test_read_flows": 11.382159418077208, + "src/backend/tests/unit/test_database.py::test_read_flows_components_only": 4.525152957008686, + "src/backend/tests/unit/test_database.py::test_read_flows_components_only_paginated": 5.195073916052934, + "src/backend/tests/unit/test_database.py::test_read_flows_custom_page_size": 3.262816000089515, + "src/backend/tests/unit/test_database.py::test_read_flows_invalid_page": 5.801138084032573, + "src/backend/tests/unit/test_database.py::test_read_flows_invalid_size": 11.92538437602343, + "src/backend/tests/unit/test_database.py::test_read_flows_no_pagination_params": 3.4370020409696735, + "src/backend/tests/unit/test_database.py::test_read_flows_pagination_with_flows": 3.6235305840382352, + "src/backend/tests/unit/test_database.py::test_read_flows_pagination_with_params": 4.564620042045135, "src/backend/tests/unit/test_database.py::test_read_flows_pagination_without_params": 2.8355551669956185, - "src/backend/tests/unit/test_database.py::test_read_folder": 2.639306958008092, - "src/backend/tests/unit/test_database.py::test_read_folder_with_component_filter": 3.2778941659780685, - "src/backend/tests/unit/test_database.py::test_read_folder_with_flows": 2.6254429170221556, - "src/backend/tests/unit/test_database.py::test_read_folder_with_pagination": 3.5675277069967706, - "src/backend/tests/unit/test_database.py::test_read_folder_with_search": 3.3342033750086557, - "src/backend/tests/unit/test_database.py::test_read_nonexistent_folder": 3.147504792024847, - "src/backend/tests/unit/test_database.py::test_read_only_starter_projects": 3.5231717910210136, - "src/backend/tests/unit/test_database.py::test_sqlite_pragmas": 0.014376791019458324, - "src/backend/tests/unit/test_database.py::test_update_flow": 6.1240925819729455, - "src/backend/tests/unit/test_database.py::test_update_flow_idempotency": 3.477605708001647, - "src/backend/tests/unit/test_database.py::test_update_nonexistent_flow": 2.814987584046321, - "src/backend/tests/unit/test_database.py::test_upload_file": 2.612007999996422, - "src/backend/tests/unit/test_endpoints.py::test_build_vertex_invalid_flow_id": 5.098190250049811, - "src/backend/tests/unit/test_endpoints.py::test_build_vertex_invalid_vertex_id": 2.479911667993292, - "src/backend/tests/unit/test_endpoints.py::test_get_all": 3.4120765840343665, - "src/backend/tests/unit/test_endpoints.py::test_get_vertices": 6.581778707011836, - "src/backend/tests/unit/test_endpoints.py::test_get_vertices_flow_not_found": 4.297395917004906, - "src/backend/tests/unit/test_endpoints.py::test_invalid_flow_id": 2.7720669159898534, - "src/backend/tests/unit/test_endpoints.py::test_invalid_prompt": 2.789083875948563, - "src/backend/tests/unit/test_endpoints.py::test_invalid_run_with_input_type_chat": 2.460917416989105, - "src/backend/tests/unit/test_endpoints.py::test_post_validate_code": 2.5953087510424666, - "src/backend/tests/unit/test_endpoints.py::test_starter_projects": 8.649760375003098, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_no_payload": 3.428600166051183, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_input_type_any": 7.090748833026737, + "src/backend/tests/unit/test_database.py::test_read_folder": 2.6198389580240473, + "src/backend/tests/unit/test_database.py::test_read_folder_with_component_filter": 2.297788125986699, + "src/backend/tests/unit/test_database.py::test_read_folder_with_flows": 3.7233133749687113, + "src/backend/tests/unit/test_database.py::test_read_folder_with_pagination": 2.360611206968315, + "src/backend/tests/unit/test_database.py::test_read_folder_with_search": 2.791071208019275, + "src/backend/tests/unit/test_database.py::test_read_nonexistent_folder": 3.172841250023339, + "src/backend/tests/unit/test_database.py::test_read_only_starter_projects": 2.7734275410766713, + "src/backend/tests/unit/test_database.py::test_sqlite_pragmas": 0.01063333306228742, + "src/backend/tests/unit/test_database.py::test_update_flow": 11.933393624029122, + "src/backend/tests/unit/test_database.py::test_update_flow_idempotency": 2.8060469159972854, + "src/backend/tests/unit/test_database.py::test_update_nonexistent_flow": 5.407779291970655, + "src/backend/tests/unit/test_database.py::test_upload_file": 2.4626421239809133, + "src/backend/tests/unit/test_endpoints.py::test_build_vertex_invalid_flow_id": 3.5158219590666704, + "src/backend/tests/unit/test_endpoints.py::test_build_vertex_invalid_vertex_id": 3.11827108298894, + "src/backend/tests/unit/test_endpoints.py::test_get_all": 2.8379626250825822, + "src/backend/tests/unit/test_endpoints.py::test_get_vertices": 6.432511791004799, + "src/backend/tests/unit/test_endpoints.py::test_get_vertices_flow_not_found": 3.0379495000233874, + "src/backend/tests/unit/test_endpoints.py::test_invalid_flow_id": 4.83262683294015, + "src/backend/tests/unit/test_endpoints.py::test_invalid_prompt": 1.6217343760072254, + "src/backend/tests/unit/test_endpoints.py::test_invalid_run_with_input_type_chat": 1.796533625049051, + "src/backend/tests/unit/test_endpoints.py::test_post_validate_code": 7.020954290986992, + "src/backend/tests/unit/test_endpoints.py::test_starter_projects": 4.749609249003697, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_no_payload": 3.4047674169996753, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_input_type_any": 2.6764538330608048, "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_input_type_chat": 6.699964084022213, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_input_type_text": 3.3402159580145963, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_any": 5.593818207998993, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_debug": 4.50813995799399, - "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_text": 6.8781688759918325, - "src/backend/tests/unit/test_endpoints.py::test_valid_prompt": 4.674214500031667, - "src/backend/tests/unit/test_endpoints.py::test_various_prompts[The weather is {weather} today.-expected_input_variables1]": 1.8934649160073604, - "src/backend/tests/unit/test_endpoints.py::test_various_prompts[This prompt has no variables.-expected_input_variables2]": 2.2825725429865997, - "src/backend/tests/unit/test_endpoints.py::test_various_prompts[{a}, {b}, and {c} are variables.-expected_input_variables3]": 2.2156616259890143, - "src/backend/tests/unit/test_endpoints.py::test_various_prompts[{color} is my favorite color.-expected_input_variables0]": 2.244061541976407, - "src/backend/tests/unit/test_experimental_components.py::test_python_function_component": 0.0019667910237330943, - "src/backend/tests/unit/test_files.py::test_delete_file": 4.853532167006051, - "src/backend/tests/unit/test_files.py::test_download_file": 5.224142416991526, - "src/backend/tests/unit/test_files.py::test_file_operations": 1.9610276670427993, - "src/backend/tests/unit/test_files.py::test_list_files": 5.791562417027308, - "src/backend/tests/unit/test_files.py::test_upload_file": 3.106008542032214, - "src/backend/tests/unit/test_frontend_nodes.py::test_frontend_node_to_dict": 0.0006096669821999967, - "src/backend/tests/unit/test_frontend_nodes.py::test_template_field_defaults": 0.0003955419815611094, - "src/backend/tests/unit/test_frontend_nodes.py::test_template_to_dict": 0.0005426669667940587, - "src/backend/tests/unit/test_helper_components.py::test_data_as_text_component": 0.0008885420102160424, - "src/backend/tests/unit/test_helper_components.py::test_uuid_generator_component": 0.009627792023820803, - "src/backend/tests/unit/test_initial_setup.py::test_create_or_update_starter_projects": 2.1906163769890554, - "src/backend/tests/unit/test_initial_setup.py::test_get_project_data": 0.013538125000195578, - "src/backend/tests/unit/test_initial_setup.py::test_load_starter_projects": 0.015500459005124867, - "src/backend/tests/unit/test_initial_setup.py::test_refresh_starter_projects": 10.028843624982983, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_create_secret": 0.0025250839826185256, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_delete_secret": 0.000929832982365042, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_email_address": 0.00022870799875818193, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_encode_string": 0.00036762398667633533, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_encode_uuid": 0.0007318749849218875, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_ends_with_non_alphanumeric": 0.0003421240544412285, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_get_secret": 0.0009645000100135803, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_long_string": 0.0002979990094900131, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_starts_with_non_alphanumeric": 0.0002423750120215118, - "src/backend/tests/unit/test_kubernetes_secrets.py::test_uuid_case_insensitivity": 0.00023175100795924664, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_input_type_text": 5.525574458006304, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_any": 4.655565874942113, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_debug": 7.888722543022595, + "src/backend/tests/unit/test_endpoints.py::test_successful_run_with_output_type_text": 8.635741250065621, + "src/backend/tests/unit/test_endpoints.py::test_valid_prompt": 2.3432591260643676, + "src/backend/tests/unit/test_endpoints.py::test_various_prompts[The weather is {weather} today.-expected_input_variables1]": 1.8489304580143653, + "src/backend/tests/unit/test_endpoints.py::test_various_prompts[This prompt has no variables.-expected_input_variables2]": 2.6452161250053905, + "src/backend/tests/unit/test_endpoints.py::test_various_prompts[{a}, {b}, and {c} are variables.-expected_input_variables3]": 4.222045834001619, + "src/backend/tests/unit/test_endpoints.py::test_various_prompts[{color} is my favorite color.-expected_input_variables0]": 3.909155082947109, + "src/backend/tests/unit/test_experimental_components.py::test_python_function_component": 0.004152042034547776, + "src/backend/tests/unit/test_files.py::test_delete_file": 5.177216041018255, + "src/backend/tests/unit/test_files.py::test_download_file": 6.059420874982607, + "src/backend/tests/unit/test_files.py::test_file_operations": 2.4048440000624396, + "src/backend/tests/unit/test_files.py::test_list_files": 5.881258791021537, + "src/backend/tests/unit/test_files.py::test_upload_file": 4.043703542964067, + "src/backend/tests/unit/test_frontend_nodes.py::test_frontend_node_to_dict": 0.0005665839998982847, + "src/backend/tests/unit/test_frontend_nodes.py::test_template_field_defaults": 0.0004388759261928499, + "src/backend/tests/unit/test_frontend_nodes.py::test_template_to_dict": 0.0014697909355163574, + "src/backend/tests/unit/test_helper_components.py::test_data_as_text_component": 0.001189751026686281, + "src/backend/tests/unit/test_helper_components.py::test_uuid_generator_component": 0.006734457972925156, + "src/backend/tests/unit/test_initial_setup.py::test_create_or_update_starter_projects": 2.297661916934885, + "src/backend/tests/unit/test_initial_setup.py::test_get_project_data": 0.01816708402475342, + "src/backend/tests/unit/test_initial_setup.py::test_load_starter_projects": 0.01591095793992281, + "src/backend/tests/unit/test_initial_setup.py::test_refresh_starter_projects": 10.713609290949535, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_create_secret": 0.0038709159125573933, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_delete_secret": 0.0016375830164179206, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_email_address": 0.00025904097128659487, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_encode_string": 0.00022795796394348145, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_encode_uuid": 0.000240708002820611, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_ends_with_non_alphanumeric": 0.001827583007980138, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_get_secret": 0.001762000028975308, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_long_string": 0.00023833394516259432, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_starts_with_non_alphanumeric": 0.0012475419789552689, + "src/backend/tests/unit/test_kubernetes_secrets.py::test_uuid_case_insensitivity": 0.00028887594817206264, "src/backend/tests/unit/test_loading.py::test_load_flow_from_json": 1.2976477909833193, - "src/backend/tests/unit/test_loading.py::test_load_flow_from_json_object": 0.06399270801921375, + "src/backend/tests/unit/test_loading.py::test_load_flow_from_json_object": 0.040529041027184576, "src/backend/tests/unit/test_loading.py::test_load_flow_from_json_with_tweaks": 0.005636290996335447, - "src/backend/tests/unit/test_logger.py::test_enabled": 0.0009408750047441572, - "src/backend/tests/unit/test_logger.py::test_get_after_timestamp": 0.00032283400651067495, - "src/backend/tests/unit/test_logger.py::test_get_before_timestamp": 0.00027929103816859424, - "src/backend/tests/unit/test_logger.py::test_get_last_n": 0.00027266700635664165, - "src/backend/tests/unit/test_logger.py::test_init_default": 0.0009895410330500454, - "src/backend/tests/unit/test_logger.py::test_init_with_env_variable": 0.0030017509998288006, - "src/backend/tests/unit/test_logger.py::test_len": 0.0009602079808246344, - "src/backend/tests/unit/test_logger.py::test_max_size": 0.0002914979704655707, - "src/backend/tests/unit/test_logger.py::test_write": 0.00031416601268574595, - "src/backend/tests/unit/test_logger.py::test_write_overflow": 0.00029454100877046585, - "src/backend/tests/unit/test_login.py::test_login_successful": 3.53125354097574, - "src/backend/tests/unit/test_login.py::test_login_unsuccessful_wrong_password": 1.3699077089841012, - "src/backend/tests/unit/test_login.py::test_login_unsuccessful_wrong_username": 2.323172540985979, - "src/backend/tests/unit/test_messages.py::test_add_messages": 1.090910833037924, - "src/backend/tests/unit/test_messages.py::test_add_messagetables": 5.7636237499827985, - "src/backend/tests/unit/test_messages.py::test_convert_to_langchain[convert_to_langchain_type]": 0.00044804197386838496, - "src/backend/tests/unit/test_messages.py::test_convert_to_langchain[message]": 0.00050245804595761, - "src/backend/tests/unit/test_messages.py::test_delete_messages": 1.9634021249657962, - "src/backend/tests/unit/test_messages.py::test_get_messages": 1.267258542997297, - "src/backend/tests/unit/test_messages.py::test_store_message": 3.823600333998911, + "src/backend/tests/unit/test_logger.py::test_enabled": 0.0002785429824143648, + "src/backend/tests/unit/test_logger.py::test_get_after_timestamp": 0.0006505009951069951, + "src/backend/tests/unit/test_logger.py::test_get_before_timestamp": 0.0003599180490709841, + "src/backend/tests/unit/test_logger.py::test_get_last_n": 0.00045024894643574953, + "src/backend/tests/unit/test_logger.py::test_init_default": 0.0005865829880349338, + "src/backend/tests/unit/test_logger.py::test_init_with_env_variable": 0.0005718329921364784, + "src/backend/tests/unit/test_logger.py::test_len": 0.0002712510759010911, + "src/backend/tests/unit/test_logger.py::test_max_size": 0.0002471670741215348, + "src/backend/tests/unit/test_logger.py::test_write": 0.0003470420488156378, + "src/backend/tests/unit/test_logger.py::test_write_overflow": 0.0005332900327630341, + "src/backend/tests/unit/test_login.py::test_login_successful": 1.5611454580212012, + "src/backend/tests/unit/test_login.py::test_login_unsuccessful_wrong_password": 4.032776457956061, + "src/backend/tests/unit/test_login.py::test_login_unsuccessful_wrong_username": 0.879311416996643, + "src/backend/tests/unit/test_messages.py::test_add_messages": 3.309187417034991, + "src/backend/tests/unit/test_messages.py::test_add_messagetables": 2.677147793059703, + "src/backend/tests/unit/test_messages.py::test_convert_to_langchain[convert_to_langchain_type]": 0.001319041009992361, + "src/backend/tests/unit/test_messages.py::test_convert_to_langchain[message]": 0.0014611250371672213, + "src/backend/tests/unit/test_messages.py::test_delete_messages": 1.7512655410100706, + "src/backend/tests/unit/test_messages.py::test_get_messages": 2.679642292088829, + "src/backend/tests/unit/test_messages.py::test_store_message": 2.0734372919541784, + "src/backend/tests/unit/test_messages.py::test_update_message_with_content_blocks": 2.0395035409601405, + "src/backend/tests/unit/test_messages.py::test_update_message_with_nested_properties": 1.6801010410417803, + "src/backend/tests/unit/test_messages.py::test_update_message_with_timestamp": 1.7369747090269811, + "src/backend/tests/unit/test_messages.py::test_update_mixed_messages": 0.7533785830019042, + "src/backend/tests/unit/test_messages.py::test_update_multiple_messages": 0.7652632489916869, + "src/backend/tests/unit/test_messages.py::test_update_multiple_messages_with_timestamps": 1.7809107069624588, + "src/backend/tests/unit/test_messages.py::test_update_nonexistent_message": 0.9113652509986423, + "src/backend/tests/unit/test_messages.py::test_update_single_message": 0.8359092500177212, "src/backend/tests/unit/test_messages_endpoints.py::test_delete_messages": 3.083023541024886, "src/backend/tests/unit/test_messages_endpoints.py::test_delete_messages_session": 2.9022462490247563, - "src/backend/tests/unit/test_messages_endpoints.py::test_no_messages_found_with_given_session_id": 3.2998193759995047, - "src/backend/tests/unit/test_messages_endpoints.py::test_successfully_update_session_id": 2.8934581670328043, + "src/backend/tests/unit/test_messages_endpoints.py::test_no_messages_found_with_given_session_id": 2.7207199159893207, + "src/backend/tests/unit/test_messages_endpoints.py::test_successfully_update_session_id": 2.559589582902845, "src/backend/tests/unit/test_messages_endpoints.py::test_update_message": 2.7309321249485947, "src/backend/tests/unit/test_messages_endpoints.py::test_update_message_not_found": 2.71192433295073, - "src/backend/tests/unit/test_process.py::test_load_langchain_object_with_cached_session": 0.0064247489790432155, + "src/backend/tests/unit/test_process.py::test_load_langchain_object_with_cached_session": 0.009255001961719245, "src/backend/tests/unit/test_process.py::test_load_langchain_object_with_no_cached_session": 2.9178847920848057, "src/backend/tests/unit/test_process.py::test_load_langchain_object_without_session_id": 2.8941064990358427, - "src/backend/tests/unit/test_process.py::test_multiple_tweaks": 0.00039995898259803653, - "src/backend/tests/unit/test_process.py::test_no_tweaks": 0.0003157909959554672, - "src/backend/tests/unit/test_process.py::test_single_tweak": 0.00038425097591243684, - "src/backend/tests/unit/test_process.py::test_tweak_no_node_id": 0.00025108299450948834, - "src/backend/tests/unit/test_process.py::test_tweak_not_in_template": 0.004219168011331931, - "src/backend/tests/unit/test_schema.py::TestInput::test_field_type_str": 0.0003558750613592565, - "src/backend/tests/unit/test_schema.py::TestInput::test_field_type_type": 0.0011322499776724726, - "src/backend/tests/unit/test_schema.py::TestInput::test_input_to_dict": 0.0006423759914468974, - "src/backend/tests/unit/test_schema.py::TestInput::test_invalid_field_type": 0.0032989569881465286, - "src/backend/tests/unit/test_schema.py::TestInput::test_post_process_type_function": 0.0032147909805644304, - "src/backend/tests/unit/test_schema.py::TestInput::test_serialize_field_type": 0.0003558330063242465, - "src/backend/tests/unit/test_schema.py::TestInput::test_validate_type_class": 0.0010551249724812806, - "src/backend/tests/unit/test_schema.py::TestInput::test_validate_type_string": 0.0005182500171940774, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_add_types": 0.0004287920019123703, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_default": 0.0002908760216087103, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_set_selected": 0.0012017080443911254, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_to_dict": 0.0005765419628005475, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_validate_display_name": 0.00030129298102110624, - "src/backend/tests/unit/test_schema.py::TestOutput::test_output_validate_model": 0.0002503340074326843, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_custom_type": 0.0002540839777793735, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_int_type": 0.0002285000227857381, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_list_custom_type": 0.00031133301672525704, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_list_int_type": 0.0002195000124629587, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_union_custom_type": 0.00030337501084432006, - "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_union_type": 0.0006871259829495102, - "src/backend/tests/unit/test_setup_superuser.py::test_teardown_superuser_default_superuser": 0.002411749941529706, - "src/backend/tests/unit/test_setup_superuser.py::test_teardown_superuser_no_default_superuser": 0.004343708977103233, - "src/backend/tests/unit/test_telemetry.py::test_gauge": 0.00025791500229388475, - "src/backend/tests/unit/test_telemetry.py::test_gauge_with_counter_method": 0.0006282920076046139, - "src/backend/tests/unit/test_telemetry.py::test_gauge_with_historgram_method": 0.00035862496588379145, - "src/backend/tests/unit/test_telemetry.py::test_gauge_with_up_down_counter_method": 0.0005653340194839984, - "src/backend/tests/unit/test_telemetry.py::test_increment_counter": 0.0002764999808277935, - "src/backend/tests/unit/test_telemetry.py::test_increment_counter_empty_label": 0.00469149902346544, - "src/backend/tests/unit/test_telemetry.py::test_increment_counter_missing_mandatory_label": 0.00273574999300763, - "src/backend/tests/unit/test_telemetry.py::test_increment_counter_unregisted_metric": 0.001720041036605835, - "src/backend/tests/unit/test_telemetry.py::test_init": 0.0011697089939843863, - "src/backend/tests/unit/test_telemetry.py::test_missing_labels": 0.005489292001584545, - "src/backend/tests/unit/test_telemetry.py::test_multithreaded_singleton": 0.01720091700553894, - "src/backend/tests/unit/test_telemetry.py::test_multithreaded_singleton_race_condition": 0.08977550000417978, - "src/backend/tests/unit/test_telemetry.py::test_opentelementry_singleton": 0.0016652499907650054, - "src/backend/tests/unit/test_template.py::test_build_template_from_function": 0.0025075009907595813, - "src/backend/tests/unit/test_template.py::test_get_base_classes": 0.00034683302510529757, - "src/backend/tests/unit/test_template.py::test_get_default_factory": 0.003174457960994914, + "src/backend/tests/unit/test_process.py::test_multiple_tweaks": 0.00024433404905721545, + "src/backend/tests/unit/test_process.py::test_no_tweaks": 0.0008997919503599405, + "src/backend/tests/unit/test_process.py::test_single_tweak": 0.00036458304384723306, + "src/backend/tests/unit/test_process.py::test_tweak_no_node_id": 0.0010478749754838645, + "src/backend/tests/unit/test_process.py::test_tweak_not_in_template": 0.0002571250079199672, + "src/backend/tests/unit/test_schema.py::TestInput::test_field_type_str": 0.0015098329749889672, + "src/backend/tests/unit/test_schema.py::TestInput::test_field_type_type": 0.0007612500339746475, + "src/backend/tests/unit/test_schema.py::TestInput::test_input_to_dict": 0.0018923740135505795, + "src/backend/tests/unit/test_schema.py::TestInput::test_invalid_field_type": 0.0006862920126877725, + "src/backend/tests/unit/test_schema.py::TestInput::test_post_process_type_function": 0.0023312500561587512, + "src/backend/tests/unit/test_schema.py::TestInput::test_serialize_field_type": 0.004855999955907464, + "src/backend/tests/unit/test_schema.py::TestInput::test_validate_type_class": 0.00027591700199991465, + "src/backend/tests/unit/test_schema.py::TestInput::test_validate_type_string": 0.00278158305445686, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_add_types": 0.0010019989567808807, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_default": 0.00032329204259440303, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_set_selected": 0.0015942909521982074, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_to_dict": 0.0022627910366281867, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_validate_display_name": 0.00040600099600851536, + "src/backend/tests/unit/test_schema.py::TestOutput::test_output_validate_model": 0.0002532079815864563, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_custom_type": 0.0019193329499103129, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_int_type": 0.00021583307534456253, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_list_custom_type": 0.0003355839871801436, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_list_int_type": 0.0020573349902406335, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_union_custom_type": 0.00026191596407443285, + "src/backend/tests/unit/test_schema.py::TestPostProcessType::test_union_type": 0.0024350410094484687, + "src/backend/tests/unit/test_setup_superuser.py::test_teardown_superuser_default_superuser": 0.006652375042904168, + "src/backend/tests/unit/test_setup_superuser.py::test_teardown_superuser_no_default_superuser": 0.006145125022158027, + "src/backend/tests/unit/test_telemetry.py::test_gauge": 0.003054290951695293, + "src/backend/tests/unit/test_telemetry.py::test_gauge_with_counter_method": 0.0023362910142168403, + "src/backend/tests/unit/test_telemetry.py::test_gauge_with_historgram_method": 0.004677250923123211, + "src/backend/tests/unit/test_telemetry.py::test_gauge_with_up_down_counter_method": 0.0018417509854771197, + "src/backend/tests/unit/test_telemetry.py::test_increment_counter": 0.0003165420494042337, + "src/backend/tests/unit/test_telemetry.py::test_increment_counter_empty_label": 0.001291500055231154, + "src/backend/tests/unit/test_telemetry.py::test_increment_counter_missing_mandatory_label": 0.0019142500241287053, + "src/backend/tests/unit/test_telemetry.py::test_increment_counter_unregisted_metric": 0.010540709015913308, + "src/backend/tests/unit/test_telemetry.py::test_init": 0.0003274579648859799, + "src/backend/tests/unit/test_telemetry.py::test_missing_labels": 0.00035625003511086106, + "src/backend/tests/unit/test_telemetry.py::test_multithreaded_singleton": 0.0015401250566355884, + "src/backend/tests/unit/test_telemetry.py::test_multithreaded_singleton_race_condition": 0.020977791980840266, + "src/backend/tests/unit/test_telemetry.py::test_opentelementry_singleton": 0.0002914160140790045, + "src/backend/tests/unit/test_template.py::test_build_template_from_function": 0.0019054170115850866, + "src/backend/tests/unit/test_template.py::test_get_base_classes": 0.00047154095955193043, + "src/backend/tests/unit/test_template.py::test_get_default_factory": 0.0006982500781305134, "src/backend/tests/unit/test_user.py::test_add_user": 3.429326084034983, "src/backend/tests/unit/test_user.py::test_data_consistency_after_delete": 3.084409792034421, "src/backend/tests/unit/test_user.py::test_data_consistency_after_update": 4.112100625992753, - "src/backend/tests/unit/test_user.py::test_deactivated_user_cannot_access": 2.326074459007941, + "src/backend/tests/unit/test_user.py::test_deactivated_user_cannot_access": 1.6135848330450244, "src/backend/tests/unit/test_user.py::test_deactivated_user_cannot_login": 2.550756209064275, "src/backend/tests/unit/test_user.py::test_delete_user": 3.7109769160160795, "src/backend/tests/unit/test_user.py::test_delete_user_wrong_id": 3.291543999046553, @@ -700,85 +760,93 @@ "src/backend/tests/unit/test_user.py::test_patch_user": 3.110160624026321, "src/backend/tests/unit/test_user.py::test_patch_user_wrong_id": 3.0659845010377467, "src/backend/tests/unit/test_user.py::test_read_all_users": 2.8889535000780597, - "src/backend/tests/unit/test_user.py::test_user_waiting_for_approval": 1.2370969589683227, - "src/backend/tests/unit/test_validate_code.py::test_create_class": 0.0005392919993028045, - "src/backend/tests/unit/test_validate_code.py::test_create_class_with_external_variables_and_functions": 0.001565791026223451, - "src/backend/tests/unit/test_validate_code.py::test_create_class_with_multiple_external_classes": 0.001359540969133377, - "src/backend/tests/unit/test_validate_code.py::test_create_function": 0.0009174579754471779, - "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_function": 0.0009717499779071659, - "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_module": 0.0032198750122915953, - "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_schema": 0.0013065820094197989, - "src/backend/tests/unit/test_validate_code.py::test_execute_function_success": 0.0008949580078478903, - "src/backend/tests/unit/test_validate_code.py::test_validate_code": 0.043431582977063954, - "src/backend/tests/unit/test_version.py::test_compute_main": 0.0010729580244515091, - "src/backend/tests/unit/test_version.py::test_version": 0.000908501009689644, - "src/backend/tests/unit/test_webhook.py::test_webhook_endpoint": 14.470176874980098, - "src/backend/tests/unit/test_webhook.py::test_webhook_flow_on_run_endpoint": 3.8649328329775017, - "src/backend/tests/unit/test_webhook.py::test_webhook_with_random_payload": 4.014756916993065, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol::password@host-protocol::password@host]": 0.00035445898538455367, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pa:ss:word@host-protocol:user:pa:ss:word@host]": 0.0005676250148098916, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pa@ss@word@host-protocol:user:pa%40ss%40word@host]": 0.00029266602359712124, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pass@word@host-protocol:user:pass%40word@host]": 0.00044587498996406794, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:password@-protocol:user:password@]": 0.00032645699684508145, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:password@host-protocol:user:password@host]": 0.0013868329988326877, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user@host-protocol:user@host]": 0.0005356659821700305, - "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[user:password@host-user:password@host]": 0.00030862499261274934, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[-]": 0.0003440419677644968, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/\\ndocu\\nments/file.txt-/home/user/\\\\ndocu\\\\nments/file.txt]": 0.0004269159981049597, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/docu\\n\\nments/file.txt-/home/user/docu\\\\n\\\\nments/file.txt]": 0.0003105409850832075, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/docu\\nments/file.txt-/home/user/docu\\\\nments/file.txt]": 0.0004984989936929196, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/documents/\\n-/home/user/documents/\\\\n]": 0.0003173739823978394, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/documents/file.txt-/home/user/documents/file.txt]": 0.0003854579699691385, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/my-\\ndocs/special_file!.pdf-/home/user/my-\\\\ndocs/special_file!.pdf]": 0.00042475000373087823, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:/Users\\\\Documents/file.txt-C:/Users\\\\Documents/file.txt]": 0.00028199999360367656, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\Documents\\\\-C:\\\\Users\\\\Documents\\\\]": 0.00034275001962669194, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\Documents\\\\file.txt-C:\\\\Users\\\\Documents\\\\file.txt]": 0.0003175840247422457, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\\\nDocuments\\\\file.txt-C:\\\\Users\\\\\\\\nDocuments\\\\file.txt]": 0.00030320798396132886, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\\\\\\\server\\\\share\\\\file.txt-\\\\\\\\server\\\\share\\\\file.txt]": 0.00031366696930490434, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\n/home/user/documents/-\\\\n/home/user/documents/]": 0.00029837401234544814, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\n\\n\\n-\\\\n\\\\n\\\\n]": 0.0003894160035997629, - "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path_type": 0.00024762499378994107, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[-]": 0.0002995819959323853, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/\\ndocu\\nments/file.txt-/home/user/\\\\ndocu\\\\nments/file.txt]": 0.00029525000718422234, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/docu\\n\\nments/file.txt-/home/user/docu\\\\n\\\\nments/file.txt]": 0.00028525100788101554, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/docu\\nments/file.txt-/home/user/docu\\\\nments/file.txt]": 0.0003227500128559768, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/documents/\\n-/home/user/documents/\\\\n]": 0.000370291993021965, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/documents/file.txt-/home/user/documents/file.txt]": 0.0004180419782642275, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/my-\\ndocs/special_file!.pdf-/home/user/my-\\\\ndocs/special_file!.pdf]": 0.0002817080239765346, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[C:\\\\Users\\\\\\nDocuments\\\\file.txt-C:\\\\Users\\\\\\\\nDocuments\\\\file.txt]": 0.0003292919718660414, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[\\n/home/user/documents/-\\\\n/home/user/documents/]": 0.00041183302528224885, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[\\n\\n\\n-\\\\n\\\\n\\\\n]": 0.0003336259978823364, - "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path_type": 0.0003716240171343088, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_negative_max_length": 0.0007279999845195562, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[-5-]": 0.0007599169912282377, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[12345-3-12345]": 0.0015367080050054938, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[3.141592653589793-4-3.141592653589793]": 0.0005234590207692236, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[None-5-None]": 0.002191375009715557, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[True-2-True]": 0.003618501010350883, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[\\u3053\\u3093\\u306b\\u3061\\u306f-3-\\u3053\\u3093\\u306b...]": 0.0015707490092609078, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[a-1-a]": 0.0009140000329352915, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10-aaaaaaaaaa...]": 0.000407209008699283, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[exact-5-exact]": 0.0003708339645527303, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[long string-7-long st...]": 0.0006676250195596367, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[short string-20-short string]": 0.0009722499817144126, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_none_max_length": 0.0003867920022457838, - "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_zero_max_length": 0.0022428750235121697, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data0-10-expected0]": 0.0015308739966712892, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data1-5-expected1]": 0.0007047500112093985, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data2-7-expected2]": 0.00042687501991167665, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data3-8-expected3]": 0.001981501030968502, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data4-10-expected4]": 0.001031667023198679, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data5-10-expected5]": 0.0012697070487774909, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data6-10-expected6]": 0.007535915996413678, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data7-5-expected7]": 0.0004496679757721722, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data8-3-expected8]": 0.0017771260172594339, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data9-10-expected9]": 0.02977829097653739, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_default_max_length": 0.00035029201535508037, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_in_place_modification": 0.0003647090052254498, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_invalid_input": 0.00030170896206982434, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_negative_max_length": 0.0006194179877638817, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_no_modification": 0.0003377910179551691, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_small_max_length": 0.0009687069978099316, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_type_preservation": 0.0006653759628534317, - "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_zero_max_length": 0.003412959020351991 + "src/backend/tests/unit/test_user.py::test_user_waiting_for_approval": 1.0094337909831665, + "src/backend/tests/unit/test_validate_code.py::test_create_class": 0.002269042015541345, + "src/backend/tests/unit/test_validate_code.py::test_create_class_with_external_variables_and_functions": 0.0017634579562582076, + "src/backend/tests/unit/test_validate_code.py::test_create_class_with_multiple_external_classes": 0.002165457990486175, + "src/backend/tests/unit/test_validate_code.py::test_create_function": 0.000596500001847744, + "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_function": 0.0006714170449413359, + "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_module": 0.00045245798537507653, + "src/backend/tests/unit/test_validate_code.py::test_execute_function_missing_schema": 0.001392040983773768, + "src/backend/tests/unit/test_validate_code.py::test_execute_function_success": 0.0015526249771937728, + "src/backend/tests/unit/test_validate_code.py::test_validate_code": 0.008368333976250142, + "src/backend/tests/unit/test_version.py::test_compute_main": 0.0010042919893749058, + "src/backend/tests/unit/test_version.py::test_version": 0.001986499992199242, + "src/backend/tests/unit/test_webhook.py::test_webhook_endpoint": 14.715468042064458, + "src/backend/tests/unit/test_webhook.py::test_webhook_flow_on_run_endpoint": 3.046824499964714, + "src/backend/tests/unit/test_webhook.py::test_webhook_with_random_payload": 11.656425916939043, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol::password@host-protocol::password@host]": 0.0016742500010877848, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pa:ss:word@host-protocol:user:pa:ss:word@host]": 0.0009482500026933849, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pa@ss@word@host-protocol:user:pa%40ss%40word@host]": 0.0008808330749161541, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:pass@word@host-protocol:user:pass%40word@host]": 0.0029695829143747687, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:password@-protocol:user:password@]": 0.001982749963644892, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user:password@host-protocol:user:password@host]": 0.0005745830712839961, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[protocol:user@host-protocol:user@host]": 0.0007132510654628277, + "src/backend/tests/unit/utils/test_connection_string_parser.py::test_transform_connection_string[user:password@host-user:password@host]": 0.0009918760042637587, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[-]": 0.0019683760474435985, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/\\ndocu\\nments/file.txt-/home/user/\\\\ndocu\\\\nments/file.txt]": 0.0036366250133141875, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/docu\\n\\nments/file.txt-/home/user/docu\\\\n\\\\nments/file.txt]": 0.00254416698589921, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/docu\\nments/file.txt-/home/user/docu\\\\nments/file.txt]": 0.0009456239640712738, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/documents/\\n-/home/user/documents/\\\\n]": 0.025744416925590485, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/documents/file.txt-/home/user/documents/file.txt]": 0.0015144990175031126, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[/home/user/my-\\ndocs/special_file!.pdf-/home/user/my-\\\\ndocs/special_file!.pdf]": 0.001220542995724827, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:/Users\\\\Documents/file.txt-C:/Users\\\\Documents/file.txt]": 0.0012114160344935954, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\Documents\\\\-C:\\\\Users\\\\Documents\\\\]": 0.0023360829218290746, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\Documents\\\\file.txt-C:\\\\Users\\\\Documents\\\\file.txt]": 0.0007423330680467188, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[C:\\\\Users\\\\\\nDocuments\\\\file.txt-C:\\\\Users\\\\\\\\nDocuments\\\\file.txt]": 0.0023515840875916183, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\\\\\\\server\\\\share\\\\file.txt-\\\\\\\\server\\\\share\\\\file.txt]": 0.001738708931952715, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\n/home/user/documents/-\\\\n/home/user/documents/]": 0.0021785409771837294, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path[\\n\\n\\n-\\\\n\\\\n\\\\n]": 0.0007877919706515968, + "src/backend/tests/unit/utils/test_format_directory_path.py::test_format_directory_path_type": 0.004260540998075157, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_convert_image_to_base64_directory": 0.0007352500106208026, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_convert_image_to_base64_empty_path": 0.0010516680194996297, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_convert_image_to_base64_nonexistent_file": 0.0009393750224262476, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_convert_image_to_base64_success": 0.0010400419705547392, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_create_data_url_invalid_file": 0.0012756659998558462, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_create_data_url_success": 0.00212958303745836, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_create_data_url_unrecognized_extension": 0.0019956670003011823, + "src/backend/tests/unit/utils/test_image_utils.py::TestImageUtils::test_create_data_url_with_custom_mime": 0.003665584954433143, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[-]": 0.0006267070421017706, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/\\ndocu\\nments/file.txt-/home/user/\\\\ndocu\\\\nments/file.txt]": 0.0007902910001575947, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/docu\\n\\nments/file.txt-/home/user/docu\\\\n\\\\nments/file.txt]": 0.0003085819771513343, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/docu\\nments/file.txt-/home/user/docu\\\\nments/file.txt]": 0.00034262501867488027, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/documents/\\n-/home/user/documents/\\\\n]": 0.0003343760035932064, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/documents/file.txt-/home/user/documents/file.txt]": 0.0003256250056438148, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[/home/user/my-\\ndocs/special_file!.pdf-/home/user/my-\\\\ndocs/special_file!.pdf]": 0.0012586249504238367, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[C:\\\\Users\\\\\\nDocuments\\\\file.txt-C:\\\\Users\\\\\\\\nDocuments\\\\file.txt]": 0.0008411250310018659, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[\\n/home/user/documents/-\\\\n/home/user/documents/]": 0.0009818340186029673, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path[\\n\\n\\n-\\\\n\\\\n\\\\n]": 0.0006172500434331596, + "src/backend/tests/unit/utils/test_rewrite_file_path.py::test_format_directory_path_type": 0.0002429169835522771, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_negative_max_length": 0.00025949894916266203, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[-5-]": 0.0003167500835843384, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[12345-3-12345]": 0.00030608405359089375, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[3.141592653589793-4-3.141592653589793]": 0.0003646670375019312, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[None-5-None]": 0.0003825009916909039, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[True-2-True]": 0.0005934149958193302, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[\\u3053\\u3093\\u306b\\u3061\\u306f-3-\\u3053\\u3093\\u306b...]": 0.00038300000596791506, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[a-1-a]": 0.0003126669325865805, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10-aaaaaaaaaa...]": 0.00035062601091340184, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[exact-5-exact]": 0.0002943320432677865, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[long string-7-long st...]": 0.00034562498331069946, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_non_dict_list[short string-20-short string]": 0.00034145801328122616, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_none_max_length": 0.0005399579531513155, + "src/backend/tests/unit/utils/test_truncate_long_strings.py::test_truncate_long_strings_zero_max_length": 0.0002442080294713378, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data0-10-expected0]": 0.0003149179392494261, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data1-5-expected1]": 0.0003458330174908042, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data2-7-expected2]": 0.00031883292831480503, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data3-8-expected3]": 0.00030812493059784174, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data4-10-expected4]": 0.00028958305483683944, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data5-10-expected5]": 0.00033783295657485723, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data6-10-expected6]": 0.0004022919456474483, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data7-5-expected7]": 0.0003520839964039624, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data8-3-expected8]": 0.0003352909698151052, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings[input_data9-10-expected9]": 0.002482500043697655, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_default_max_length": 0.00047945795813575387, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_in_place_modification": 0.0003923350013792515, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_invalid_input": 0.0008553340448997915, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_negative_max_length": 0.0005078340182080865, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_no_modification": 0.0006442510057240725, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_small_max_length": 0.001186543027870357, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_type_preservation": 0.00046733306953683496, + "src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py::test_truncate_long_strings_zero_max_length": 0.0007919160416349769 } \ No newline at end of file diff --git a/src/backend/tests/unit/components/agents/test_agent_events.py b/src/backend/tests/unit/components/agents/test_agent_events.py index 3eb6609fd268..e1f76bafc20e 100644 --- a/src/backend/tests/unit/components/agents/test_agent_events.py +++ b/src/backend/tests/unit/components/agents/test_agent_events.py @@ -392,7 +392,7 @@ def __init__(self): assert isinstance(start_time, float) -def test_handle_on_tool_start(): +async def test_handle_on_tool_start(): """Test handle_on_tool_start event.""" send_message = MagicMock(side_effect=lambda message: message) tool_blocks_map = {} @@ -414,8 +414,9 @@ def test_handle_on_tool_start(): assert len(updated_message.content_blocks) == 1 assert len(updated_message.content_blocks[0].contents) > 0 + tool_key = f"{event['name']}_{event['run_id']}" tool_content = updated_message.content_blocks[0].contents[-1] - assert tool_content == tool_blocks_map.get("test_run") + assert tool_content == tool_blocks_map.get(tool_key) assert isinstance(tool_content, ToolContent) assert tool_content.name == "test_tool" assert tool_content.tool_input == {"query": "tool input"} @@ -452,6 +453,7 @@ async def test_handle_on_tool_end(): updated_message, start_time = handle_on_tool_end(end_event, agent_message, tool_blocks_map, send_message, 0.0) + f"{end_event['name']}_{end_event['run_id']}" tool_content = updated_message.content_blocks[0].contents[-1] assert tool_content.name == "test_tool" assert tool_content.output == "tool output" diff --git a/src/frontend/src/components/chatComponents/ContentBlockDisplay.tsx b/src/frontend/src/components/chatComponents/ContentBlockDisplay.tsx index 83a828153cfc..ffd33db452b6 100644 --- a/src/frontend/src/components/chatComponents/ContentBlockDisplay.tsx +++ b/src/frontend/src/components/chatComponents/ContentBlockDisplay.tsx @@ -40,10 +40,11 @@ export function ContentBlockDisplay({ contentBlocks[0]?.contents[contentBlocks[0]?.contents.length - 1]; const headerIcon = state === "partial" ? lastContent?.header?.icon || "Bot" : "Bot"; + const headerTitle = - (state === "partial" - ? lastContent?.header?.title - : contentBlocks[0]?.title) || "Steps"; + state === "partial" ? (lastContent?.header?.title ?? "Steps") : "Finished"; + // show the block title only if state === "partial" + const showBlockTitle = state === "partial"; return (
@@ -61,11 +62,10 @@ export function ContentBlockDisplay({ > {isLoading && ( @@ -92,7 +92,7 @@ export function ContentBlockDisplay({ {headerTitle} @@ -139,33 +139,59 @@ export function ContentBlockDisplay({ animate={{ opacity: 1 }} transition={{ duration: 0.2, delay: 0.1 }} className={cn( - "relative p-4", + "relative", index !== contentBlocks.length - 1 && "border-b border-border", )} > -
- {props.children} - ); - }, - }} - > - {block.title} - -
+ + {showBlockTitle && ( + + {props.children} + ); + }, + }} + > + {block.title} + + + )} +
{block.contents.map((content, index) => ( - <> - - - + + + {index !== 0 && ( + + + + )} + + + ))}
diff --git a/src/frontend/src/components/chatComponents/ContentDisplay.tsx b/src/frontend/src/components/chatComponents/ContentDisplay.tsx index a0a0885ee5b9..99dced81f51a 100644 --- a/src/frontend/src/components/chatComponents/ContentDisplay.tsx +++ b/src/frontend/src/components/chatComponents/ContentDisplay.tsx @@ -12,7 +12,7 @@ export default function ContentDisplay({ content }: { content: ContentType }) { // First render the common BaseContent elements if they exist const renderHeader = content.header && ( <> -
+
{content.header.icon && ( {content.header.title} @@ -35,7 +35,7 @@ export default function ContentDisplay({ content }: { content: ContentType }) { ); const renderDuration = content.duration !== undefined && ( -
+
); @@ -54,7 +54,7 @@ export default function ContentDisplay({ content }: { content: ContentType }) { components={{ p({ node, ...props }) { return ( - + {props.children} ); @@ -135,16 +135,91 @@ export default function ContentDisplay({ content }: { content: ContentType }) { break; case "tool_use": + const formatToolOutput = (output: any) => { + if (output === null || output === undefined) return ""; + + // If it's a string, render as markdown + if (typeof output === "string") { + return ( + {props.children}; + }, + code: ({ node, inline, className, children, ...props }) => { + const match = /language-(\w+)/.exec(className || ""); + return !inline ? ( + + ) : ( + + {children} + + ); + }, + }} + > + {output} + + ); + } + + // For objects/arrays, format as JSON + try { + return ( + + ); + } catch { + return String(output); + } + }; + contentData = ( -
- {content.name &&
Tool: {content.name}
} -
Input: {JSON.stringify(content.tool_input, null, 2)}
- {content.output && ( -
Output: {JSON.stringify(content.output)}
+
+ + {`${content.name ? `**Tool:** ${content.name}\n\n` : ""}**Input:**`} + + + {content.output !== undefined && ( + <> + + **Output:** + +
{formatToolOutput(content.output)}
+ )} {content.error && (
- Error: {JSON.stringify(content.error)} + + **Error:** + +
)}
@@ -168,7 +243,7 @@ export default function ContentDisplay({ content }: { content: ContentType }) { } return ( -
+
{renderHeader} {renderDuration} {contentData} diff --git a/src/frontend/src/components/chatComponents/DurationDisplay.tsx b/src/frontend/src/components/chatComponents/DurationDisplay.tsx index 98ba1898e49b..46cc8152dc2b 100644 --- a/src/frontend/src/components/chatComponents/DurationDisplay.tsx +++ b/src/frontend/src/components/chatComponents/DurationDisplay.tsx @@ -53,7 +53,7 @@ export default function DurationDisplay({ duration }: { duration?: number }) { bounce: 0, duration: 300, }} - className="tabular-nums" + className="text-[11px] font-bold tabular-nums" />
diff --git a/src/frontend/src/components/core/border-trail.tsx b/src/frontend/src/components/core/border-trail.tsx index 185d622eb1df..3a7683fa17ed 100644 --- a/src/frontend/src/components/core/border-trail.tsx +++ b/src/frontend/src/components/core/border-trail.tsx @@ -1,10 +1,9 @@ -"use client"; import { cn } from "@/utils/utils"; import { motion, Transition } from "framer-motion"; type BorderTrailProps = { className?: string; - size?: number; + size?: number | string; transition?: Transition; delay?: number; onAnimationComplete?: () => void; @@ -28,10 +27,12 @@ export function BorderTrail({ return (
Date: Mon, 11 Nov 2024 13:48:29 -0300 Subject: [PATCH 3/3] fix: add colors to the templates and main page cards (#4497) * Add swatch colors * Implement new colors on templates modal * Implement new colors on main page * Removed hover icon color change on templates --------- Co-authored-by: Cristhian Zanforlin Lousa --- .../TemplateCardComponent/index.tsx | 28 +++++++++---------- .../pages/MainPage/components/grid/index.tsx | 10 ++++++- .../pages/MainPage/components/list/index.tsx | 15 ++++++++-- src/frontend/src/style/index.css | 8 ++++++ src/frontend/src/utils/styleUtils.ts | 9 ++++++ src/frontend/tailwind.config.mjs | 7 +++++ 6 files changed, 60 insertions(+), 17 deletions(-) diff --git a/src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx b/src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx index 93b5bfa2f2d4..7bb54f4b1d81 100644 --- a/src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx +++ b/src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx @@ -1,5 +1,6 @@ import { convertTestName } from "@/components/storeCardComponent/utils/convert-test-name"; -import { BG_NOISE, flowGradients } from "@/utils/styleUtils"; +import { swatchColors } from "@/utils/styleUtils"; +import { cn } from "@/utils/utils"; import IconComponent, { ForwardedIconComponent, } from "../../../../components/genericIconComponent"; @@ -9,10 +10,11 @@ export default function TemplateCardComponent({ example, onClick, }: TemplateCardComponentProps) { - const directionIndex = - (example.gradient && example.gradient.split(",").length == 1 - ? example.gradient.length - : example.name.length) % flowGradients.length; + const swatchIndex = + (example.gradient && parseInt(example.gradient) + ? parseInt(example.gradient) + : (example.gradient?.length ?? example.name.length)) % + swatchColors.length; const handleKeyDown = (e) => { if (e.key === "Enter" || e.key === " ") { @@ -21,13 +23,6 @@ export default function TemplateCardComponent({ } }; - const bgGradient = - BG_NOISE + - "," + - (example.gradient && example.gradient.split(",").length > 1 - ? "linear-gradient(90deg, " + example.gradient + ")" - : flowGradients[directionIndex]); - return (
-
+
diff --git a/src/frontend/src/pages/MainPage/components/grid/index.tsx b/src/frontend/src/pages/MainPage/components/grid/index.tsx index 84d938280357..7a6f7d5f47c9 100644 --- a/src/frontend/src/pages/MainPage/components/grid/index.tsx +++ b/src/frontend/src/pages/MainPage/components/grid/index.tsx @@ -14,6 +14,8 @@ import useAlertStore from "@/stores/alertStore"; import useFlowsManagerStore from "@/stores/flowsManagerStore"; import { FlowType } from "@/types/flow"; import { getInputsAndOutputs } from "@/utils/storeUtils"; +import { swatchColors } from "@/utils/styleUtils"; +import { cn } from "@/utils/utils"; import { useState } from "react"; import { useParams } from "react-router-dom"; import useDescriptionModal from "../../oldComponents/componentsComponent/hooks/use-description-modal"; @@ -99,6 +101,12 @@ const GridComponent = ({ flowData }: { flowData: FlowType }) => { const { onDragStart } = useDragStart(flowData); + const swatchIndex = + (flowData.gradient && parseInt(flowData.gradient) + ? parseInt(flowData.gradient) + : (flowData.gradient?.length ?? flowData.name.length)) % + swatchColors.length; + return ( <> { }`} >
-
+