* Update styleUtils.ts
* update to prompt component
* update to template
* update to mcp component
* update to smart function
* [autofix.ci] apply automated fixes
* update to templates
* fix sidebar
* change name
* update import
* update import
* update import
* [autofix.ci] apply automated fixes
* fix import
* fix ollama
* fix ruff
* refactor(agent): standardize memory handling and update chat history logic (#8715)
* update chat history
* update to agents
* Update Simple Agent.json
* update to templates
* ruff errors
* Update agent.py
* Update test_agent_component.py
* [autofix.ci] apply automated fixes
* update templates
* test fix
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Fortman <michael.fortman@datastax.com>
* fix prompt change
* feat(message): support sequencing of multiple streamable models (#8434)
* feat: update OpenAI model parameters handling for reasoning models
* feat: extend input_value type in LCModelComponent to support AsyncIterator and Iterator
* refactor: remove assert_streaming_sequence method and related checks from Graph class
* feat: add consume_iterator method to Message class for handling iterators
* test: add unit tests for OpenAIModelComponent functionality and integration
* feat: update OpenAIModelComponent to include temperature and seed parameters in build_model method
* feat: rename consume_iterator method to consume_iterator_in_text and update its implementation for handling text
* feat: add is_connected_to_chat_output method to Component class for improved message handling
* feat: refactor LCModelComponent methods to support asynchronous message handling and improve chat output integration
* refactor: remove consume_iterator_in_text method from Message class and clean up LCModelComponent input handling
* fix: update import paths for input components in multiple starter project JSON files
* fix: enhance error message formatting in ErrorMessage class to handle additional exception attributes
* refactor: remove validate_stream calls from generate_flow_events and Graph class to streamline flow processing
* fix: handle asyncio.CancelledError in aadd_messagetables to ensure proper session rollback and retry logic
* refactor: streamline message handling in LCModelComponent by replacing async invocation with synchronous calls and updating message text handling
* refactor: enhance message handling in LCModelComponent by introducing lf_message for improved return value management and updating properties for consistency
* feat: add _build_source method to Component class for enhanced source handling and flexibility in source object management
* feat: enhance LCModelComponent by adding _handle_stream method for improved streaming response handling and refactoring chat output integration
* feat: update MemoryComponent to enhance message retrieval and storage functionality, including new sender type handling and output options for text and dataframe formats
* test: refactor LanguageModelComponent tests to use ComponentTestBaseWithoutClient and add tests for Google model creation and error handling
* test: add fixtures for API keys and implement live API tests for OpenAI, Anthropic, and Google models
* fix: reorder JSON properties for consistency in starter projects
* Updated JSON files for various starter projects to ensure consistent ordering of properties, specifically moving "type" to follow "selected_output" for better readability and maintainability.
* Affected files: Basic Prompt Chaining.json, Blog Writer.json, Financial Report Parser.json, Hybrid Search RAG.json, SEO Keyword Generator.json.
* refactor: simplify input_value type in LCModelComponent
* Updated the input_value parameter in LCModelComponent to remove AsyncIterator and Iterator types, streamlining the input options to only str and Message for improved clarity and maintainability.
* This change enhances the documentation and understanding of the expected input types for the component.
* fix: clarify comment for handling source in Component class
* refactor: remove unnecessary mocking in OpenAI model integration tests
* auto update
* update
* [autofix.ci] apply automated fixes
* fix openai import
* revert template changes
* test fixes
* update templates
* [autofix.ci] apply automated fixes
* fix tests
* fix order
* fix prompts import
* fix frontend tests
* fix frontend
* [autofix.ci] apply automated fixes
* add charmander
* [autofix.ci] apply automated fixes
* fix prompt frontend
* fix frontend
* test fix
* [autofix.ci] apply automated fixes
* change pokedex
* remove pokedex extra
* update template
* name fix
* update template
* mcp test fix
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Yuqi Tang <yuqi.tang@datastax.com>
Co-authored-by: Mike Fortman <michael.fortman@datastax.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* create an IO bundle
* Update styleUtils.ts
* [autofix.ci] apply automated fixes
* change folder names
* [autofix.ci] apply automated fixes
* Update test_endpoints.py
* refactor: update test IDs for input/output components in specs
* test: update test IDs for chat input/output components in decisionFlow.spec.ts
* test: update test IDs for input/output components in generalBugs-shard-5.spec.ts
* Update styleUtils.ts
* 🐛 (typescript_test.yml): increase the maximum shard count to 40 to improve test distribution and efficiency
* fix FE Tests Input output component Ids
* [autofix.ci] apply automated fixes
* ✅ (filterEdge-shard-1.spec.ts): update test to log error message when element is not visible before asserting visibility
* ✅ (notifications.spec.ts): update test selectors for better clarity and consistency in the notifications feature test suite
* 🐛 (typescript_test.yml): adjust the maximum shard count to 10 to prevent exceeding the limit and optimize test execution.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: deon-sanchez <deon.sanchez@datastax.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* models category
* [autofix.ci] apply automated fixes
* change paths
* [autofix.ci] apply automated fixes
* test: comment out visibility check for disclosure-embeddings
* test: comment out visibility check for disclosure-embeddings
* test: update selector for OpenAI language models in decision flow integration test
* test: update selector for NVIDIA models to use language model identifier
* test: update selector for OpenAI language models in regression test
* models category (#8238)
* Update styleUtils.ts
* Update test_xai.py
* test: update selectors for OpenAI language models to use 'languagemodelsOpenAI'
* Update test_embedding_model_component.py
* test: update test IDs for NVIDIA and Ollama language models to use 'languagemodels'
* test: update test IDs to use 'languagemodels' prefix for consistency
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: deon-sanchez <deon.sanchez@datastax.com>
* Add tools input to the backend
* Add tools type
* Add tools component to parameter render
* Added tools to langflow supported types
* Add tools modal
* Instantiate tools component in parameter render
* Removed div when there is not any visible actions
* Added margin
* Add ComboBoxItem and ListItem components for enhanced selection UI
* Update ComboBoxItem to display item description and enhance ToolsModal layout
* Refactor ToolsModal header styling for improved layout and icon padding
* Enhance ComboBoxItem layout and styling; update ToolsModal size and class for better responsiveness
* Changed display name
* Adds truncate for badges
* Adds custom styling for table used for Tools modal
* Added Tools modal with AgGrid
* Changed button
* made name and description editable
* Parse values for saving
* Add focused row without triggering checkbox click
* [autofix.ci] apply automated fixes
* Added types for tools modal
* added toolsTable with sidebar on toolsModal
* Added changes to work with MCP
* update component.py to add display name and display description in tool mode
* removed editing directly
* Fixed editing
* removed to upper case
* Make editing apply filters
* Adds design changes for MCP
* Adds new design and null check
* 📝 (frontend): add data-testid attribute to elements for testing purposes
🔧 (frontend): update data-testid attribute values for consistency and clarity in testing
✅ (frontend): update tests to use correct selectors and improve test coverage for editing tools functionality
* ✅ (edit-tools.spec.ts): update test to use a more reliable method for checking visibility of an element
* ✅ (edit-tools.spec.ts): add "@components" tag to the test to categorize it under components for better organization and filtering in test suites.
* Updated design with new design
* update padding
* send args to tools data
* Implemented showing arguments passed to LLM in tool mode
* add componentg name to description
* update package lock
* fixed tests
* fixed backend test
* fixed backend test
* fixed formatting
* Fixed frontend tests
* updated font sizes for badges on actions and styling on sortable list
* Update tool mode design
* added tooltips for info
* tool name update
* Update component_tool.py
* styling utils
* default values change
* fixed tools test
* fix format issues
---------
Co-authored-by: deon-sanchez <deon.sanchez@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
* Update mcp_sse.py
Uses Python's built-in asyncio.timeout() context manager
Properly handles timeout exceptions
Maintains the same functionality but with correct async context management
* [autofix.ci] apply automated fixes
* add asyncio
+clean up comment
* [autofix.ci] apply automated fixes
* missing arg_schema in Tool
Missing args_schema inside cause that tools are generated without input schema and are not able to be properly executed as agent know tool, but dost know what input field tool have.
Same problem looks to be in MCP STDIO.
* fix Ruff Check
Line 56:
Error: B904 Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling
TRY003 Avoid specifying long messages outside the exception class
EM102 Exception must not use an f-string literal, assign to variable first
* [autofix.ci] apply automated fixes
* remove asyncio.timeout
Remove asyncio.timeout() (not valid for Py3.10) and replace it by asyncio.wait_for()
* [autofix.ci] apply automated fixes
* Ruff (TRY300)
Move return response.tools inside an else block. This makes it clearer that tools are returned only if the connection is successful, and not if a TimeoutError occurs.
* fix: add session initialization check in MCPSseClient
Added a check to ensure the session is initialized before attempting to list tools, raising a ValueError with a descriptive message if the session is None. This improves error handling and robustness of the MCPSseClient class.
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Sebastián Estévez <estevezsebastian@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* test: Add session ID parameter to ToolCallingAgentComponent test
* test: Add blocking for langchain_core runnables utility function
* test: Add session ID generation to agent component test
* fix: Safely delete agent message with ID check
Modify error handling in LCAgentComponent to only delete agent message if it has an ID attribute, preventing potential attribute errors
* test: Update ComponentToolkit test to use async start and verify results
Modify the test_component_tool_with_api_key test to:
- Use async_start() method for graph execution
- Add session ID to graph
- Improve result verification with vertex result tracking
- Update import path for ChatOutput component
* test: Skip cycle tests requiring LoopComponent
Update test_cycles.py to:
- Add skip markers for tests that now require a LoopComponent
- Improve error message with snapshots for debugging
- Preserve existing test logic while marking as skipped
* test: Add client fixture to tool calling agent test
Add usefixtures decorator to ensure client is available for the tool calling agent test, improving test setup and reliability
* test: Add client fixture to component tool test with API key
Enhance test_component_toolkit.py by adding the client fixture to the test_component_tool_with_api_key method, ensuring proper test setup for API key-dependent scenarios
* test: Add client fixture to agent component test with calculator
Add client fixture to the test_agent_component_with_calculator method to ensure proper test setup for API key-dependent scenarios
* test: Disable redundant component input tests
Remove commented-out test methods for checking required inputs across various components, as these tests were not providing significant value and the inputs are dynamic
* test: Comment out condition to skip nodes with Tool outputs in setup.py
* run formatter
* test: Re-enable condition to skip nodes with Tool outputs in setup.py
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor: simplify TaskService by removing Celery integration
* refactor: enhance AnyIO backend task management and error handling
* refactor: restructure flow building process and enhance event handling
* feat: implement QueueService for managing job queues and tasks
* feat: Add QueueService for managing job queues and task lifecycle
* feat!: Enhance flow building with QueueService integration for job management
* revert changes to async session
* feat: Integrate QueueService into lifespan management for task handling
* refactor: Enhance QueueService with robust lifecycle management and cleanup mechanisms
* refactor: Simplify docstring for get_queue_service function
* refactor: Update import statements in queue factory for clarity
* test: Improve chat endpoint tests with comprehensive build flow scenarios
* refactor: Streamline flow build event generation and queue management
* refactor: Improve flow build process with modular event handling and URL parameter management
* test: Enhance loop component tests with flow build and event handling utilities
* fix: Improve transaction logging with null flow_id handling and debug logging
* fix: Remove unnecessary db.refresh() in transaction logging
* feat: Add polling mode for build events with optional streaming
* feat: Add event delivery configuration option to settings
* feat: Implement polling for build events with configuration-driven streaming
* refactor: Enhance queue cleanup with improved logging and error handling
* test: Improve build event stream assertion with detailed error reporting
* test: Add benchmark test for build flow polling mechanism
* refactor: Remove redundant end event in flow event generation
* test: Update test_component_tool_with_api_key to use async flow
* Convert test method to async
* Update graph start method to use async_start()
* Add client parameter to test method
* Modify tool retrieval to use async method
* test: Add session ID generation in agent component test
* fix: Enhance error handling in LCAgentComponent for ExceptionWithMessageError
Add null checks to prevent potential AttributeError when handling agent message deletion
* test: Refactor test assertion for model name options in agent component
Simplify the assertion for checking "sonnet" in model name options by extracting the options to a variable first
* refactor: Improve type hints and imports in AnyIOTaskResult
* Add `__future__` import for type annotations
* Use conditional import for `Callable` and `TracebackType`
* Explicitly type `_traceback` attribute with `TracebackType | None`
* fix: Add null checks for event task in build events streaming
* refactor: Extract build and disconnect handling into separate modules
This commit separates the build and disconnect handling logic from the chat API module into dedicated files:
- Created `langflow/api/build.py` to house the flow generation and vertex building logic
- Created `langflow/api/disconnect.py` to manage the custom streaming response with disconnect handling
- Removed duplicate code from `langflow/api/v1/chat.py`
- Improved code organization and modularity
* refactor: Extract flow build and event handling methods in build API
This commit introduces two new methods in the build API to improve code organization and reusability:
- `start_flow_build()`: Centralizes the logic for creating a queue and starting a flow build task
- `get_flow_events_response()`: Handles retrieving flow events for both streaming and polling modes
The changes simplify the chat API endpoint implementations and reduce code duplication
* refactor: Deprecate /task endpoint and add informative error message
This commit marks the /task endpoint as deprecated and raises an HTTP 400 error with a clear message indicating the endpoint will be removed in a future version. The changes improve API clarity and guide users towards the recommended /run endpoint.
* refactor: Update log_transaction function return type annotation
Modify the return type hint for log_transaction to allow for potential None return, improving type safety and clarity in the transactions logging method.
* feat: Add configurable event delivery streaming option
Introduce support for configurable event delivery mode (streaming/polling) across frontend components:
- Add `shouldStreamEvents()` method in NodeStatus and IOModal
- Update flowStore to accept a `stream` parameter
- Modify buildFlowVerticesWithFallback to use the stream parameter directly
- Remove hardcoded polling logic in buildUtils
* fix: Add null check for flow_id in log_transaction function
Prevent logging transactions without a flow_id by returning None, ensuring data integrity and avoiding potential database errors
* chore: Update changes-filter to include chat API path
* fix: Add error handling and null checks in flow transaction deletion
Improve robustness of transaction and vertex build deletion by:
- Adding a null check for flow_id in delete_transactions_by_flow_id
- Wrapping deletion operations in try-except blocks to prevent failures
- Logging debug messages for any deletion errors
* fix: Remove redundant commit in vertex builds deletion
Remove unnecessary db.commit() from delete_vertex_builds_by_flow_id to prevent duplicate commits and simplify database transaction handling
* fix: Improve transaction logging with debug message and return value
Move debug logging from CRUD layer to utils to provide more context about logged transactions and ensure proper error handling
* fix: Improve error handling and transaction cleanup in active_user fixture
Enhance user and transaction cleanup process in test fixture by:
- Adding separate try-except blocks for transaction/vertex build deletion and user deletion
- Adding debug logging for potential errors during cleanup
- Ensuring proper session commits for each operation
* propagate parent task CancelledError instead of supressing it
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
* refactor: Rename queue service to job queue service
Restructure job queue management by:
- Renaming QueueService to JobQueueService
- Moving queue-related files to a new job_queue directory
- Updating import paths and service type references
- Enhancing job queue service with more robust async job management
* fix: Correct ServiceType enum reference for job queue service
Update the service type constant to match the recently renamed JobQueueService, ensuring consistent service type referencing across the application.
* refactor: Enhance JobQueueService with comprehensive logging and documentation
Improve the JobQueueService implementation by:
- Adding detailed docstrings with clear explanations of methods and attributes
- Implementing comprehensive logging throughout the service
- Enhancing error handling and logging for queue and task management
- Providing more context in log messages for debugging and monitoring
* docs: Improve stop method docstring for JobQueueService
Enhance the documentation for the stop method by:
- Providing a more detailed and precise description of the shutdown process
- Clarifying the steps involved in gracefully stopping the service
- Improving the explanation of resource cleanup and task cancellation
* fix: Properly handle task cancellation and propagate exceptions in JobQueueService
* fix: Enhance error handling and raise appropriate exceptions in JobQueueService methods
* improve docstring
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
* fix: Remove redundant exception raises in JobQueueService methods and improve cleanup logic
* fix: Improve logging during job cleanup and handle exceptions more appropriately
* feat: add utility to run tests with multiple event delivery modes
* feat: integrate withEventDeliveryModes utility in multiple test files
* refactor: replace status code assertions with httpx codes for clarity
* remove noqa comment and change argument name
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
* refactor: streamline event polling logic in get_flow_events_response
* refactor: use getattr for safer session attribute access
Co-author: @cbornet
* feat: add is_started method to JobQueueService
* refactor: modify JobQueueService start method and main.py queue service initialization
* feat: add ready state and teardown method to JobQueueService
* refactor: simplify job queue cleanup logic in JobQueueService
* refactor: improve error logging in active_user fixture
* refactor: improve AnyIO task management with TaskGroup and CancelScope
* refactor: Implement LimitedBackgroundTasks for controlled vertex build logging (#6312)
* feat: implement LimitedBackgroundTasks for controlled vertex build logging
* refactor: replace BackgroundTasks with LimitedBackgroundTasks in build_flow endpoint
* refactor: improve task cancellation error handling in JobQueueService
* refactor: Rename LimitedBackgroundTasks to LimitVertexBuildBackgroundTasks
* feat: Add EventDeliveryType enum for event delivery methods
* feat: Add polling constants for endpoint and streaming status
* refactor: Update buildFlowVerticesWithFallback to use polling constants
* refactor: Update event delivery handling to use EventDeliveryType enum
* [autofix.ci] apply automated fixes
* fix: Improve error handling for cancelled build tasks
Refactor generate_flow_events to properly handle and propagate CancelledError
- Remove unnecessary task creation and manual cancellation
- Directly await _build_vertex instead of creating a separate task
- Improve exception logging for cancelled tasks
- Ensure CancelledError is raised instead of being silently handled
* fix: trigger event_manager.on_end after error handling in generate_flow_events
---------
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Update sqlmodel dependency to version 0.0.20 in pyproject.toml
* Handle UUID conversion for message IDs in memory update logic
* Refactor Alembic migrations to use `sa.inspect` and update GUID to Uuid type
* refactor: Change flow_id parameter type from str to uuid.UUID in graph building functions
* refactor: Ensure UUID handling for flow_id and user_id across various services and models
* refactor: improve UUID handling and graph caching for compatibility with sqlmodel 0.0.20
* fix: update message assertion in component events test
* chore: update sqlmodel dependency to version 0.0.22 in uv.lock and pyproject.toml
* fix: enhance flow_id validation to ensure valid UUID format in MessageBase model
* fix: add error handling for cache directory cleanup
* refactor: improve flow_id type handling in message storage
* refactor: enhance flow_id handling in message functions to support UUID type
* refactor: integrate Properties into message creation in component event tests
* update test durations
* fix: correct flow_id parameter in database query
* refactor: update session_id and flow_id parameters to support UUID type across message handling functions and models
* fix: handle message data update in SQLModel update method
* refactor: improve flow_id assignment in message update method to enhance UUID handling
* Update content_blocks initialization and add flow_id parameter to ErrorMessage
* feat: include vertex ID in class instantiation
Pass the vertex ID to the custom component during instantiation to facilitate event tracking or management capabilities.
* fix: update message streaming logic to handle None messages and refactor _stream_message parameters
* feat: include flow_id in ChatOutput initialization
Add flow_id to the ChatOutput class to improve the tracking of conversational flows, enhancing the context management within the chat system.
* fix: update chat message source display to use 'source' instead of 'display_name'
* feat: add flow_id to message initialization in ChatOutput class
* fix: handle JSON parsing with type checks for message properties
Refine JSON loading to ensure proper type handling for message properties and content blocks, enhancing stability and preventing potential errors with non-string inputs.
* refactor: update logging structure and message handling
Improve the output logs to support logging multiple entries and ensure robust message streaming with type checking. Adjust error handling parameters for consistency.
* feat: restrict event types in registration and sending
Enhance event management by explicitly defining allowed event types, improving code clarity and reducing potential errors. This ensures only valid event types are registered and sent, leading to more robust event handling.
* Update `logs` attribute to store lists of `Log` objects in `Vertex` class
* feat: introduce TypedDicts for ContentBlock and Properties, update default values in Message model
* fix: restrict event types in send_event method to improve data validation
* Set default values for 'id', 'display_name', and 'source' fields in Source schema
* [autofix.ci] apply automated fixes
* fix: update query to use equality check for error messages
* make lint
* update simple agent test
* test: enhance EventManager tests for event_id validation
* feat: add background, chat icon, and text color properties to component toolkit
* fix: update LogComponent name to display_name for consistency
* remove playground from new cards on main page
* refactor: Update Properties handling in MessageTable and remove unused PropertiesDict
* fix: Set default value for category in MessageBase model
* fix: Update properties default factory in MessageTable model to use model_dump
* Add _build_source method to ChatOutput and update test inputs to use Message objects
* Fix incorrect parameter names in _build_source method across multiple JSON files
* ✅ (freeze.spec.ts, playground.spec.ts, stop-building.spec.ts, linkComponent.spec.ts, sliderComponent.spec.ts, tableInputComponent.spec.ts, stop-button-playground.spec.ts, generalBugs-shard-7.spec.ts): enable tests that were previously skipped to ensure proper functionality and coverage. Remove outdated comments and update test descriptions for clarity.
* Refactor agent event processing to support message streaming and improve content handling
* Refactor ChatOutput to enhance message handling and streamline property assignment
* Fix session ID assignment in send_message method for better message handling
* Add OnTokenFunctionType protocol for enhanced token handling
* Add BorderTrail component for animated border effects
* Add ContentBlockDisplay component for enhanced content visualization and loading state
* Refactor TextShimmer to use motion.create for improved component animation
* Add ContentBlockDisplay to render chat content blocks in newChatMessage component
* Refactor `ChatOutput` class to use `MessageInput` instead of `MessageTextInput` for `input_value` across starter projects.
* Update edge class name from 'runned' to 'ran' in flow components and store
* Add 'on_build_start' and 'on_build_end' events to EventManager
* Add build status updates for 'build_start' and 'build_end' events in buildUtils.ts
* Integrate event management for output function in ComponentToolkit to track build start and end events
* Refactor event handling in ComponentToolkit to improve build event tracking
* Refactor messagesStore to update existing message if it already exists
* update properties to have state attribute
* format
* Refactor chatMessage component to display loading state for partial chat messages
* Refactor reactflowUtils to handle broken edges with missing display names
* fix agent text output
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix agent component initialization
* Enhance error message formatting to include detailed exception information
* Refactor agent component for improved performance and stability
* Refactor `LCAgentComponent` to streamline agent execution logic and remove redundant methods
* Add type casting for send_message function in agent.py
* Change return type of function to 'Message' in log schema
* Add `embedding_service` and `client` fields to JSON configurations and refactor ChatOutput class
- Introduced `embedding_service` field in `Vector Store RAG.json` and `Travel Planning Agents.json` to support Astra Vectorize and embedding model selection.
- Added `client` field to `OpenAIEmbeddingsComponent` in JSON configurations for enhanced client configuration.
- Refactored `ChatOutput` class across multiple JSON files to include a new `_build_source` method for constructing `Source` objects, improving code modularity and readability.
- Updated import paths for `OpenAIEmbeddings` to reflect changes in the module structure.
* Update attribute handling in Component class to merge inputs with existing attributes
* Update ChatInput and ChatOutput initialization to include session_id
* Refactor test_load_flow_from_json_object to be asynchronous
* Add asynchronous tests for agent event handling in test_agent_events.py
* Add event handling functions for agent tool and chain events
- Implement functions to handle various agent events such as `on_chain_start`, `on_chain_end`, `on_tool_start`, `on_tool_end`, and `on_tool_error`.
- Introduce helper functions to build content blocks for agent messages.
- Create mappings for chain and tool event handlers.
- Refactor `process_agent_events` to utilize the new event handling functions.
- Remove the old `process_agent_events` implementation from `agent.py` and import the new one from `events.py`.
* feat: update content structure and validation logic
Enhance content block to accept a list of contents instead of a single item, and implement validation to ensure proper format. Refactor tool-related content types for improved clarity and functionality.
* Handle ValidationError in error message generation and update import paths
* feat: enhance error event creation to include structured error content
* move validators and remove utils.py
* feat: add event handler tests for agent tool and chain events
* refactor: streamline tool content structure
Combine multiple tool-related types into a single, more flexible interface. This simplifies the content handling by allowing optional properties for output, error, and timestamp, enhancing overall code maintainability. Adjust the ContentBlock interface to accommodate an array of contents for improved flexibility.
* feat: refactor error handling in ChatMessage component to support dynamic content blocks
* feat: enhance ContentBlockDisplay to support Markdown rendering and dynamic content handling
* Refactor agent event handling to simplify content block management
* Enhance `ContentBlockDisplay` with separators and improved content rendering logic
* add inline block to prevent text overflow in reason
* Refactor code to enhance Markdown rendering and dynamic content handling in ChatMessage component
* [autofix.ci] apply automated fixes
* Add timestamp field to BaseContent class and remove from ToolContent class
* Update timestamp validation to include fractional seconds in BaseContent class
* Add duration calculation for agent and tool events in events.py
* Refactor ContentBlock to use Pydantic's Discriminator and Tag for content types
* Add field validators for content_blocks and properties in Message class
* Add field serializer for source in Properties class
* Add type hint for serialize_properties method in MessageTable class
* create duration component and refactor contents
* [autofix.ci] apply automated fixes
* Refactor duration calculation to use perf_counter for improved accuracy and update ContentBlockDict to use dict for contents
* Update properties field validator to use 'before' mode for improved validation
* Refactor MessageTable to use ContentBlock instead of ContentBlockDict and enhance validation and serialization for properties and content_blocks
* Refactor AgentComponent to streamline agent initialization by using the set method directly
* Refactor event handling functions to use synchronous definitions and improve performance with asyncio.to_thread
* Refactor PythonREPLToolComponent to raise ToolException on error instead of returning error message
* Refactor CalculatorToolComponent to enhance error handling by raising ToolException and improving expression evaluation feedback
* Fix TextShimmer width in ContentBlockDisplay for improved layout consistency
* Enhance ContentBlockDisplay to support external links and math rendering in Markdown
* Enhance error handling in Calculator and Python REPL tools by introducing `ToolException` and improving expression evaluation logic.
* Refactor agent message properties to remove unnecessary icons and update content block titles for clarity
* feat: enhance agent and tool content messaging
Add headers to agent and tool content messages for better clarity and user experience.
* Handle nested schema structure in ContentBlock initialization
* fix: update agent input text content return type and enhance error message formatting
* Add placeholder and default value for model selection in AstraVectorStoreComponent
* Refactor event handling functions to remove `send_message_method` parameter and streamline message processing logic.
* Add model configuration to ToolContent for alias population
* Refactor agent event tests to improve message handling and content block initialization
* test: Update test durations for performance metrics
Adjust the recorded execution times for various test cases to ensure accurate performance tracking and facilitate optimization efforts.
* Refactor test_load_flow_from_json_object to improve project loading logic
* Make `HeaderDict` fields optional and update `header` field in `BaseContent`
* Enhance `Message` and `ChatOutput` with additional attributes for testing
* Update test duration metrics in .test_durations file
* Refactor `ContentDisplay` component to support multiple content types and improve rendering logic
* feat: Enhance duration display with human-readable format
Integrate the pretty-ms library to convert duration display metrics into a more user-friendly format, improving the overall user experience. Update dependencies to ensure compatibility with the latest version and optimize for newer Node.js versions.
* feat: Add optional duration and header properties to BaseContent interface
* fix: Change duration type from float to int in BaseContent class
* Remove default value for 'start_time' in duration calculations
* Enhance `ContentBlockDisplay` with dynamic header and expand/collapse animation
- Added `state` prop to `ContentBlockDisplay` to dynamically set header icon and title based on content state.
- Implemented `renderContent` function to encapsulate content rendering logic with animation.
- Integrated `ForwardedIconComponent` for displaying header icons.
- Updated `newChatMessage.tsx` to pass `state` prop to `ContentBlockDisplay`.
* Add animation to header title using AnimatePresence and motion components
* Add support for processing zip files with multithreading in FileComponent
- Enhanced FileComponent to handle individual and zipped text files.
- Introduced multithreading option for parallel processing of files within zip archives.
- Updated supported file types to include zip files.
- Improved error handling and logging for file processing.
* Expand `Message` conversion to support `AsyncIterator` and `Iterator` types.
* Remove unused function _find_or_create_tool_content from events.py
* Add header information to tool content and streamline message sending in event processing
* Add send_message_method parameter to event handlers for message dispatching
- Updated event handler functions to include a new parameter, `send_message_method`, allowing for message dispatching within the handlers.
- Modified the logic in each handler to utilize the `send_message_method` for sending messages.
- Adjusted the main event processing logic to pass the `send_message_method` to the appropriate handlers.
* Refactor ContentBlockDisplay component to improve rendering performance and user experience
* Refactor `ContentBlockDisplay.tsx` to improve readability and update header title logic
* [autofix.ci] apply automated fixes
* Add 'start_time' to event data and update test functions to include send_message mock
* Refactor ContentBlockDisplay component to include total duration and improve user experience
* Refactor ContentBlockDisplay component to handle isLoading state for total duration calculation
* Refactor animatedNumbers component and add AnimatedNumberBasic component
- Refactor the animatedNumbers component to improve readability and update the header title logic.
- Add a new component called AnimatedNumberBasic that displays an animated number with a specific value.
* Refactor agent message creation to improve event processing efficiency
* Refactor session ID assignment in run_graph_internal for improved clarity
* [autofix.ci] apply automated fixes
* fix: update agent message properties handling for improved compatibility
* fix: enhance message property validation to support dictionary input
* Add session_id to agent message initialization in tests
- Updated test cases in `test_agent_events.py` to include `session_id` in the `Message` initialization.
- Adjusted calls to `process_agent_events` to pass the `agent_message` with `session_id`.
* feat: Enhance event handling with duration tracking
Add start_time parameter to event handling functions to ensure consistent duration calculations across different stages of agent processing. This improves accuracy in measuring event durations and enhances overall event management.
* Add optional humanized value to AnimatedNumber component and update DurationDisplay usage
* Refactor `ContentDisplay` and add separator to `ContentBlockDisplay` component
* Add header to text content in agent message events
* Add separator between each content block in ContentBlockDisplay component
* Refactor layout in ContentDisplay component for improved styling and positioning
* Refactor event handlers to return updated start_time and agent_message
- Modified event handler functions to return a tuple of `agent_message` and `start_time`.
- Updated `_calculate_duration` to handle `start_time` as an integer.
- Ensured `start_time` is reset using `perf_counter()` after each event handling.
- Adjusted tool and chain event handler calls to accommodate the new return type.
* Add start_time and duration checks to agent event handlers in tests
- Updated test cases for `handle_on_chain_start`, `handle_on_chain_end`, `handle_on_tool_start`, `handle_on_tool_end`, `handle_on_tool_error`, and `handle_on_chain_stream` to include `start_time` as a return value.
- Added assertions to verify that `start_time` is a float and `duration` is an integer where applicable.
* [autofix.ci] apply automated fixes
* update colors and spacing of time
* [autofix.ci] apply automated fixes
* Refactor DurationDisplay component to display duration in seconds
* Rename case from "message" to "add_message" in buildUtils.ts switch statement
* Add event registration for message removal in EventManager
* Add category handling for message events in Component class
* Add custom exception handling for agent message processing
* Handle exceptions in agent event processing with message deletion and event notification
* Add new LLM options and refactor AgentComponent for dynamic provider handling
- Introduced new language model options: Anthropic, Groq, and NVIDIA.
- Refactored `AgentComponent` to utilize `MODEL_PROVIDERS_DICT` for dynamic provider handling.
- Simplified input management by removing hardcoded provider inputs and using a dictionary-based approach.
- Enhanced `update_build_config` to support flexible provider configurations and custom options.
* Refactor buildUtils.ts and add message removal handling
* Update Source model to allow None values for id, display_name, and source fields
* Refactor event handler functions to return tuple of Message and float
* Refactor `ChatOutput` class to use `MessageInput` instead of `MessageTextInput` for `input_value` across starter projects.
* Add test for updating component outputs with dynamic code input
* feat: add ToolModeMixin to manage tool mode state
* feat: add parameterName to mutateTemplate for enhanced template mutation
* feat: add tool mode functionality to node toolbar
Implement a toggle for tool mode, allowing users to easily switch functionalities within the node toolbar. This enhancement improves user interaction by providing a dedicated mode for tool-related tasks.
* feat: integrate ToolModeMixin into MessageTextInput for enhanced functionality
* Update parameterId to "tool_mode" in nodeToolbarComponent
* feat: implement tool mode output handling in run_and_validate_update_outputs
* feat: add conditional rendering for tool mode button based on template fields
* fix: enhance null checks for tool mode button visibility and output validation
* feat: add isToolMode property to NodeInputFieldComponentType for enhanced functionality
* feat: add isToolMode prop to NodeInputField for conditional styling
* feat: implement sorting logic for tool mode fields in GenericNode component
* feat: add isToolMode prop to NodeOutputField for conditional styling
* feat: pass isToolMode prop to NodeOutputField for conditional styling
* feat: update disabled logic in NodeInputField to include isToolMode
* Add default placeholder to getPlaceholder function and constants file
* feat: Enable dynamic placeholders in input components
Add support for customizable placeholder text across various input components to enhance usability and improve user experience.
* feat: Add optional placeholder prop to InputProps type
* feat: Add placeholder prop to InputGlobalComponent and CustomParameterComponent
* feat: Set dynamic placeholder for NodeInputField based on tool mode
* feat: Update NodeOutputField styling for tool mode and pass isToolMode prop
* feat: Add isToolMode prop to OutputComponent for dynamic styling
* feat: Add TOOL_OUTPUT_DISPLAY_NAME constant for toolset display
* feat: Update tool output display name to use TOOL_OUTPUT_DISPLAY_NAME constant
* feat: Conditionally render Freeze Path button based on tool mode
* Add support for asynchronous output methods and tool mode validation in component tools
* feat: Validate required inputs for tool mode before executing output methods
* Refactor: Rename method to indicate private access in custom_component
- Changed `get_function_entrypoint_return_type` to `_get_function_entrypoint_return_type` in `custom_component.py` to reflect its intended private usage.
- Updated references to the renamed method in `utils.py` and `directory_reader.py` to maintain consistency.
* feat: Implement tool output mapping based on tool mode presence in inputs
* Refactor tests to use private method _get_function_entrypoint_return_type
* feat: Enable tool mode for input_value in LCAgentComponent
* Add test for updating component outputs with dynamic code input
* feat: add tool mode functionality to node toolbar
Implement a toggle for tool mode, allowing users to easily switch functionalities within the node toolbar. This enhancement improves user interaction by providing a dedicated mode for tool-related tasks.
* feat: add conditional rendering for tool mode button based on template fields
* feat: add isToolMode prop to NodeInputField for conditional styling
* feat: Set dynamic placeholder for NodeInputField based on tool mode
* feat: Add TOOL_OUTPUT_DISPLAY_NAME constant for toolset display
* feat: Conditionally render Freeze Path button based on tool mode
* Add tool mode support to LCAgentComponent
- Introduced new input fields: `agent_name`, `agent_description`, and `add_tools_to_description` to support tool mode.
- Implemented methods `get_tool_name`, `get_tool_description`, `_build_tools_description`, and `to_toolkit` for handling tool-related functionalities.
- Enhanced `MessageTextInput` with additional information for better user guidance.
- Updated agent message sender name to use `agent_name` if available.
* Fix return statement placement in event handling logic
* Add tool mode enhancements and error handling in component_tool
- Introduce optional parameters `tool_name`, `tool_description`, and `callbacks` to `get_tools` method.
- Implement error handling for tool creation with `handle_tool_error` and `callbacks`.
- Ensure single tool validation when `tool_name` or `tool_description` is provided.
- Add support for `BaseModel` result serialization using `model_dump`.
* Refactor agent response method and update output configuration
* Remove unused 'input_value' field from tool_calling.py configuration
* Refactor source property assignment to use _build_source method
* Enhance callable input check and add callbacks to toolkit conversion
* Add unit tests for message update functionality in backend
- Implement tests for updating single and multiple messages.
- Add tests for handling nonexistent messages during updates.
- Include tests for updating messages with timestamps, content blocks, and nested properties.
- Ensure proper serialization and storage of message properties.
* Add field serializer for 'output' using jsonable_encoder in content_types.py
* Add tool mode fields and refactor message response in starter projects
- Introduced new fields `add_tools_to_description`, `agent_description`, and `agent_name` for tool mode configuration in JSON starter projects.
- Refactored `message_response` method to utilize `_build_source` for constructing message source properties.
- Updated method references from `get_response` to `message_response` for consistency.
- Adjusted input field descriptions and added missing metadata attributes.
* Implement no-op send_message function and patching decorator for component tools
* Refactor output handling in component tool to support Message and Data types
* Simplify exception handling by removing redundant exception re-raise
* Enhance tool assignment logic to preserve existing name and description if not provided
* feat: Enhance agent name and description handling
Refactor the agent component to dynamically include tool names in the default agent name and description. This improves clarity for users by providing more context about the agent's capabilities and ensures consistent representation of tools in the interface.
* refactor: Update agent description and name info to include default values and dynamic tool integration
* Add custom encoders for serialization and refactor schema modules
- Introduce `CUSTOM_ENCODERS` in `encoders.py` to handle serialization of `Callable` and `datetime` objects.
- Refactor `BaseContent` to use `model_serializer` for model serialization with custom encoders.
- Remove redundant `encode_callable` function and `CUSTOM_ENCODERS` definition from `artifact.py`.
- Update imports and clean up unused imports in schema modules.
* Remove 'agent_name' field and update 'get_tool_name' method in agent.py
* Enhance `serialize_model` method with `wrap` mode and improved error handling
* Add 'tool_mode' attribute to frontend node class
* Add unit tests for ContentBlock initialization and content handling
* Add unit tests for content types serialization and creation
* Refactor tool mode initialization logic in NodeToolbarComponent
* Add tool mode functionality to node toolbar and flow store
* Add updateNodeInternals call for tool_mode case in nodeToolbarComponent
* Add condition to hide handle in tool mode in NodeInputField component
* Add shortcut for activating Tool Mode and integrate into node toolbar
* Add tool_mode parameter to MessageTextInput and update attributes mapping
* Remove 'agent_name' field from Agent Flow configuration file
* Update agent message to use display_name instead of agent_name
* Add validation for required tools in agent execution and component setup
* Make 'tools' field required in AgentComponent configuration
* test: add unit tests for run_and_validate_update_outputs functionality
Implement comprehensive tests for the `run_and_validate_update_outputs` method across various scenarios, including enabling/disabling tool mode, handling invalid output structures, and supporting custom update logic. Validate that outputs are correctly updated and ensure appropriate error handling for invalid cases.
* test: update component toolkit tests to use CalculatorToolComponent
* Enhance input schema creation logic for tool mode components
* Include input expression in error responses for calculator tool
* Enhance `visit_Attribute` to check for required inputs in `tree_visitor.py`
* fix: add checks for graph attribute before accessing session and flow IDs in Component methods
* fix: set default value to None for id field in PlaygroundEvent model
* fix: remove unused add_toolkit_output flag from FeatureFlags model
* Refactor JSON configurations to remove unnecessary required inputs across starter projects
* Add tool mode validation and improve error handling
- Updated import statement for ContentBlock to fix import path.
- Modified `send_message_noop` to require a `Message` parameter and added type ignore for method assignment.
- Enhanced error message in tool mode validation to handle `None` input names.
- Changed return type of `send_error_message` to `Message` for consistency.
- Provided default value for `get_tool_name` to handle missing display names.
* Add pytest fixture to test_component_message_sending test
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* Refactor sessionSelector component to improve session management and interaction
* Refactor IOModal component to remove unused code and improve session management
* fix typing error
* fix run chat input on component level
* prevent toogle visibility on session menu
* fix bug on rename session while in table view mode
* chore: Update setSelectedView prop type in sessionSelector component
* add first test version not working yet
* fix bug for renaming and deleting session
* refactor: Update sessionSelector component to handle session changes
* improve test
* fix rename session multiple session bugs
* change visible session from array to string
* chore: Update editMessageField component to include margin-right for text span
* [autofix.ci] apply automated fixes
* Update down_revision in Alembic migration script
* Refactor IOModal component to simplify session visibility handling
* Add new schema for playground events with various event types
- Introduce `PlaygroundEvent` base class and specific event types: `MessageEvent`, `ErrorEvent`, `WarningEvent`, `InfoEvent`, and `TokenEvent`.
- Implement `ContentBlock` class for flexible content handling.
- Add factory functions to create different event types.
- Utilize Pydantic for data validation and serialization.
* Add PlaygroundEvent to LoggableType in log schema
* Add timestamp validation utility to schema utils and refactor Message class to use it
* Add custom serialization for datetime and Decimal in data schema
* Add session_id handling to graph and chat API
- Introduce `_session_id` attribute in the graph base class.
- Implement getter and setter for `session_id` property.
- Update chat API to set `session_id` from inputs if available.
* Add error handling for event creation in EventManager
- Integrate `create_event_by_type` to generate playground events.
- Add try-except block to handle `TypeError` during event creation and log the error using `loguru`.
- Raise any other exceptions encountered during event creation.
* Enhance session ID handling in vertex base logic
* Add message handling and streaming capabilities to custom component
- Introduced `send_message` method to handle message sending with optional formatting and content blocks.
- Implemented `_store_message`, `_send_message_event`, and `_should_stream_message` for message storage and event management.
- Added `_update_stored_message` and `_stream_message` to support message streaming and updating.
- Included `_handle_async_iterator` and `_process_chunk` for processing message chunks from iterators.
* Add new schema types and properties for chat and messages components
* Add customizable chat message styles and icons in IOModal component
* Add support for handling Playground events in chat view
- Introduced `PlaygroundEvent` type to manage different event types such as message, error, warning, info, and token.
- Implemented `handlePlaygroundEvent` function to process and update chat history based on event type.
- Enhanced file parsing logic to handle empty strings and parsing errors.
- Added default values for `background_color` and `text_color` in chat messages.
* revert changes made to bypass ruff-check
* revert changes made to bypass ruff-check
* Refactor file parsing logic in ChatView component
* fix ui problem
* Refactor feature flags and chat view components
- Enable new IO modal in feature flags
- Update imports and remove unused code in newChatMessage component
- Add error icon and error message in ChatMessage component
- Update lockChat icon position in newChatView component
- Import OctagonAlert icon in styleUtils
* Refactor IOModal newModal component styles
* Refactor styles in EditMessageField and ChatMessage components
* Refactor styles in EditMessageField component
* Refactor styles in ChatMessage component to fix UI problem
* Refactor styles in UploadFileButton component and add image attachment tooltip
* Refactor styles in ChatCodeTabComponent to update language text color
* fix padding in other field views
* Refactor styles in ChatComponent and add tooltip to the playground
* Refactor styles in constants.ts to remove unused input and output types
* Refactor session selector styles
* Refactor chatView component styles
* update colors to use variables
* Refactor code tab component and update code styling
* Refactor buttonSendWrapper component styles
* update colors to use variables
* update colors to use variables
* Refactor chatComponent and chatInput styles
* update colors to use variables
* chore: add new attributes to model definition
* chore: generate database migration
* chore: add MetaData and ContentBlock models and update Message schema
* chore: add error handling to build_results and adjust message event handling
* chore: deserialize meta_data and content_blocks fields in add_messagetables
* raw
* Refactor message and chat types to include category, meta_data, and content_blocks
* raw
* Refactor error handling in component.py and newChatMessage.tsx
* add source to bot messages
* raw
* Refactor chatMessage component to include meta_data icon and source
* improve icon, background color, text color handling in chat message
* add edit flag correctly
* use svg icon logo instead of chain emoji
* add text effect
* update error colors
* fix error aligment
* add text shimmer effect
* improve is running style
* Add support for importing SVG files in Vite environment
* Add chatLogoIcon component with Chain logo
* Refactor chat message component to use chatLogoIcon component
* Refactor chatView component to use chatLogoIcon component
* remove from empty chat
* update text sizes and style
* remove icon in message logs
* fix stop button color
* update background color and sender name size
* prevent list index out of range error
* Fix onBlur event in EditMessageField component
* improve edit message field
* improve edit background behaviour
* Update chat input styling for better user experience
* Refactor ChatCodeTabComponent to remove redundant "Copy" text in button
* Refactor code to use CSS variables for background color in code blocks
* Refactor ChatCodeTabComponent to update code block styling
* Refactor code to update code block styling and improve chat input styling
* prevent Flow Running after error rendering
* Refactor code to add IOModalOpen state and setter function
* Refactor code to add IOModalOpen state and setter function
* Refactor code to remove console.log statement
* update icon and padding
* Refactor code to retrieve connected model name in ChatComponent
* run formatter
* fix stop button glitch
* update max width
* Refactor GithubStarButton component to handle null value for stars
* Refactor tailwind.config.mjs to add utility classes for fading text truncation
* improve faded truncate function
* Refactor ChatView component to handle null value for chat history category
* [autofix.ci] apply automated fixes
* Refactor DialogContent component to improve close button styling
* Refactor IOModal component to improve sidebar behavior and styling
* Refactor ChatView component to remove unused code and improve performance
* Refactor session selector component to add tooltip for options
* [autofix.ci] apply automated fixes
* update several icon sizes and hover states
* [autofix.ci] apply automated fixes
* Refactor IOModal component to improve sidebar behavior and styling
* Refactor IOModal component to handle sidebar behavior on window resize
* [autofix.ci] apply automated fixes
* fix error related to content blocks being null
* [autofix.ci] apply automated fixes
* add component id as sender to the message
* add component id as source to the message
* Add fitViewNode function to FlowStoreType
* enable closing chat on error message
* Add ClickableLinks component for rendering clickable URLs in chat messages
* add error message transition
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* use IsPlayground flag
* Remove console.log statement in setIOModalOpen function
* update max-w
* prevent breaking the buttons on small screen
* [autofix.ci] apply automated fixes
* remove underline when component is not clicable
* Refactor IOModal component to remove unnecessary props and update usage
- Remove the "isPlayground" prop from the IOModal component in cardComponent and storeCardComponent
- Update the usage of the IOModal component in chatComponent and newModal to use the "canvasOpen" prop instead of "isPlayground"
* fix html missing closing tag error
* [autofix.ci] apply automated fixes
* Refactor PlaygroundPage component to improve flow initialization and data fetching
* [autofix.ci] apply automated fixes
* Refactor cardComponent and storeCardComponent to comment out playground buttons
* Refactor message model to replace 'meta_data' with 'properties' and update related schema and components
* Add new schema for content types with Pydantic models
* Add ContentBlock schema with support for multiple content types
* Refactor: Import ContentBlock from langflow.schema.content_block instead of defining locally
* Add SendMessageFunctionType protocol to log schema for message handling
* Refactor chat message model to replace 'meta_data' with 'properties' and update related components
* Add ContentBlock import and enhance send_message method in component.py
- Import ContentBlock from langflow.schema.content_block.
- Replace 'meta_data' with 'properties' in message construction.
- Update send_message method to handle optional Message and text parameters.
* Add async on_chain_start method to callback for logging chain start events
* Refactor add_messagetables function to replace 'meta_data' with 'properties' in message processing
* Fix typo in 'traceback' property name in ErrorDetails interface
* Add condition to check chat history length before rendering chat lock
* Refactor error content structure and enhance message event handling
* Add `update_messages` function to handle message updates in memory module
* Add check for 'id' attribute in stored_message for message validation
* Add new content types and TypeAlias for schema in content_types.py
* Add custom serialization for UUID and BaseModel types in data schema
* Refactor `ContentType` to use `ContentTypes` union and update `content` field in `ContentBlock` model
* Update model to use specific types for properties and content_blocks fields
* Change return type of 'serialize_params' method to string
* Add sender fields and properties handling to PlaygroundEvent and create_message function
* Refactor chat message component to use 'properties' instead of 'meta_data' for chat attributes
* Refactor message handling to improve error categorization and session management
* Enhance ContentBlock initialization to update model fields with defaults
* Add new content types and update ContentBlock interface in chat types
- Introduced BaseContent interface and various content types: ErrorContent, TextContent, MediaContent, JSONContent, CodeContent, ToolStartContent, ToolEndContent, and ToolErrorContent.
- Created a union type ContentType for all content types.
- Updated ContentBlock interface to include new content structure and additional fields.
* Refactor error handling in chat messages to use `ErrorContent` type
* Add ErrorMessage class for handling error-specific messages in schema
* Add type annotations for cache and logs in custom_component.py
* Refactor error handling in custom component to use `send_error` method
* Add customizable properties for chat components
- Introduced new properties: `background_color`, `chat_icon`, and `text_color` to chat components across various starter projects.
- These properties allow for customization of the chat message appearance, including icon and text styling.
- Updated the `ChatInput` and `ChatOutput` components to handle these new properties and include them in the message response.
* Add 'category' field to MessageEvent and update create_message function
* Remove unused message handling methods from ChatComponent
* Refactor message event handling in chat module
* Add 'category' field to Message creation and pass 'id_' in _send_message_event
* Add 'category' field with Literal type to Message schema and default handling in chat IO
* Refactor message event handling in chat module
* Refactor buttonSendWrapper component to add data-testid attribute
* Refactor ChatComponent to replace 'store_message' with 'send_message' method
* refactor: streamline message handling in Component
Update message processing to utilize new methods for improved clarity and efficiency. Enhance event data management to ensure accuracy and consistency in message updates.
* feat: Update input handling and output storage for chat components
Enhance chat input and output components to improve message handling, including updates to storage and display properties. This facilitates better user experience and message management in various agent projects.
* Ensure 'id' field is set in message data dictionary if not present
* refactor: Simplify property retrieval from source component in ChatComponent
* refactor: Replace property retrieval logic with a dedicated method in ChatOutput
* Refactor `TokenEvent` class and add `timestamp` field with default factory
* refactor: Simplify message processing by removing unused parameters in async handling
* Refactor message text update logic in messagesStore
* Refactor border styling in ChatInput component
* refactor: Consolidate properties handling in PlaygroundEvent and create_message function
* refactor: Update timestamp formatting to include timezone information across multiple models
* refactor: Add StreamingError exception for better error handling in streaming components
* refactor: Add source_display_name attribute to Properties model for enhanced data representation
* refactor: Enhance ChatComponent to return source display name and update properties handling in ChatOutput
* refactor: Improve error handling in Component class and enhance create_error function with timestamp support
* feat: enhance ChatOutput component for improved message handling
Update the message_response method to include source display name and improve message storage functionality across various project templates. This enhances clarity and ensures consistent behavior of chat components.
* feat: add delete_message function to remove messages by ID from the monitor service
* Add error handling for message streaming and implement message deletion on failure
* feat: Enhance message streaming and event handling
Improve the streaming process to send message events only for non-streaming messages and ensure the initial message is sent correctly when processing chunks, enhancing the overall message handling flow.
* improve UI
* Refactor buttonSendWrapper component to add data-testid attribute and update tests
* fix edited tag
* add tooltip to add button
* fix bug after merge
* update examples
* updateinput without chat
* fix some frontend tests
* fix test
* update test
* Update fileUploadComponent.spec.ts to fix test and update input without chat
* refactor event creation functions and enhance ErrorEvent structure
* refactor ErrorMessage to use Source for sender and component details
* refactor Properties to use Source model for source details and add validation
* refactor ChatMessage component for improved readability and structure
* refactor ChatMessageType to use PropertiesType for improved structure and clarity
* Add Source ID to message properties and update exception handling
- Updated `message_response` method to include `source_id` in the `Properties` object for better traceability.
- Modified `StreamingError` to use `Source` object instead of `component_name` for more detailed error context.
- Adjusted `get_properties_from_source_component` to return `source_id` along with other properties.
* Add 'Source' property to error handling in custom_component module
- Introduced 'Source' property to enhance error message details.
- Updated error handling to include 'source' instead of 'display_name'.
- Modified exception raising to use 'source' for better traceability.
* Enhance event ID generation with event type prefix in `send_event` method
* Refactor ChatOutput class to use Properties and Source schemas for message properties
* update style in tailwind and add fallback for nullable values
* fix playground test
* Update message handling in Component class to send modified message copy on first chunk
* Add flow_id and session_id to ErrorEvent creation function
* Update content_blocks initialization and add flow_id parameter to ErrorMessage
* feat: include vertex ID in class instantiation
Pass the vertex ID to the custom component during instantiation to facilitate event tracking or management capabilities.
* fix: update message streaming logic to handle None messages and refactor _stream_message parameters
* feat: include flow_id in ChatOutput initialization
Add flow_id to the ChatOutput class to improve the tracking of conversational flows, enhancing the context management within the chat system.
* fix: update chat message source display to use 'source' instead of 'display_name'
* feat: add flow_id to message initialization in ChatOutput class
* fix: handle JSON parsing with type checks for message properties
Refine JSON loading to ensure proper type handling for message properties and content blocks, enhancing stability and preventing potential errors with non-string inputs.
* refactor: update logging structure and message handling
Improve the output logs to support logging multiple entries and ensure robust message streaming with type checking. Adjust error handling parameters for consistency.
* feat: restrict event types in registration and sending
Enhance event management by explicitly defining allowed event types, improving code clarity and reducing potential errors. This ensures only valid event types are registered and sent, leading to more robust event handling.
* Update `logs` attribute to store lists of `Log` objects in `Vertex` class
* feat: introduce TypedDicts for ContentBlock and Properties, update default values in Message model
* fix: restrict event types in send_event method to improve data validation
* Set default values for 'id', 'display_name', and 'source' fields in Source schema
* [autofix.ci] apply automated fixes
* fix: update query to use equality check for error messages
* make lint
* update simple agent test
* test: enhance EventManager tests for event_id validation
* feat: add background, chat icon, and text color properties to component toolkit
* fix: update LogComponent name to display_name for consistency
* remove playground from new cards on main page
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* Remove unnecessary use of 'client' fixture in test_superuser
* Remove unnecessary use of 'usefixtures' decorator in test files
* Update test fixtures to improve test duration tracking
* Remove unnecessary 'client' fixture from test cases
* Add `required_inputs` field to `Output` model in `base.py`
* Refactor ComponentTool to ComponentToolkit and enhance tool creation logic
- Replaced `ComponentTool` with `ComponentToolkit` to better encapsulate component-related tools.
- Introduced `build_description` and `_build_output_function` helper functions for dynamic tool creation.
- Updated tool initialization to handle multiple outputs and required inputs using `StructuredTool`.
- Improved schema creation for tool arguments based on component inputs.
* Refactor `to_tool` method to `to_toolkit` to use `ComponentToolkit` instead of `ComponentTool`
* Refactor `ComponentTool` to `ComponentToolkit` in unit tests
- Updated import statements to reflect the new `ComponentToolkit` class.
- Modified test logic to use `ComponentToolkit` for retrieving tools.
- Adjusted assertions to match the new structure and output format.
- Ensured compatibility with `Message` schema for output validation.
* Refactor `test_component_to_tool` to validate `ComponentToolkit` and tool properties
* Refactor `build_description` to include input types in the output format
* Add method to set required inputs for outputs based on method analysis
- Introduced `_set_output_required_inputs` method to determine and set required inputs for each output by analyzing the method's source code.
- Added necessary imports (`ast` and `dedent`) to support the new functionality.
* Update test to assert full tool description in test_component_to_tool.py
* Add unit tests for verifying required inputs of various components
- Added tests to ensure that required inputs for outputs are present in the inputs of `ChatInput`, `ChatOutput`, `SequentialTaskComponent`, `ToolCallingAgentComponent`, and `OpenAIModelComponent`.
- Included helper functions to check if required inputs are in inputs and to assert that all outputs have different required inputs.
* Add RequiredInputsVisitor to identify required inputs in AST nodes
- Introduced RequiredInputsVisitor class to traverse AST nodes and collect required inputs.
- The visitor checks for 'self' attributes matching the provided inputs and adds them to the required_inputs set.
* Refactor required inputs extraction using `RequiredInputsVisitor`
* Add feature flags configuration for toolkit output in settings
* Add toolkit output handling based on feature flag in custom component utils
* Add method to append 'component_as_tool' output in custom component
* Add unit test for toolkit output feature flag in custom component
* Add utility functions for lazy loading and instantiating input types in langflow
- Introduced `get_InputTypesMap` for lazy loading of `InputTypesMap`.
- Added `instantiate_input` function to create instances of input types dynamically.
- Included type checking and error handling for invalid input types.
* Refactor input instantiation logic and update imports
- Removed `instantiate_input` function from `inputs.py` and moved it to `utils.py`.
- Updated imports in `base.py` to reflect the new location of `instantiate_input`.
- Added missing import for `Callable` in `base.py`.
* Refactor import statement to use `instantiate_input` from `langflow.inputs.utils` in test_inputs.py
* Add TOOL_OUTPUT_NAME constant to tools module
* Add type checking and TOOL_OUTPUT_NAME filter in ComponentToolkit
- Introduced `TYPE_CHECKING` for type hints to avoid circular imports.
- Added `TOOL_OUTPUT_NAME` constant to filter specific outputs in `ComponentToolkit`.
- Updated type annotations to use forward references.
* Refactor component toolkit import to avoid circular dependency and use constant for tool output name
* Refactor `ComponentToolkit` class to remove inheritance from `BaseToolkit` and add an initializer for `component`
* Add unit test for ComponentToolkit in test_component_to_tool
- Added `test_component_to_tool_has_no_component_as_tool` to verify that `ComponentToolkit` correctly initializes with a `ChatInput` component and returns the expected tools.
* Refactor toolkit output handling to `custom_component` module
* fix: mypy errors union-attr and arg-type
* Add 'OTHER' field type to schema in langflow/io/schema.py
* Add tool name formatting to ComponentToolkit to ensure valid characters
* Refactor toolkit output handling and add type hint for `to_toolkit` method
* Add `is_interface_component` attribute to vertex types and update import order
* Add tests for ToolCallingAgentComponent and ChatOutput with API key handling
- Updated `test_component_tool` to reflect new description format.
- Added `test_component_tool_with_api_key` to test `ToolCallingAgentComponent` with `ChatOutput` and OpenAI API key.
- Enabled `add_toolkit_output` feature flag for testing.
* Refactor `_find_matching_output_method` to accept `input_name` parameter for more precise input-output matching
* Replace ValueError with warning in build_description function
* use chat_output component directly in set
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 3/3)
* Refactor: Reorder method calls in `__init__` for logical consistency
Moved `set_class_code` method call to ensure output types and required inputs are set before class code initialization.
* Update _format_tool_name to allow '.' in tool names
* Refactor `_format_tool_name` to remove non-alphanumeric characters
* Update test assertions for component tool name and output mapping
* Handle case where 'required_inputs' is empty in 'component_tool.py'
* Refactor import statements for better readability in `base.py`
* [autofix.ci] apply automated fixes
* Add noqa comment to suppress import warning and re-add Any import in base.py
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>