* fix: update ruff dependency version to ~0.13.1 in pyproject.toml and uv.lock
* Update uv.lock
* chore: Update uv.lock with new Python version requirements and package metadata
- Incremented revision to 3.
- Updated Python version requirements to support >=3.10 and <3.14.
- Simplified resolution markers for Python versions and platform compatibility.
- Added upload-time metadata for several packages in the lock file, enhancing traceability of package versions.
- Updated aiohttp version to 3.13.0 and adjusted related package metadata accordingly.
---------
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
* feat: Dynamically load LiteLLM model options in AstraAssistantManager
* fix: Strip options from fields with real_time_refresh to ensure stable component index
* update index
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Implement upsert functionality for flows with conflict handling and validation
* test: add tests for upsert
* [autofix.ci] apply automated fixes
* fix: handle None data in webhook check
* fix: allow clearing endpoint_name on PUT update
* fix: validate empty fs_path on update and assert login success in test
* refactor: address review feedback - improve docstrings, use 404 for security, consistent JSONResponse
* refactor: move persistence logic into _new_flow and simplify return pattern
_new_flow now handles flush, refresh, and filesystem save internally,
returning FlowRead directly. This eliminates duplication between POST
and PUT endpoints. PUT endpoint now uses single return with variable
status code.
* fix: update upload endpoint to work with refactored _new_flow
_new_flow now handles persistence and returns FlowRead directly,
so the upload endpoint no longer needs to call flush/refresh/save.
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Add global variable support for MCP server headers
- Add IOKeyPairInputWithVariables component for header inputs with global variable dropdown
- Integrate global variable selection in MCP Server modal
- Add variable resolution in MCP server headers (_resolve_global_variables_in_headers)
- Add variable loading and decryption in MCP API endpoint and component
- Add unit tests for variable resolution utility function
* test: Add comprehensive unit tests for IOKeyPairInputWithVariables component
- Add 15 test cases covering rendering, user interactions, and edge cases
- Test global variable dropdown functionality and selection
- Test row addition/removal and input validation
- Test duplicate key detection and error handling
- Test initialization from existing values with variable badges
- Addresses CodeRabbit review feedback for frontend test coverage
* [autofix.ci] apply automated fixes
* test: fix frontend Jest tests for IOKeyPairInputWithVariables component
- Added proper mocks for IconComponent, InputComponent, and Input
- Used explicit TypeScript types instead of 'any' for mock props
- Fixed test assertions to match actual component structure (Type key.../Type a value... placeholders)
- All 8 tests now pass without console warnings
- Tests cover: rendering, onChange callbacks, add/delete buttons, global variables toggle
* fix: restore session_scope import to module level for test mocking
The session_scope import was moved inside _process_headers method, which broke
unit tests that mock it at the module level. Restored it to module-level imports
with noqa comment to prevent ruff from removing it, and removed the duplicate
import from inside the method.
Fixes: test_database_config_used_when_no_value_config
* chore: trigger CI rebuild to test for flaky Playwright test
* Update component index
* chore: update Nvidia Remix starter project with session_scope import fix
* perf(mcp): optimize global variable loading to prevent timeouts
Only load global variables from database when headers are actually present
in the MCP server config. This avoids unnecessary database queries for
servers without headers, significantly improving performance and preventing
timeouts in tests that repeatedly connect to MCP servers.
The optimization adds a conditional check before the database query:
- has_headers = server_config.get('headers') and len(server_config.get('headers', {})) > 0
- Only queries database if has_headers is True
This resolves the cumulative delay issue where each MCP connection retry
was performing an expensive database query even when no headers were configured.
* [autofix.ci] apply automated fixes
* fix(test): update Playwright test for new header input component structure
Update MCP server Playwright test to work with the new KeyPairInputWithVariables
component that uses InputComponent with global variable support for header values.
Changes:
- Use getByPlaceholder() instead of getByTestId() for header value fields
- Header value fields now use InputComponent which doesn't expose data-testid
The new component structure wraps the value input in InputComponent to provide
global variable dropdown functionality, requiring a different selector strategy.
* chore: update Nvidia Remix starter project
Update starter project file that was modified by the automated build pipeline.
* Update component index
* fix: replace jose with jwt (#11285)
* replace jose with jwt
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* pin to lower pyjwt
* pyjwt version
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Update component index
* Update component index
* [autofix.ci] apply automated fixes
* Update component index
* chore: trigger CI rebuild
* [autofix.ci] apply automated fixes
* refactor: remove langflow imports from lfx MCP component
Separate lfx from langflow by using the service layer pattern:
Changes:
1. Extended VariableServiceProtocol in lfx with get_all_decrypted_variables()
2. Implemented the method in langflow's DatabaseVariableService
3. Updated MCP component to use get_variable_service() instead of direct imports
4. Added comprehensive unit tests for the new service method
Benefits:
- Clean separation between lfx and langflow packages
- Uses existing service architecture pattern
- Maintains performance optimization (only loads variables when needed)
- No breaking changes to functionality
Removed direct langflow imports from mcp_component.py (auth utils, Variable model, settings service, and sqlmodel select).
Files modified:
- src/lfx/src/lfx/services/interfaces.py
- src/backend/base/langflow/services/variable/service.py
- src/lfx/src/lfx/components/models_and_agents/mcp_component.py
- src/backend/tests/unit/services/variable/test_service.py (added 3 new tests)
* fix: Handle global variables correctly for components
- Fix UUID type conversion in variable service to prevent SQLAlchemy errors
- Add type-based decryption: only decrypt CREDENTIAL variables, not GENERIC
- Improve error handling in decrypt_api_key to prevent crashes on second attempt
- Resolves 'str object has no attribute hex' error when loading global variables
This fixes issues with watsonx.ai and MCP components when using global variables.
* [autofix.ci] apply automated fixes
* Update component index
* Consider other failed decryption cases
* fix(variable-service): Fix UUID conversion and type-based variable decryption
- Convert string to UUID in get_all_decrypted_variables() to prevent SQLAlchemy errors
- Implement type-based decryption: only decrypt CREDENTIAL variables, not GENERIC
- Simplify get_all() to return stored values directly for both variable types
- Fixes watsonx component update error (400 status) when editing values
Resolves issue where editing watsonx.ai component values caused:
'Error while updating the Component' with 400 client error
* [autofix.ci] apply automated fixes
* chore: update starter project files
* fix: remove explicit value assignment to allow credential redaction
* fix: handle credential redaction in frontend and fix Playwright test hangs
- Update GlobalVariableModal to handle None credential values
- Allow credential updates without re-entering value
- Fix userSettings test by using dispatchEvent for clicks
- Add waitForTimeout after clicks to prevent hangs
- Use .first() for Fields selectors to avoid strict mode violations
* [autofix.ci] apply automated fixes
* Update component index
* [autofix.ci] apply automated fixes
* fix: improve error handling and logging for variable decryption
Address code review feedback:
1. Increase log level from debug to warning when decryption fails in
auth/utils.py. Returning empty string silently could cause issues,
so warning level makes failures more visible.
2. Follow established pattern in mcp.py for variable decryption:
- Only decrypt CREDENTIAL type variables (encrypted in storage)
- Use GENERIC type variables as-is (stored as plaintext)
- Change from silent fallback (adebug) to explicit error (aerror)
- This matches the pattern in get_all_decrypted_variables()
These changes make error handling more explicit and consistent across
the codebase.
* Update component index
* Update component index
* [autofix.ci] apply automated fixes
* chore: trigger CI rebuild
* [autofix.ci] apply automated fixes
* Updates to ensure backwards compatibility for encrypted generic variables
* Skip failed decryption
* Fix test
* ruff
* update starter projects
* ruff
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* comp index
* [autofix.ci] apply automated fixes
* remove unnecessary step in pandas series conversion
---------
Co-authored-by: Steve Haertel <shaertel@ca.ibm.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: Jordan Frazier <jordan.frazier@datastax.com>
* Remove hash history from index
* first draft of adding component id and stable hash history
* Simplify - use version -> hash mapping
* Add unit tests and simple safeguards for stable vs nightly
* Add uniqueness check for comp id in comp index build
* Remove component id - use name as unique id
* Use component name as unique identifier - fix tests
* regenerate hash history; add script to makefile
* Remove component id
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* ruff
* comp index
* ruff
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* update index
* ruff
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* 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>
* feat: add IBM icon and reorganize IBM WatsonX icon structure
- Add new IBM logo icon (IBM.jsx, ibm.svg) for generic IBM provider branding
- Reorganize icon directory structure: move IBMWatsonx to IBM parent folder with watsonx subfolder
- Export both WatsonxAiIcon and IBMIcon from consolidated IBM index
- Update icon mapping in use-get-model-providers to support both 'IBM WatsonX' and 'IBM watsonx.ai' provider names
- Standardize quote style from double to single quotes across use-get-model-providers.
* added doc link support
* refactor: standardize IBM WatsonX icon references and quote style
- Update all WatsonX model metadata to use generic "IBM" icon instead of "WatsonxAI"
- Standardize quote style from double to single quotes in ModelProvidersPage imports
* refactor: standardize quote style and update LLM section label in ModelSelection
- Change all double quotes to single quotes in ModelSelection component and tests
- Update "LLM Models" label to "Language Models" for consistency
- Standardize arrow function formatting across component
* fixes the model provider streching the page
* fixes border not being fully hidden
* updated api doc url
* fix: improve model field default value logic and provider field visibility
- Update default value setting logic to check current model value from build_config instead of field_value parameter
- Only set default when field_name is None (initial load) or when model field is being set and is empty
- Fix provider-specific field visibility to use current model value from build_config when field_name is not model
- Ensure provider fields are shown/hidden correctly regardless of which field triggere
* fix: improve model validation and refresh logic in model provider modal
- Add client-side filtering of disabled models in ModelInputComponent using enabled models data
- Implement validateModelValue function to ensure selected models are available and valid
- Move refreshAllModelInputs call from ModelProvidersContent cleanup to ModelProviderModal handleClose with 1000ms delay to ensure database transactions complete
- Remove race condition between cleanup effect and debounced mutateTemplate by not
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* revery lru cache
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* updated component_index
* updated templates
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* refactor: convert use-refresh-model-inputs and api types to single quotes and add ModelOptionType
- Convert double quotes to single quotes throughout use-refresh-model-inputs.ts and api/index.ts
- Add ModelOptionType interface with name, id, icon, provider, and metadata properties
- Update validateModelValue to use typed ModelOptionType instead of any for option filtering
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fixed tests
* removed sticky property
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: adds markdown as an output for the URL component
I found that I wanted to retain structure and URLs when loading from a URL, but HTML output provided too many useless tokens and text output lost that structure. This uses Microsoft's Markitdown package to turn results of the RecursiveURLLoader into markdown.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* add validation for api key for global variables
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Set agentic_experience default to False
Changed the default value of the agentic_experience setting from True to False to prevent the agentic MCP server from starting by default.
* docs: Change CORS headers example to use array syntax
This ensures that the LANGFLOW_CORS_* environment variable examples are using the correct and working syntax.
* Place origins in list[str] as well
---------
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Proof of Concept: Adding lifecycle events.
Added AGUI events to vertices and the graph. Created Decorator to add observability to Langflow workflows. TODO: Unit tests, feature gating to nullify impact in current production code paths.
Added unit tests for lifecycle_events. Refraining from using event_manager for now since this capability is goig to stay dormant until APIs are ready for streaming.
Added unit tests for before_callback_event and after_callback_event in graph and vertex classes.
Co-authored-by: Debojit Kaushik <debojitkaushik@Debojits-MacBook-Pro.local>
* fix: temporalio dep missing for macos-amd64
temporalio dep missing for macos-amd64
* chore: pin pydantic-ai version dependent on system
* chore: add ci solution again
* chore: use macos-15-intel runner explicitly
* chore: revert back to working state
* chire: code rabbit refinements
* fix: properly skip test when skip flags are set
* chore: code rabbit refinements stable
* fix: add loading state to prevent duplicate flow creation on click
* Centralizing loading state to all components that create flow
* refactor(TemplatesModal): extract handleCreateBlankFlow from JSX
---------
Co-authored-by: Antônio Alexandre Borges Lima <antonio@Antonios-MacBook-Pro.local>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
* Use same logic for clearEdges and detect broken edges
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: add context menu functionality to edges and integrate Radix UI context menu components
- Added `@radix-ui/react-context-menu` dependency to package.json.
- Implemented context menu in `DefaultEdge` component for edge deletion.
- Created a new `context-menu.tsx` file to encapsulate context menu components using Radix UI.
* chore: update package-lock.json after adding context menu for edges
* [autofix.ci] apply automated fixes
* test: update ComposIO and connect tools tests to ensure correct edge interactions
* [autofix.ci] apply automated fixes
* feat: add tests for edge creation and deletion via context menu
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Create controller shell and schema model for new workflow API
- Add workflow API endpoints (POST /workflow, GET /workflow, POST /workflow/stop)
- Implement developer API protection with settings check
- Add comprehensive workflow schema models with proper validation
- Create extensive unit test suite covering all scenarios
- Apply Ruff linting standards and fix all code quality issues
- Support API key authentication for all workflow endpoints
* fix: Move developer API check to router-level dependency
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix: Remove response model as its automatically configured.
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* [autofix.ci] apply automated fixes
---------
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>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Janardan S Kavia <janardanskavia@mac.war.can.ibm.com>