* refactor(loop): implement isolated subgraph execution for LoopComponent
- Refactor LoopComponent to execute loop body as isolated subgraph
- Add create_subgraph method to Graph class for creating isolated subgraphs
- Add loop_utils with get_loop_body_vertices helper function
- Add on_end_vertex event emission in async_start for progress tracking
- Add comprehensive tests for subgraph execution and event emission
This change enables proper vertex event streaming during loop execution
by running each iteration as an isolated subgraph with its own context.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve subgraph event streaming to UI
- Add event types to stream token event manager (end_vertex, error, build_start, build_end)
- Preserve start_component_id in async_start for proper subgraph execution
- Fix has_chat_output/has_chat_input to use vertex.base_name instead of string matching
- Add _stream_to_playground check to allow inner graph components to send events
- Fix _send_message_event to properly extract and forward message IDs
* update index
* fix: Enhance extract_loop_output to handle multiple message formats
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve intra-layer cycle detection logging in sorting function
* refactor: Update loop execution to create fresh subgraph for each iteration
* test: Add tests for subgraph isolation and state management
* fix: Update LoopComponent description for clarity on item processing
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Add warning log for missing custom_component in loop item injection
* refactor: Simplify loop event tests while preserving critical coverage
Reduced test complexity by removing excessive mocking while maintaining completeå event manager propagation coverage. Event manager tests are critical for ensuring UI updates work correctly during loop execution.
* fix: Update Google dependency version to 2.5.0 across multiple components
* fix: Update value format in Research Translation Loop JSON for clarity
* fix: Inject loop items into HandleInput fields via raw_params
HandleInput fields (type="other") were receiving None instead of loop items
because:
1. Fields with type="other" are skipped during field param processing
2. Loop->Parser edge is filtered out in subgraph creation
3. updated_raw_params flag was reset too early by multiple build_params() calls
Fix:
- Inject loop items into template before prepare()
- Inject into raw_params after prepare() using update_raw_params()
- Persist updated_raw_params flag across all build_params() calls
- Reset flag in _build_each_vertex_in_params_dict() after processing
Tests:
- Add integration test exercising execute_loop_body() code path
- Verify update_raw_params() called with correct data per iteration
- Add full Loop+Parser integration test
- Fix fieldName -> field_name in existing tests
* fix: Update done_output method to use internal event manager and improve event handling
* refactor: Update execute_loop_body to use async context manager for subgraph creation and cleanup
* fix: import json in unified_models.py
* feat: Implement subgraph tracing context management
* fix: Update code_hash and improve loop component execution logic
* fix: Update code_hash and refine LoopComponent execution logic
* [autofix.ci] apply automated fixes
* fix: Update LoopComponent subgraph execution to set event manager as instance attribute
* test: Enhance subgraph execution tests to verify event manager passing
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Update Google and Vertex AI docs, starter projects, and Blog Writer component
Expanded documentation for Google Generative AI and Vertex AI components to include Gemini 1.5, 2.0, 2.5, and 3.0 series models. Updated several starter project JSONs to improve model config logic. Refactored the Blog Writer's URLComponent to remove the 'markitdown' dependency and Markdown output option, now supporting only 'Text' and 'HTML' formats. Adjusted dependency metadata accordingly.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* Features: job status table with related DB model, migration files, job status tracking.
Added status wrapper to handle job status updates in the DB.
Added filtration using job_id to fetch job status responses.
fix: Generate job response from vertex builds history by job id. (#11457)
* feat: reconstruct workflow execution response from vertex_build by job_id
* [autofix.ci] apply automated fixes
* fix: use correct attribute name 'id' instead of 'vertex_id' in VertexBuildTable
* Updated the GET endpoint to return WorkflowExecutionResponse
---------
Co-authored-by: Janardan S Kavia <janardanskavia@Janardans-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Added /stop endpoint, task handling, job_id typing through job_service, job_status updates.
Consolidated migration files into one single migration.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Add IBM WatsonX URL and Project ID fields to Agent component
The Agent component was missing the IBM WatsonX-specific configuration
fields (watsonx API Endpoint and Project ID) that are required for
WatsonX models. This caused validation errors when using WatsonX models
with the Agent.
Changes:
- Add DropdownInput for watsonx API Endpoint (base_url_ibm_watsonx)
- Add StrInput for watsonx Project ID (project_id)
- Pass watsonx_url and watsonx_project_id to get_llm() call
- Add dynamic show/hide logic in update_build_config() for WatsonX fields
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test: Add unit tests for IBM WatsonX support in Agent component
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix(tests): Use underscore for unused lambda argument to pass lint
* [autofix.ci] apply automated fixes
* fix agent component
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.com>
* feat: Allow renaming and deleting the Starter Project folder
* feat: Ensure flows always have a valid folder_id and add tests for folder integrity
* refactor: remove obsolete test file for folder utility functions
* fix: remove unused variable
* fix: enhance folder handling in flow creation process
* fix: encrypt api key
* fix: remove unnecessary if condition
* fix: remove unnecessary if condition
* [autofix.ci] apply automated fixes
* fix: added better exception laballing
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* improve functions and clean up
* improve functions and clean up
* improve functions and clean up
* fix: add benchmark test for large api_key set
* Revert "fix: add benchmark test for large api_key set"
This reverts commit 4e86d04df0.
* fix: add benchmark test for large api_key set
* fix: use real DB for better simulated testing
* [autofix.ci] apply automated fixes
* fix testcases
* fix testcases
* fix testcases
* fix testcases
* fix testcases
* fix ruff
* improved space complexity by adding dependency injection
* this fix helps ensure that testcases don't have to use api_key that start with sk-
* fix: update testcase
---------
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Add validation for complex mustache patterns (sections, conditionals,
partials, etc.) in the validate_prompt function when using mustache mode.
Previously, syntactically valid but unsupported patterns like
{{#section}}{{/section}} were accepted during save but caused runtime
errors with "Complex mustache syntax is not allowed".
Now the same validation that runs at runtime also runs during the
Check & Save phase, providing immediate feedback to users.
* Add nightly hash history script to nightly workflow
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add lfx-nightly to script
* Handle first run
* Try fixing version on nightly hash history
* remove lfx lockfile since it does not exist
* Get full version in build, handle the [extras] in pyprojects
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* language update
* Handle extras in langflow-base dependency in all workflows
* [autofix.ci] apply automated fixes
* Fix import in lfx status response
* [autofix.ci] apply automated fixes
* Use built artifact for jobs, remove wait period
* use [complete] when building test cli job
* skip slack message added to success
* Update merge hash histry job to only run when ref is main
* Updates pyproject naming to add nightly suffix
* [autofix.ci] apply automated fixes
* Fix ordering of lfx imports'
* [autofix.ci] apply automated fixes
* Ah, ignore auto-import fixes by ruff
* [autofix.ci] apply automated fixes
* update test to look at _all_ exported instead
* [autofix.ci] apply automated fixes
* perf: Limit enum options in tool schemas to reduce token usage (#11370)
* fix current date tokens usage
* Update src/lfx/src/lfx/io/schema.py
* remove comment
---------
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
* update date test to reflect changes to lfx
* ruff
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
* feat: Transform sticky notes to compact 260x100px rectangles
- Change dimensions from 324x324px squares to 260x100px rectangles (75% less space)
- Increase text size from text-mmd to text-base (16px) with font-medium for better readability
- Add rounded corners to drag preview for visual consistency
- Fix vertical growth by using fixed dimensions with overflow scrolling
- Remove unused state variables and improve code maintainability
- Add comprehensive test suite for dimensions, text styling, and overflow behavior
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
* revert stp
* increase size to 280x140 and gh suggestions
* add padding
* fix tests jest
* [autofix.ci] apply automated fixes
* fix tests sticky notes
* [autofix.ci] apply automated fixes
* add openai api key
* fix research translation loop
* Enhance scrollbar visibility for sticky notes
* [autofix.ci] apply automated fixes
* fix: GitHub Actions explixitly set grep string
use single quotes instead of using escaping double quotes
* revert some files
* fix: Update outdated components test assertions for accuracy
* fix: Correct test selector for Chroma DB in tweaksTest.spec.ts
---------
Co-authored-by: Claude <noreply@anthropic.com>
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: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com>
* Add global variable mode to TextInputComponent
Introduces a 'Use Global Variable' boolean input to the TextInputComponent, allowing users to toggle between multiline text input and a single-line, password-masked input for selecting global variables. Updates the MultilineInput class to support a 'password' attribute, and adjusts the component index to reflect these changes.
* Add 'Use Global Variable' option to TextInputComponent
Introduces a 'use_global_variable' boolean input to the TextInputComponent in all starter project JSONs. This option allows users to select from global variables, disabling multiline editing and enabling password masking when active. The update includes logic in the component code to dynamically adjust the input field configuration based on this setting.
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Remove redundant dependencies from pyproject.toml
* feat: Refactor optional dependencies in pyproject.toml for improved organization and clarity
* feat: Update optional dependencies in pyproject.toml for enhanced functionality and organization
* feat: Consolidate dependencies in pyproject.toml for better management
* feat: Expand complete installation dependencies in pyproject.toml for comprehensive support
* new lock
* feat: Update package versions and refactor complete installation dependencies in pyproject.toml
* update lock
* feat: Update dependencies in pyproject.toml to use 'local' installation and restructure complete installation groups
* feat: Add langchain_elasticsearch dependency to elasticsearch in pyproject.toml
* feat: Add types-cachetools dependency and update version constraints for existing packages in pyproject.toml
* feat: Update pyproject.toml to change langflow-base dependency from 'local' to 'complete' installation and remove dev extra
* Update pyproject.toml to modify dependencies and improve installation structure
* refactor: Remove 'deploy' and 'dev' extras from complete installation in pyproject.toml
* add missing deps
* fix: update langchain-chroma dependency version to 0.2.6
* Remove clickhouse and pypdf from main deps
* move clickhouse
* add lock
* update lockfile
* Add utility function to convert pandas/numpy scalars to int
* Update component index
* Update component index
* fix: update no_leaks decorator to include threads for test isolation
* fix: refine model_is_empty condition for better clarity
* feat: Add pluggable services architecture in lfx and comprehensive testing (#10111)
* feat: Introduce service registration decorator and enhance ServiceManager for pluggable service discovery
- Added `register_service` decorator to allow services to self-register with the ServiceManager.
- Enhanced `ServiceManager` to support multiple service discovery mechanisms, including decorator-based registration, config files, and entry points.
- Implemented methods for direct service class registration and plugin discovery from various sources, improving flexibility and extensibility of service management.
* feat: Implement VariableService for managing environment variables
- Introduced VariableService class to handle environment variables with in-memory caching.
- Added methods for getting, setting, deleting, and listing variables.
- Included logging for service initialization and variable operations.
- Created an __init__.py file to expose VariableService in the package namespace.
* feat: Enhance LocalStorageService with Service integration and async teardown
- Updated LocalStorageService to inherit from both StorageService and Service for improved functionality.
- Added a name attribute for service identification.
- Implemented an async teardown method for future extensibility, even though no cleanup is currently needed.
- Refactored the constructor to ensure proper initialization of both parent classes.
* feat: Implement telemetry service with abstract base class and minimal logging functionality
- Added `BaseTelemetryService` as an abstract base class defining the interface for telemetry services.
- Introduced `TelemetryService`, a lightweight implementation that logs telemetry events without sending data.
- Created `__init__.py` to expose the telemetry service in the package namespace.
- Ensured robust async methods for logging various telemetry events and handling exceptions.
* feat: Introduce BaseTracingService and implement minimal TracingService
- Added `BaseTracingService` as an abstract base class defining the interface for tracing services.
- Implemented `TracingService`, a lightweight version that logs trace events without external integrations.
- Included async methods for starting and ending traces, tracing components, and managing logs and outputs.
- Enhanced documentation for clarity on method usage and parameters.
* feat: Add unit tests for service registration decorators
- Introduced a new test suite for validating the functionality of the @register_service decorator.
- Implemented tests for various service types including LocalStorageService, TelemetryService, and TracingService.
- Verified behavior for service registration with and without overrides, ensuring correct service management.
- Included tests for custom service implementations and preservation of class functionality.
- Enhanced overall test coverage for the service registration mechanism.
* feat: Add comprehensive unit and integration tests for ServiceManager
- Introduced a suite of unit tests covering edge cases for service registration, lifecycle management, and dependency resolution.
- Implemented integration tests to validate service loading from configuration files and environment variables.
- Enhanced test coverage for various service types including LocalStorageService, TelemetryService, and VariableService.
- Verified behavior for service registration with and without overrides, ensuring correct service management.
- Ensured robust handling of error conditions and edge cases in service creation and configuration parsing.
* feat: Add unit and integration tests for minimal service implementations
- Introduced comprehensive unit tests for LocalStorageService, TelemetryService, TracingService, and VariableService.
- Implemented integration tests to validate the interaction between minimal services.
- Ensured robust coverage for file operations, service readiness, and exception handling.
- Enhanced documentation within tests for clarity on functionality and expected behavior.
* docs: Add detailed documentation for pluggable services architecture and usage
* feat: Add example configuration file for Langflow services
* docs: Update PLUGGABLE_SERVICES.md to enhance architecture benefits section
- Revised the documentation to highlight the advantages of the pluggable service system.
- Replaced the migration guide with a detailed overview of features such as automatic discovery, lazy instantiation, dependency injection, and lifecycle management.
- Clarified examples of service registration and improved overall documentation for better understanding.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* test(services): improve variable service teardown test with public API assertions
* docs(pluggable-service-layer): add docstrings for service manager and implementations
* Update component index
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* test: Standardize service mocking with shared pytest fixtures for reliable test isolation (#11350)
* refactor: Replace aiofile with aiofiles for async file operations (#11351)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: update dependencies for backwards compatibility
* update index
* [autofix.ci] apply automated fixes
* fix: update duckduckgo dependency to duckduckgo-search and remove obsolete entries
* fix: update version check to reflect lfx instead of langflow
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* feat: Add dynamic options to various starter project configurations
* [autofix.ci] apply automated fixes
* fix: Update dependencies for langchain and langchain-community to latest compatible versions
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>