Commit 8c8ac03
fix: Clear input fields data operations (#11773)
* feat: Pluggable AuthService with abstract base class (#10702) (#11654)
feat(auth): Pluggable AuthService with abstract base class (#10702)
* 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
* test(services): improve variable service teardown test with public API assertions
* docs(pluggable-service-layer): add docstrings for service manager and implementations
* fix: remove duplicate teardown method from LocalStorageService
During rebase, the teardown method was added in two locations (lines 57 and 220).
Removed the duplicate at line 57, keeping the one at the end of the class (line 220)
which is the more appropriate location for cleanup methods.
* fix(tests): update service tests for LocalStorageService constructor changes
- Add MockSessionService fixtures to test files that use ServiceManager
- Update LocalStorageService test instantiation to use mock session and settings services
- Fix service count assertions to account for MockSessionService in fixtures
- Remove duplicate class-level clean_manager fixtures in test_edge_cases.py
These changes fix test failures caused by LocalStorageService requiring
session_service and settings_service parameters instead of just data_dir.
* fix(services): Harden service lifecycle methods
- Fixed Diamond Inheritance in LocalStorageService
- Added Circular Dependency Detection in _create_service_from_class
- Fixed StorageService.teardown to Have Default Implementation
* docs: Update discovery order for pluggable services
* fix(lfx): replace aiofile with aiofiles for CI compatibility
- The aiofile library uses native async I/O (libaio) which fails with
EAGAIN (SystemError: 11, 'Resource temporarily unavailable') in
containerized environments like GitHub Actions runners.
- Switch to aiofiles which uses thread pool executors, providing reliable
async file I/O across all environments including containers.
* [autofix.ci] apply automated fixes
* fix(lfx): prevent race condition in plugin discovery
The discover_plugins() method had a TOCTOU (time-of-check to time-of-use)
race condition. Since get() uses a keyed lock (per service name), multiple
threads requesting different services could concurrently see
_plugins_discovered=False and trigger duplicate plugin discovery.
Wrap discover_plugins() with self._lock to ensure thread-safe access to
the _plugins_discovered flag and prevent concurrent discovery execution.
* [autofix.ci] apply automated fixes
* 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: 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.
* docs(pluggable-service-layer): add docstrings for service manager and implementations
* feat(auth): implement abstract base class for authentication services and add auth service retrieval function
* refactor(auth): move authentication logic from utils to AuthService
Consolidate all authentication methods into the AuthService class to
enable pluggable authentication implementations. The utils module now
contains thin wrappers that delegate to the registered auth service.
This allows alternative auth implementations (e.g., OIDC) to be
registered via the pluggable services system while maintaining
backward compatibility with existing code that imports from utils.
Changes:
- Move all auth logic (token creation, user validation, API key
security, password hashing, encryption) to AuthService
- Refactor utils.py to delegate to get_auth_service()
- Update function signatures to remove settings_service parameter
(now obtained from the service internally)
* refactor(auth): update authentication methods and remove settings_service parameter
- Changed function to retrieve current user from access token instead of JWT.
- Updated AuthServiceFactory to specify SettingsService type in create method.
- Removed settings_service dependency from encryption and decryption functions, simplifying the code.
This refactor enhances the clarity and maintainability of the authentication logic.
* test(auth): add unit tests for AuthService and pluggable authentication
- Introduced comprehensive unit tests for AuthService, covering token creation, user validation, and authentication methods.
- Added tests for pluggable authentication, ensuring correct delegation to registered services.
- Enhanced test coverage for user authentication scenarios, including active/inactive user checks and token validation.
These additions improve the reliability and maintainability of the authentication system.
* fix(tests): update test cases to use AuthService and correct user retrieval method
- Replaced the mock for retrieving the current user from JWT to access token in the TestSuperuserCommand.
- Refactored unit tests for MCP encryption to utilize AuthService instead of a mock settings service, enhancing test reliability.
- Updated patch decorators in tests to reflect the new method of obtaining the AuthService, ensuring consistency across test cases.
These changes improve the accuracy and maintainability of the authentication tests.
* docs(pluggable-services): add auth_service to ServiceType enum documentation
* fix(auth): Add missing type hints and abstract methods to AuthServiceBase (#10710)
* [autofix.ci] apply automated fixes
* fix(auth): refactor api_key_security method to accept optional database session and improve error handling
* feat(auth): enhance AuthServiceBase with detailed design principles and JIT provisioning methods
* fix(auth): remove settings_service from encrypt/decrypt_api_key calls
After the pluggable auth refactor, encrypt_api_key and decrypt_api_key
no longer take a settings_service argument - they get it internally.
- Update check_key import path in __main__.py (moved to crud module)
- Remove settings_service argument from calls in:
- api/v1/api_key.py
- api/v1/store.py
- services/variable/service.py
- services/variable/kubernetes.py
- Fix auth service to use session_scope() instead of non-existent
get_db_service().with_session()
* fix(auth): resolve type errors and duplicate definitions in pluggable auth branch
- Add missing imports in auth/utils.py (Final, HTTPException, status,
logger, SettingsService) that prevented application startup
- Remove duplicate NoServiceRegisteredError class in lfx/services/manager.py
- Remove duplicate teardown method in lfx/services/storage/local.py
- Fix invalid settings_service parameter in encrypt_api_key calls
in variable/service.py and variable/kubernetes.py
- Add proper type guards for check_key calls to satisfy mypy
- Add null checks for password fields in users.py endpoints
* [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
* replace jose with pyjwt
* [autofix.ci] apply automated fixes
* starter projects
* fix BE mcp tests
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* remive legacy usage of session
* fix user tests
* [autofix.ci] apply automated fixes
* fix lfx tests
* starter project update
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix mypy errors
* fix mypy errors on tests
* fix tests for decrypt_api_key
* resolve conflicts in auth utils
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add pluggable authentication factory with provider enum
* Add SSO feature flags to AuthSettings
* Add SSO fields to User model
* Add SSO configuration loader with YAML support
* Add unit tests for SSO configuration loader
* Add SSO configuration database model and CRUD operations
* Add CRUD operations for SSO configuration management
* Add SSO configuration service supporting both file and database configs
* Add example SSO configuration file with W3ID and other providers
* Implement OIDC authentication service with discovery and JIT provisioning
* Update AuthServiceFactory to instantiate OIDC service when SSO enabled
* Improve JWT token validation and API key decryption error handling
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* fix: resolve ruff linting errors in auth services and add sso-config.yaml to gitignore
* [autofix.ci] apply automated fixes
* fix: use correct function name get_current_user_from_access_token in login endpoint
* fix: remove incorrect settings_service parameter from decrypt_api_key call
* fix: correct encryption logic to properly detect plaintext vs encrypted values
* [autofix.ci] apply automated fixes
* fix tests
* [autofix.ci] apply automated fixes
* fix mypy errors
* fix tests
* [autofix.ci] apply automated fixes
* fix ruff errors
* fix tests in service
* [autofix.ci] apply automated fixes
* fix test security cors
* [autofix.ci] apply automated fixes
* fix webhook issues
* modify component index
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix webhook tests
* [autofix.ci] apply automated fixes
* build component index
* remove SSO functionality
* [autofix.ci] apply automated fixes
* fix variable creation
* [autofix.ci] apply automated fixes
* refactor: move MCPServerConfig schema to a separate file and update model_dump usage
* refactor: streamline AuthServiceFactory to use service_class for instance creation
* handle access token type
* [autofix.ci] apply automated fixes
* remove SSO fields from user model
* [autofix.ci] apply automated fixes
* replace is_encrypted back
* fix mypy errors
* remove sso config example
* feat: Refactor framework agnostic auth service (#11565)
* modify auth service layer
* [autofix.ci] apply automated fixes
* fix ruff errorrs
* [autofix.ci] apply automated fixes
* Update src/backend/base/langflow/services/deps.py
* address review comments
* [autofix.ci] apply automated fixes
* fix ruff errors
* remove cache
---------
* move base to lfx
* [autofix.ci] apply automated fixes
* resolve review comments
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* add auth protocol
* [autofix.ci] apply automated fixes
* revert models.py execption handling
* revert wrappers to ensure backwards compatibility
* fix http error code
* fix FE tests
* fix test_variables.py
* [autofix.ci] apply automated fixes
* fix ruff errors
* fix tests
* add wrappers for create token methods
* fix ruff errors
* [autofix.ci] apply automated fixes
* update error message
* modify status code for inactive user
* fix ruff errors
* fix patch for webhook tests
* fix error message when getting active users
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <[email protected]>
Co-authored-by: Mike Pawlowski <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: ogabrielluiz <[email protected]>
Co-authored-by: Deon Sanchez <[email protected]>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
* fix: adjusted textarea and playground paddings and design (#11635)
* revert textarea to old classes
* fixed text-area-wrapper to handle initial height when value is calculated
* fixed playground padding
* fixed no input text size
* [autofix.ci] apply automated fixes
* fixed flaky test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: create guardrails component (#11451) (#11671)
* Create guardrails.py
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Update guardrails.py
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* tests: add unit tests for GuardrailsComponent functionality
* [autofix.ci] apply automated fixes
* fix: resolve linting errors in GuardrailsComponent and tests
- Fix line length issues (E501) by breaking long strings
- Fix docstring formatting (D205, D415) in _check_guardrail
- Use ternary operator for response content extraction (SIM108)
- Replace magic value with named constant (PLR2004)
- Move return to else block per try/except best practices (TRY300)
- Catch specific exceptions instead of blind Exception (BLE001)
- Use list comprehension for checks_to_run (PERF401)
- Mark unused variables with underscore prefix (RUF059, F841)
- Add noqa comment for intentionally unused mock argument (ARG002)
* [autofix.ci] apply automated fixes
* refactor: address pr comments
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes
* feat: enhance heuristic detection with configurable threshold and scoring system
* refactor: simplify heuristic test assertions by removing unused variable
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* feat: enhance guardrail validation logic and input handling
* refactor: streamline import statements and clean up whitespace in guardrails component
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Fix: update empty input handling tests to raise ValueError and refactor related assertions
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* feat: add Guardrails component with unit tests
Add LLM-based guardrails component for detecting PII, tokens/passwords,
jailbreak attempts, and custom guardrail rules, along with comprehensive
unit tests.
* [autofix.ci] apply automated fixes
* fix: try removing logs
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Lucas Democh <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: added remove file from file input (#11667)
* Implemented dismiss file functionality on input file component
* fixed hover behavior
* added test for removing file from input
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: make connected inputs not hideable (#11672)
* fixed react flow utils to clean advanced edges
* Make connected handles not be able to be hidden
* Added test for hiding connected handles
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: make tooltip not appear when closing SessionMore (#11703)
fix tooltip showing up when closing select
* fix(frontend): prevent multiple session menus from stacking in fullscreen mode
* [autofix.ci] apply automated fixes
* fix(frontend): prevent crash when renaming empty sessions (#11712)
* fix(frontend): prevent crash when renaming empty sessions
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(ci): handle PEP 440 normalized versions in pre-release tag script (#11722)
The regex in langflow_pre_release_tag.py expected a dot before `rc`
(e.g. `1.8.0.rc0`), but PyPI returns PEP 440-normalized versions
without the dot (e.g. `1.8.0rc0`). This caused the script to recompute
the same version instead of incrementing, and `uv publish` silently
skipped the duplicate upload.
Update the regex to accept both formats with `\.?rc`.
* fix: align chat history with input field in fullscreen playground (#11725)
* fix: align chat history with input field in fullscreen playground
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Enforce Webhook singleton rule on paste and duplicate (#11692)
* fix singleton webhook on flow
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(frontend): generate unique variable names in Prompt Template Add Variable button (#11723)
* fix: generate unique variable names in Prompt Template Add Variable button
Previously, clicking the Add Variable button always inserted {variable_name},
causing duplicate text without creating new input fields. Now the button
generates incremental names (variable_name, variable_name_1, variable_name_2)
by checking existing variables in the template.
* refactor: extract generateUniqueVariableName and import in tests
Extract the variable name generation logic into an exported function
so tests can import and validate the actual production code instead
of testing a duplicated copy of the logic.
* FIX: Broken Connection Edge Rendering in YouTube Analysis Template (#11709)
add edge between components
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: synchronize prompt state, add new mustache prompt component (#11702)
* Update state when exiting modal on accordion prompt component
* Added isDoubleBrackets and show correct modal and use correct brackets when mustache is enabled
* [autofix.ci] apply automated fixes
* added test to see if state is synchronized and mustache is enabled
* [autofix.ci] apply automated fixes
* updated mustache id and removed extra prompt call
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Carlos Coelho <[email protected]>
* fix(frontend): add Safari-specific padding for playground chat messages (#11720)
* fix(frontend): add Safari-specific padding for playground chat messages
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: correctly pass headers in mcp stdio connections (#11746)
* fix: parse dicts from tweaks (#11753)
* Correctly parse dicts from tweaks
* Add test
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: sessions overflow issue (#11739)
fix: sessions overflow issue
* feat: playground UI fixes, inspector improvements & canvas reorganization (#11751)
* merge fix
* code improvements
* [autofix.ci] apply automated fixes
* add stop button and fix scroll on message
* [autofix.ci] apply automated fixes
* add new message content for sharable pg
* fix tests until shard 43
* [autofix.ci] apply automated fixes
* fix(frontend): clean up MemoizedSidebarTrigger imports and transition classes
Sort imports, add type modifier to AllNodeType import, and split long transition class string for readability.
* fix tests
* [autofix.ci] apply automated fixes
* fix mr test
* fix jest tests
* fix sidebar jest tes
* [autofix.ci] apply automated fixes
* fix sharable playground
* [autofix.ci] apply automated fixes
* remove rename from sharable pg
* [autofix.ci] apply automated fixes
* add new message content for sharable pg
* fix: synchronize prompt state, add new mustache prompt component (#11702)
* Update state when exiting modal on accordion prompt component
* Added isDoubleBrackets and show correct modal and use correct brackets when mustache is enabled
* [autofix.ci] apply automated fixes
* added test to see if state is synchronized and mustache is enabled
* [autofix.ci] apply automated fixes
* updated mustache id and removed extra prompt call
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Carlos Coelho <[email protected]>
* fix(frontend): add Safari-specific padding for playground chat messages (#11720)
* fix(frontend): add Safari-specific padding for playground chat messages
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: correctly pass headers in mcp stdio connections (#11746)
* fix sharable playground
* [autofix.ci] apply automated fixes
* remove rename from sharable pg
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* fix sharable playground
* fix mcp server to use shell lexer
* [autofix.ci] apply automated fixes
* fix tests
* fix outaded component tests
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Viktor Avelino <[email protected]>
Co-authored-by: Lucas Oliveira <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: keval shah <[email protected]>
Co-authored-by: Jordan Frazier <[email protected]>
* fix: correct field_order in all starter project JSON templates (#11727)
* fix: correct field_order in all starter project JSON templates
The field_order arrays in starter project nodes were out of sync with
the actual input definitions in the Python component source files,
causing parameters to display in the wrong order in the UI.
Fixed 136 nodes across 32 starter project files including Chat Input,
Chat Output, Language Model, Agent, Prompt Template, Text Input,
Tavily AI Search, Read File, Embedding Model, and others.
* test: add field_order validation test for starter projects
Verifies that field_order arrays in starter project JSONs match the
actual component input order by importing each component and comparing
the relative ordering of fields.
* fix mcp server to use shell lexer
* [autofix.ci] apply automated fixes
* fix: enforce full field_order in starter projects and add node overlap test
Update all starter project JSONs to include the complete component
field_order instead of a subset, preventing layout inconsistency
between template and sidebar. Strengthen the field_order test to
require an exact match and add a new test that verifies no two
generic nodes overlap on the canvas.
---------
Co-authored-by: cristhianzl <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: dict tweak parsing (#11756)
* Fix dict handling of different formats
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* cmp index
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix: The Prompt component has responsiveness issues (#11713)
improve styling of templete input
Co-authored-by: Olayinka Adelakun <[email protected]>
* clear session on delete chat
* fix(api): prevent users from deactivating their own account (#11736)
Co-authored-by: Claude Opus 4.5 <[email protected]>
* Fix: UI Overlay: Chat Input Component Overlapping README Note (#11710)
* move chat input arround for travel json starter template
* improve the layout of the component
* fix layout
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: Google Generative AI model catalog update (#11735)
* fix: Filter out MCP and models_and_agents categories and MCPTools component from sidebar (#11513)
* fix: hide MCP tool from model & agent
* fix: removing mcp searching
* fix testcases
* fix testcases
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: Fix flaky Market Research test timeout on CI (#11665)
* add wait for statement to prevent race condition
* fix flaky global variable
* add input selection
* [autofix.ci] apply automated fixes
* add disable inspect panel util
* [autofix.ci] apply automated fixes
* fix vector store test
* [autofix.ci] apply automated fixes
* use disable inspect pannel utils
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* ci: make docs deployment manual-only (#11602)
feat: update GitHub Actions workflow to allow manual branch selection for docs deployment
* fix: handle missing capabilities in Ollama API response (#11603)
* fix: handle missing capabilities in Ollama API response
Older Ollama versions don't return the `capabilities` field from
`/api/show`. The previous code defaulted to an empty list and required
"completion" capability, filtering out all models.
Now we treat missing capabilities as backwards-compatible: assume the
model supports completion unless tool_model_enabled is True (where we
can't verify tool support without the capabilities field).
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* [autofix.ci] apply automated fixes
* test: add test cases for Ollama backwards compatibility fix
Add tests for get_models handling of missing capabilities field:
- test_get_models_missing_capabilities_without_tool_model
- test_get_models_missing_capabilities_with_tool_model
- test_get_models_mixed_capabilities_response
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* [autofix.ci] apply automated fixes
* fix: wrap long docstring line to satisfy ruff E501
Co-Authored-By: Claude Opus 4.5 <[email protected]>
---------
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* docs: draft hide internal endpoints in spec (#11469)
* test-hide-internal-endpoints
* hide-more-endpoints
* display-mcp-endpoints
* display-mcp-projects
* add-back-health-check
---------
Co-authored-by: Hamza Rashid <[email protected]>
* feat: update opensearch component with raw search component (#11491)
* Update opensearch_multimodal.py
* [autofix.ci] apply automated fixes
* Update opensearch_multimodal.py
* Skip existing knn_vector mapping & handle errors
Before adding a knn_vector field mapping, check the index properties and skip updating if the field already exists (and warn if dimensions differ). Attempt to add the mapping only when missing, and catch failures from the OpenSearch k-NN plugin (e.g. NullPointerException); in that known case log a warning and skip the mapping update instead of failing hard. After adding, verify the field is mapped as knn_vector and raise an error if it is not. Also adjusts logging messages to be clearer.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(test): Skip Tavily API key fill when global variable is loaded (#11733)
* update Google models
* [autofix.ci] apply automated fixes
* update tests
* mark deprecated
* build component index
* [autofix.ci] apply automated fixes
---------
Co-authored-by: olayinkaadelakun <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Cristhian Zanforlin Lousa <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <[email protected]>
Co-authored-by: Ram Gopal Srikar Katakam <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: Mendon Kissling <[email protected]>
Co-authored-by: Hamza Rashid <[email protected]>
Co-authored-by: Edwin Jose <[email protected]>
* fix: mock clearSessionMessages (#11776)
* fix: mock clearSessionMessages to prevent flowStore.getState error in test
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Viktor Avelino <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* update build config
* [autofix.ci] apply automated fixes
* fix ruff errors
* [autofix.ci] apply automated fixes
* address review comments
* feat: create guardrails component (#11451)
* Create guardrails.py
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Update guardrails.py
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* tests: add unit tests for GuardrailsComponent functionality
* [autofix.ci] apply automated fixes
* fix: resolve linting errors in GuardrailsComponent and tests
- Fix line length issues (E501) by breaking long strings
- Fix docstring formatting (D205, D415) in _check_guardrail
- Use ternary operator for response content extraction (SIM108)
- Replace magic value with named constant (PLR2004)
- Move return to else block per try/except best practices (TRY300)
- Catch specific exceptions instead of blind Exception (BLE001)
- Use list comprehension for checks_to_run (PERF401)
- Mark unused variables with underscore prefix (RUF059, F841)
- Add noqa comment for intentionally unused mock argument (ARG002)
* [autofix.ci] apply automated fixes
* refactor: address pr comments
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes
* feat: enhance heuristic detection with configurable threshold and scoring system
* refactor: simplify heuristic test assertions by removing unused variable
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* feat: enhance guardrail validation logic and input handling
* refactor: streamline import statements and clean up whitespace in guardrails component
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Fix: update empty input handling tests to raise ValueError and refactor related assertions
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* feat: add Guardrails component with unit tests
Add LLM-based guardrails component for detecting PII, tokens/passwords,
jailbreak attempts, and custom guardrail rules, along with comprehensive
unit tests.
* [autofix.ci] apply automated fixes
* fix: try removing logs
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Viktor Avelino <[email protected]>
Co-authored-by: Viktor Avelino <[email protected]>
* fix: Filter out MCP and models_and_agents categories and MCPTools component from sidebar (#11513)
* fix: hide MCP tool from model & agent
* fix: removing mcp searching
* fix testcases
* fix testcases
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: Fix flaky Market Research test timeout on CI (#11665)
* add wait for statement to prevent race condition
* fix flaky global variable
* add input selection
* [autofix.ci] apply automated fixes
* add disable inspect panel util
* [autofix.ci] apply automated fixes
* fix vector store test
* [autofix.ci] apply automated fixes
* use disable inspect pannel utils
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* ci: make docs deployment manual-only (#11602)
feat: update GitHub Actions workflow to allow manual branch selection for docs deployment
* fix: handle missing capabilities in Ollama API response (#11603)
* fix: handle missing capabilities in Ollama API response
Older Ollama versions don't return the `capabilities` field from
`/api/show`. The previous code defaulted to an empty list and required
"completion" capability, filtering out all models.
Now we treat missing capabilities as backwards-compatible: assume the
model supports completion unless tool_model_enabled is True (where we
can't verify tool support without the capabilities field).
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* [autofix.ci] apply automated fixes
* test: add test cases for Ollama backwards compatibility fix
Add tests for get_models handling of missing capabilities field:
- test_get_models_missing_capabilities_without_tool_model
- test_get_models_missing_capabilities_with_tool_model
- test_get_models_mixed_capabilities_response
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* [autofix.ci] apply automated fixes
* fix: wrap long docstring line to satisfy ruff E501
Co-Authored-By: Claude Opus 4.5 <[email protected]>
---------
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* docs: draft hide internal endpoints in spec (#11469)
* test-hide-internal-endpoints
* hide-more-endpoints
* display-mcp-endpoints
* display-mcp-projects
* add-back-health-check
---------
Co-authored-by: Hamza Rashid <[email protected]>
* feat: update opensearch component with raw search component (#11491)
* Update opensearch_multimodal.py
* [autofix.ci] apply automated fixes
* Update opensearch_multimodal.py
* Skip existing knn_vector mapping & handle errors
Before adding a knn_vector field mapping, check the index properties and skip updating if the field already exists (and warn if dimensions differ). Attempt to add the mapping only when missing, and catch failures from the OpenSearch k-NN plugin (e.g. NullPointerException); in that known case log a warning and skip the mapping update instead of failing hard. After adding, verify the field is mapped as knn_vector and raise an error if it is not. Also adjusts logging messages to be clearer.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(test): Skip Tavily API key fill when global variable is loaded (#11733)
* feat: add smart column ordering and clean output toggle to Split Text component (#11626)
* feat: add smart column ordering and clean output toggle to Split Text component
Add smart_column_order() method to DataFrame that prioritizes content columns
(text, content, output, etc.) and de-prioritizes system metadata columns
(timestamp, sender, session_id, etc.). Add Clean Output boolean input to
Split Text component that strips metadata columns by default.
* fix: update code_hash for Knowledge Ingestion and Vector Store RAG components
* test: update split text tests for clean_output toggle
* [autofix.ci] apply automated fixes
* fix: change default value of clean_output toggle to False in Split Text component
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix: update code_hash for Knowledge Ingestion and Vector Store RAG components
* fix: add clean_output option to Knowledge Ingestion and Vector Store RAG components
* [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
* fix: Add missing get_current_active_user_mcp to lfx AuthService
The base class declares get_current_active_user_mcp as abstract but the
default lfx AuthService did not implement it, causing instantiation to
fail in tests.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: add iter method to noopresult (#11517)
* fix: Misleading Empty State when no Folders (#11728)
* fix: Misleading Empty State when no Folders
now once all folders are deleted we show the default create first flow state
* [autofix.ci] apply automated fixes
* fix(api): prevent users from deactivating their own account (#11736)
Co-authored-by: Claude Opus 4.5 <[email protected]>
* Fix: UI Overlay: Chat Input Component Overlapping README Note (#11710)
* move chat input arround for travel json starter template
* improve the layout of the component
* fix layout
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
---------
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Ram Gopal Srikar Katakam <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: olayinkaadelakun <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
* chore: align Market Research spec with release-v1.8.0
* fix: Resolve Windows PostgreSQL event loop incompatibility (#11767)
* fix windows integrations with postgres
* add documentation
* cross platform validation
* [autofix.ci] apply automated fixes
* ruff style and checker
* fix import ruff
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* fix: Legacy "Store" Reference in Flows Empty State (#11721)
* fix: Legacy "Store" Reference in Flows Empty State
on delete propigate changes to useFlowsManagerStore to cause re-render in HomePage
* test: fix shard 45 flaky mcp test
Hopefully fix [WebServer] bash: line 1: exec: uvx mcp-server-fetch: not found
* [autofix.ci] apply automated fixes
* fix(api): prevent users from deactivating their own account (#11736)
Co-authored-by: Claude Opus 4.5 <[email protected]>
* Fix: UI Overlay: Chat Input Component Overlapping README Note (#11710)
* move chat input arround for travel json starter template
* improve the layout of the component
* fix layout
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
---------
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Ram Gopal Srikar Katakam <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: olayinkaadelakun <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Fix: UI Bug: "Lock Flow" Toggle in Export Modal is Non-Functional (#11724)
* fix locked component during export
* added locked flag to flow doc
* new testcases
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix tests
* [autofix.ci] apply automated fixes
* fix: dropdown delete icon hover visibility (#11774)
fix hidden delete button
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: resolve Safari scroll jitter in playground chat views (#11769)
* fix: resolve Safari scroll jitter in playground chat views
Switch StickToBottom resize mode to instant and add a Safari-specific
scroll fix that prevents unnatural jumps while preserving stick-to-bottom
behavior.
* [autofix.ci] apply automated fixes
* fix: add useStickToBottomContext mock to shareable playground tests
* refactor: improve SafariScrollFix reliability and maintainability
- Split into guard/inner components to avoid hooks on non-Safari browsers
- Extract magic numbers into named constants with documentation
- Convert touchStartY closure variable to useRef for proper session scoping
- Remove stopScrollRef indirection, use stopScroll directly in effect deps
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: mock clearSessionMessages to prevent flowStore.getState error in test
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <[email protected]>
* fix: Obsolete "Component Share" shortcut listed in Shortcuts menu (#11775)
remove component share from doc
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix(frontend): add UI feedback for self-deactivation prevention (#11772)
* fix(frontend): add UI feedback for self-deactivation prevention
Disable the Active checkbox with a tooltip when users try to deactivate
their own account. This provides clear UI feedback instead of relying
solely on the backend 403 error. Protection is added in both the Admin
page table view and the user edit modal.
* [autofix.ci] apply automated fixes
* fix: mock clearSessionMessages to prevent flowStore.getState error in test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Viktor Avelino <[email protected]>
* fix(frontend): preserve sticky note dimensions when importing via canvas drop (#11770)
* fix(frontend): preserve sticky note dimensions when importing via canvas drop
When dragging a JSON file onto the canvas, the paste function now
preserves width and height properties from the original nodes,
ensuring sticky notes retain their custom dimensions.
* [autofix.ci] apply automated fixes
* fix: mock clearSessionMessages to prevent flowStore.getState error in test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Viktor Avelino <[email protected]>
* rollback playground, inspection panel and shareable playground
* build_component_index
* fix starter templates
* fix: Close button auto-focus creates visual distraction in SaveChanges and FlowLogs modal (#11763)
fix autofocus on close button
Co-authored-by: Olayinka Adelakun <[email protected]>
* fix: Outdated Instructional Notes and Provider-Specific Branding (#11680)
* fix: improved note guide for language models nots and Need search
* missing starter projects added
* ensured main flows fit are of standard
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* fix(frontend): synchronize Prompt Template input fields on bracket mode toggle (#11777)
* fix(frontend): synchronize Prompt Template input fields on bracket mode toggle
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* build component index
* chore: align component_index.json with main
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* fix: reduce Node.js heap size to 4GB in Docker builds to prevent OOM
The Vite frontend build was configured with --max-old-space-size=12288
(12GB), which exceeds available RAM on ARM64 CI runners, causing the
build process to be OOM-killed during the transform phase.
Reduced to 4GB (4096MB) which is sufficient for the Vite build and
prevents OOM kills in memory-constrained Docker BuildKit environments.
* fix: avoid redundant recursive chown on /app in backend Dockerfile
The recursive chown -R on /app was re-owning the entire .venv (~2.6GB,
40k+ files) which was already correctly owned via COPY --chown=1000:0.
This was causing the build to be killed on ARM64 runners.
Changed to non-recursive chown on /app since only the directory itself
needs ownership set. /app/data still gets recursive chown (it's empty).
* fix: add Docker cleanup between image builds to prevent disk full
The 40GB ARM64 runner runs out of disk when building 3 Docker images
sequentially. Each image (main ~8GB layers, backend ~5GB, frontend)
accumulates build cache and layers that exhaust the disk.
Added cleanup steps between builds that:
- Remove the tested image (no longer needed)
- Prune all unused Docker data and buildx cache
- Log disk usage before/after for debugging
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <[email protected]>
Co-authored-by: Mike Pawlowski <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: ogabrielluiz <[email protected]>
Co-authored-by: Deon Sanchez <[email protected]>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <[email protected]>
Co-authored-by: Viktor Avelino <[email protected]>
Co-authored-by: Lucas Democh <[email protected]>
Co-authored-by: Keval718 <[email protected]>
Co-authored-by: vjgit96 <[email protected]>
Co-authored-by: Cristhian Zanforlin Lousa <[email protected]>
Co-authored-by: Ram Gopal Srikar Katakam <[email protected]>
Co-authored-by: olayinkaadelakun <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Carlos Coelho <[email protected]>
Co-authored-by: Jordan Frazier <[email protected]>
Co-authored-by: Viktor Avelino <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: Olayinka Adelakun <[email protected]>
Co-authored-by: Mendon Kissling <[email protected]>
Co-authored-by: Hamza Rashid <[email protected]>
Co-authored-by: Edwin Jose <[email protected]>
Co-authored-by: Adam-Aghili <[email protected]>1 parent d9c04e7 commit 8c8ac03
File tree
11 files changed
+153
-16
lines changed- .github/workflows
- docker
- src
- backend/tests/unit/components/processing
- frontend/src/CustomNodes/hooks
- lfx/src/lfx
- _assets
- components/processing
11 files changed
+153
-16
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
73 | 85 | | |
74 | 86 | | |
75 | 87 | | |
| |||
85 | 97 | | |
86 | 98 | | |
87 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
88 | 113 | | |
89 | 114 | | |
90 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
| 81 | + | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
| 64 | + | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
Lines changed: 30 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
191 | 191 | | |
192 | 192 | | |
193 | 193 | | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
Lines changed: 33 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
16 | 30 | | |
17 | 31 | | |
18 | 32 | | |
| |||
111 | 125 | | |
112 | 126 | | |
113 | 127 | | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
114 | 147 | | |
115 | 148 | | |
116 | 149 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1371 | 1371 | | |
1372 | 1372 | | |
1373 | 1373 | | |
1374 | | - | |
| 1374 | + | |
1375 | 1375 | | |
1376 | 1376 | | |
1377 | 1377 | | |
| |||
0 commit comments