* fix: include uv/uvx in runtime Docker image
add uv/uvx to runtime image so uvx is available in container
i did this for all images which might be too much
* chore: address supply chain attack
addres ram's supply chain attack comment
* chore: upgrade pyproject versions
upgrade pyproject versions
* checkout schema revisions
* fix: harden deployment schema validation and close coverage gaps
- Add exactly-one validation to ConfigDeploymentBindingUpdate (both layers)
using model_fields_set XOR for config_id vs raw_payload
- Add raw_payload field to service-layer ConfigDeploymentBindingUpdate for
symmetry with the snapshot passthrough pattern
- Add deployment_type routing hint to execution methods (protocol, ABC, service)
- Unify duplicate handling: silent dedup everywhere (dict.fromkeys)
- Fix broken API tests after FlowVersionsAttach/Patch str→UUID migration
- Restore deleted test coverage (blank ids, order-preserving dedup) and add
new tests for raw_payload, mutual exclusion, snapshot_ids, and noop rejection
- Add clarifying comments: overlap check ID domains, post-validation types,
deployment_type scope in protocol docstring
* tighten update payload validation and add provider_data
* add validation for None fields and harden tests
* use explicit boolean to unbind config
* fix: update React Query cache on message deletion from Session Logs
When deleting messages from the Session Logs modal, only the Zustand
store was updated. The React Query session cache that the chat view
subscribes to was never touched, causing stale messages to persist
until a hard reload. Call removeMessages() from message-utils to also
update the session-specific React Query cache key.
* refactor: extract session management into dedicated store and hook
Move session lifecycle logic (create, delete, rename, sync) out of
chat-header hooks into a standalone useSessionManager hook backed by
a new sessionManagerStore. This simplifies the chat header, removes
use-edit-session-info and use-get-add-sessions, and centralises
session state for both the sidebar and sliding container views.
* refactor: improve session management by renaming variables and adding error handling for session storage
* refactor: enhance session deletion logic in file upload tests
---------
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
our secrets.baseline was outdated that `detect-secrets scan --update .secrets.baseline` did not work correctly
It was throwing back many (100s) "this line does not exist anymore" warnings during `detect-secrets audit .secrets.baseline` making it very complex to deal with.
process of cleaning up:
rm -f .secrets.baseline - delete old baseline
detect-secrets scan > .secrets.baseline - create new baseline
detect-secrets audit .secrets.baseline - manually go through all possible secrets and either allow commit or disallow commit (everything looked good to commit to me)
* fix image sent on windows playground
* [autofix.ci] apply automated fixes
* fix jest
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
fix: replace regex with string search to fix ReDoS vulnerability in mustache validation
The regex `\{\{[^}]*\}\}` used in `validate_mustache_template` was flagged
by CodeQL (py/polynomial-redos) as vulnerable to polynomial-time backtracking
on crafted inputs with many `{{` repetitions. Replaced with a linear-time
string-based search using `str.find`.
Axios versions prior to 1.12.0 do not validate data: URI payloads,
allowing unbounded memory allocation and potential DoS attacks.
This update ensures the minimum version includes the security patch.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* chore: Added support for `space_id` scope in `WatsonxEmbeddingsComponent`
* chore: Added support for `space_id` scope in `WatsonxEmbeddingsComponent` v2
* chore: Added support for `space_id` scope in `WatsonxEmbeddingsComponent` v3
* chore: Added support for `space_id` scope in `WatsonxEmbeddingsComponent` v4
* [autofix.ci] apply automated fixes
* rename test name
* CR fix
* [autofix.ci] apply automated fixes
* fix unit 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>
Decouples deployment API schemas from
service-layer ID domains, updates naming to match persistence layer,
removes unnecessary database models, and adds strict API wrappers.
* deployment api schemas
* clean up deployments API surface
- Strip internal implementation details from public-facing Field
descriptions and endpoint docstrings (adapter routing, provider
snapshots, binding payloads, lazy sync)
- Rename flow_versions to flow_version_ids in DeploymentCreateRequest
and DeploymentUpdateRequest for clarity
- Remove redundant match_limit query parameter from list_deployments;
page size already caps results
* fix(api): decouple deployment API schemas from service-layer ID domains
The API schema file inherited from and directly embedded service-layer
types whose identifier fields use IdLike (UUID | str) for provider-owned
IDs. This conflated provider-owned opaque identifiers with Langflow
DB-managed UUIDs at the API boundary.
- Rewrite RedeployResponse as standalone BaseModel instead of inheriting
from DeploymentOperationResult (which carried id: IdLike)
- Replace ConfigItem with API-local DeploymentConfigCreate
(reference_id: str, explicitly provider-owned)
- Replace ConfigDeploymentBindingUpdate with API-local
DeploymentConfigBindingUpdate (config_id: str, not IdLike union)
- Add module docstring documenting the two identifier domains
(Langflow DB UUIDs vs provider-owned opaque strings)
- Annotate all id/provider_* fields with their ownership domain
- Keep BaseDeploymentData/BaseDeploymentDataUpdate imports
(no ID fields, stable shapes)
* align naming with recent db work
* docs: clarify deployment ownership boundaries in v1 schemas
* Update deployment model hierarchy
_DeploymentResponseBase → id, name, type, created_at, updated_at, provider_data
├─ DeploymentSummary → + description
│ ├─ DeploymentGetResponse
│ └─ DeploymentDuplicateResponse
├─ DeploymentListItem → + resource_key, attached_count
├─ DeploymentCreateResponse → + description
├─ DeploymentUpdateResponse → + description
├─ DeploymentStatusResponse
└─ RedeployResponse
* move description to base class
* [autofix.ci] apply automated fixes
* Update naming to match persistence layer
* [autofix.ci] apply automated fixes
* Add API layer-specific strict wrapper forbid extra fields
* update docs
* language
* use annotation for non empty str
* Clarify shared object pattern in docs
* Add test validate api keys not in response
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
* fix: Fixes Kubernetes deployment crash on runtime_port parsing (#11968) (#11975)
* feat: add runtime port validation for Kubernetes service discovery
* test: add unit tests for runtime port validation in Settings
* fix: improve runtime port validation to handle exceptions and edge cases
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
* fix(frontend): show delete option for default session when it has messages (#11969)
* feat: add documentation link to Guardrails component (#11978)
* feat: add documentation link to Guardrails component
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: traces v0 (#11689) (#11983)
* feat: traces v0
v0 for traces includes:
- filters: status, token usage range and datatime
- accordian rows per trace
Could add:
- more filter options. Ecamples: session_id, trace_id and latency range
* fix: token range
* feat: create sidebar buttons for logs and trace
add sidebar buttons for logs and trace
remove lods canvas control
* fix: fix duplicate trace ID insertion
hopefully fix duplicate trace ID insertion on windows
* fix: update tests and alembic tables for uts
update tests and alembic tables for uts
* chore: add session_id
* chore: allo grouping by session_id and flow_id
* chore: update race input output
* chore: change run name to flow_name - flow_id
was flow_name - trace_id
now flow_name - flow_id
* facelift
* clean up and add testcases
* clean up and add testcases
* merge Alembic detected multiple heads
* [autofix.ci] apply automated fixes
* improve testcases
* remodel files
* chore: address gabriel simple changes
address gabriel simple changes in traces.py and native.py
* clean up and testcases
* chore: address OTel and PG status comments
https://github.com/langflow-ai/langflow/pull/11689#discussion_r2854630438https://github.com/langflow-ai/langflow/pull/11689#discussion_r2854630446
* chore: OTel span naming convention
model name is now set using name = f"{operation} {model_name}" if model_name else operation
* add traces
* feat: use uv sources for CPU-only PyTorch (#11884)
* feat: use uv sources for CPU-only PyTorch
Configure [tool.uv.sources] with pytorch-cpu index to avoid ~6GB CUDA
dependencies in Docker images. This replaces hardcoded wheel URLs with
a cleaner index-based approach.
- Add pytorch-cpu index with explicit = true
- Add torch/torchvision to [tool.uv.sources]
- Add explicit torch/torchvision deps to trigger source override
- Regenerate lockfile without nvidia/cuda/triton packages
- Add required-environments for multi-platform support
* fix: update regex to only replace name in [project] section
The previous regex matched all lines starting with `name = "..."`,
which incorrectly renamed the UV index `pytorch-cpu` to `langflow-nightly`
during nightly builds. This caused `uv lock` to fail with:
"Package torch references an undeclared index: pytorch-cpu"
The new regex specifically targets the name field within the [project]
section only, avoiding unintended replacements in other sections like
[[tool.uv.index]].
* style: fix ruff quote style
* fix: remove required-environments to fix Python 3.13 macOS x86_64 CI
The required-environments setting was causing hard failures when packages
like torch didn't have wheels for specific platform/Python combinations.
Without this setting, uv resolves optimistically and handles missing wheels
gracefully at runtime instead of failing during resolution.
---------
* LE-270: Hydration and Console Log error (#11628)
* LE-270: add fix hydration issues
* LE-270: fix disable field on max token on language model
---------
* test: add wait for selector in mcp server tests (#11883)
* Add wait for selector in mcp server tests
* [autofix.ci] apply automated fixes
* Add more awit for selectors
* [autofix.ci] apply automated fixes
---------
* fix: reduce visual lag in frontend (#11686)
* Reduce lag in frontend by batching react events and reducing minimval visual build time
* Cleanup
* [autofix.ci] apply automated fixes
* add tests and improve code read
* [autofix.ci] apply automated fixes
* Remove debug log
---------
* feat: lazy load imports for language model component (#11737)
* Lazy load imports for language model component
Ensures that only the necessary dependencies are required.
For example, if OpenAI provider is used, it will now only
import langchain_openai, rather than requiring langchain_anthropic,
langchain_ibm, etc.
* Add backwards-compat functions
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add exception handling
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* comp index
* docs: azure default temperature (#11829)
* change-azure-openai-default-temperature-to-1.0
* [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
---------
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix unit test?
* add no-group dev to docker builds
* [autofix.ci] apply automated fixes
---------
* feat: generate requirements.txt from dependencies (#11810)
* Base script to generate requirements
Dymanically picks dependency for LanguageM Comp.
Requires separate change to remove eager loading.
* Lazy load imports for language model component
Ensures that only the necessary dependencies are required.
For example, if OpenAI provider is used, it will now only
import langchain_openai, rather than requiring langchain_anthropic,
langchain_ibm, etc.
* Add backwards-compat functions
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add exception handling
* Add CLI command to create reqs
* correctly exclude langchain imports
* Add versions to reqs
* dynamically resolve provider imports for language model comp
* Lazy load imports for reqs, some ruff fixes
* Add dynamic resolves for embedding model comp
* Add install hints
* Add missing provider tests; add warnings in reqs script
* Add a few warnings and fix install hint
* update comments add logging
* Package hints, warnings, comments, tests
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* Add alias for watsonx
* Fix anthropic for basic prompt, azure mapping
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* ruff
* [autofix.ci] apply automated fixes
* test formatting
* ruff
* [autofix.ci] apply automated fixes
---------
* fix: add handle to file input to be able to receive text (#11825)
* changed base file and file components to support muitiple files and files from messages
* update component index
* update input file component to clear value and show placeholder
* updated starter projects
* [autofix.ci] apply automated fixes
* updated base file, file and video file to share robust file verification method
* updated component index
* updated templates
* fix whitespaces
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* add file upload test for files fed through the handle
* [autofix.ci] apply automated fixes
* added tests and fixed things pointed out by revies
* update component index
* fixed test
* ruff fixes
* Update component_index.json
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* updated component index
* updated component index
* removed handle from file input
* Added functionality to use multiple files on the File Path, and to allow files on the langflow file system.
* [autofix.ci] apply automated fixes
* fixed lfx test
* build component index
---------
* docs: Add AGENTS.md development guide (#11922)
* add AGENTS.md rule to project
* change to agents-example
* remove agents.md
* add example description
* chore: address cris I1 comment
address cris I1 comment
* chore: address cris I5
address cris I5
* chore: address cris I6
address cris I6
* chore: address cris R7
address cris R7
* fix testcase
* chore: address cris R2
address cris R2
* restructure insight page into sidenav
* added header and total run node
* restructing branch
* chore: address gab otel model changes
address gab otel model changes will need no migration tables
* chore: update alembic migration tables
update alembic migration tables after model changes
* add empty state for gropu sessions
* remove invalid mock
* test: update and add backend tests
update and add backend tests
* chore: address backend code rabbit comments
address backend code rabbit comments
* chore: address code rabbit frontend comments
address code rabbit frontend comments
* chore: test_native_tracer minor fix address c1
test_native_tracer minor fix address c1
* chore: address C2 + C3
address C2 + C3
* chore: address H1-H5
address H1-H5
* test: update test_native_tracer
update test_native_tracer
* fixes
* chore: address M2
address m2
* chore: address M1
address M1
* dry changes, factorization
* chore: fix 422 spam and clean comments
fix 422 spam and clean comments
* chore: address M12
address M12
* chore: address M3
address M3
* chore: address M4
address M4
* chore: address M5
address M5
* chore: clean up for M7, M9, M11
clean up for M7, M9, M11
* chore: address L2,L4,L5,L6 + any test
address L2,L4,L5 and L6 + any test
* chore: alembic + comment clean up
alembic + comment clean up
* chore: remove depricated test_traces file
remove depricated test_traces file. test have all been moved to test_traces_api.py
* fix datetime
* chore: fix test_trace_api ge=0 is allowed now
fix test_trace_api ge=0 is allowed now
* chore: remove unused traces cost flow
remove unused traces cost flow
* fix traces test
* fix traces test
* fix traces test
* fix traces test
* fix traces test
* chore: address gabriels otel coment
address gabriels otel coment latest
---------
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.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: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
* fix(test): Fix superuser timeout test errors by replacing heavy clien… (#11982)
fix(test): Fix superuser timeout test errors by replacing heavy client fixture (#11972)
* fix super user timeout test error
* fix fixture db test
* remove canary test
* [autofix.ci] apply automated fixes
* flaky test
---------
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor(components): Replace eager import with lazy loading in agentics module (#11974)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: add ondelete=CASCADE to TraceBase.flow_id to match migration (#12002)
* fix: add ondelete=CASCADE to TraceBase.flow_id to match migration
The migration file creates the trace table's flow_id foreign key with
ondelete="CASCADE", but the model was missing this parameter. This
mismatch caused the migration validator to block startup.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: add defensive migration to ensure trace.flow_id has CASCADE
Adds a migration that ensures the trace.flow_id foreign key has
ondelete=CASCADE. While the original migration already creates it
with CASCADE, this provides a safety net for any databases that may
have gotten into an inconsistent state.
* fix: dynamically find FK constraint name in migration
The original migration did not name the FK constraint, so it gets an
auto-generated name that varies by database. This fix queries the
database to find the actual constraint name before dropping it.
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: LE-456 - Update ButtonSendWrapper to handle building state and improve button functionality (#12000)
* fix: Update ButtonSendWrapper to handle building state and improve button functionality
* fix(frontend): rename stop button title to avoid Playwright selector conflict
The "Stop building" title caused getByRole('button', { name: 'Stop' })
to match two elements, breaking Playwright tests in shards 19, 20, 22, 25.
Renamed to "Cancel" to avoid the collision with the no-input stop button.
* Fix: pydantic fail because output is list, instead of a dict (#11987)
pydantic fail because output is list, instead of a dict
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
* refactor: Update guardrails icons (#12016)
* Update guardrails.py
Changing the heuristic threshold icons.
The field was using the default icons. I added icons related to the security theme.
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
* feat(ui): Replace Show column toggle with eye icon in advanced dialog (#12028)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(ui): Prevent auto-focus and tooltip on dialog close button (#12027)
* fix: reset button (#12024)
fix reset button
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
* fix: Handle message inputs when ingesting knowledge (#11988)
* fix: Handle message inputs when ingesting knowledge
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* Update test_ingestion.py
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(ui): add error handling for invalid JSON uploads via upload button (#11985)
* fix(ui): add error handling for invalid JSON uploads via upload button
* feat(frontend): added new test for file upload
* feat(frontend): added new test for file upload
* fix(ui): Add array validation for provider variables mapping (#12032)
* fix: LM span is now properly parent of ChatOpenAI (#12012)
* fix: LM span is now properly parent of ChatOpenAI
Before LM span and ChatOpenAI span where both considered parents so they where being counted twice in token counts and other sumations
Now LM span is properly the parent of ChatOpenAI span so they are not accidently counted twice
* chore: clean up comments
clean up comments
* chore: incase -> incase
incase -> incase
* fix: Design fix for traces (#12021)
* fix: LM span is now properly parent of ChatOpenAI
Before LM span and ChatOpenAI span where both considered parents so they where being counted twice in token counts and other sumations
Now LM span is properly the parent of ChatOpenAI span so they are not accidently counted twice
* chore: clean up comments
clean up comments
* chore: incase -> incase
incase -> incase
* design fix
* fix testcases
* fix header
* fix testcase
---------
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
* fix: Add file upload extension filter for multi-select and folders (#12034)
* fix: plaground - inspection panel feedback (#12013)
* fix: update layout and variant for file previews in chat messages
* fix: update background color to 'bg-muted' in chat header and input wrapper components
* refactor(CanvasControls): remove unused inspection panel logic and clean up code
* fix: remove 'bg-muted' class from chat header and add 'bg-primary-foreground' to chat sidebar
* fix: add Escape key functionality to close sidebar
* fix: playground does not scroll down to the latest user message upon … (#12040)
fix: playground does not scroll down to the latest user message upon sending (Regression) (#12006)
* fixes scroll is on input message
* feat: re-engage Safari sticky scroll mode when user sends message
Add custom event 'langflow-scroll-to-bottom' to force SafariScrollFix back into sticky mode when user sends a new message. This ensures the chat scrolls to bottom even if user had scrolled up, fixing behavior where Safari's scroll fix would remain disengaged after manual scrolling.
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
* fix: knowledge Base Table — Row Icon Appears Clipped/Cut for Some Ent… (#12039)
fix: knowledge Base Table — Row Icon Appears Clipped/Cut for Some Entries (#12009)
* removed book and added file. makes more sense
* feat: add accent-blue color to design system and update knowledge base file icon
- Add accent-blue color variables to light and dark themes in CSS
- Register accent-blue in Tailwind config with DEFAULT and foreground variants
- Update knowledge base file icon fallback color from hardcoded text-blue-500 to text-accent-blue-foreground
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
* fix: MCP Server Modal Improvements (#12017) (#12038)
* fixes to the mcp modal for style
* style: convert double quotes to single quotes in baseModal component
* style: convert double quotes to single quotes in addMcpServerModal component
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
* fix: change loop description (#12018) (#12037)
* fix: change loop description (#12018)
* docs: simplify Loop component description in starter project and component index
* [autofix.ci] apply automated fixes
* style: format Loop component description to comply with line length limits
* fixed component index
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: add mutual exclusivity between ChatInput and Webhook components (#12036)
* feat: add mutual exclusivity between ChatInput and Webhook components
* [autofix.ci] apply automated fixes
* refactor: address PR feedback - add comprehensive tests and constants
* [autofix.ci] apply automated fixes
* refactor: address PR feedback - add comprehensive tests and constants
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Janardan S Kavia <janardanskavia@Janardans-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: mcp config issue (#12045)
* Only process dict template fields
In json_schema_from_flow, guard access to template field properties by checking isinstance(field_data, dict) before calling .get(). This replaces the previous comparison to the string "Component" and prevents attribute errors when template entries are non-dict values, ensuring only dict-type fields with show=True and not advanced are included in the generated schema.
* Check and handle MCP server URL changes
When skipping creation of an existing MCP server for a user's starter projects, first compute the expected project URL and compare it to URLs found in the existing config args. If the URL matches, keep skipping and log that the server is correctly configured; if the URL differs (e.g., port changed on restart), log the difference and allow the flow to update the server configuration. Adds URL extraction and improved debug messages to support automatic updates when server endpoints change.
---------
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
* fix: langflow breaks when we click on the last level of the chain (#12044)
Langflow breaks when we click on the last level of the chain.
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
* fix: standardize "README" title and update API key configuration note… (#12051)
fix: standardize "README" title and update API key configuration notes in 3 main flow templates (#12005)
* updated for README
* chore: update secrets baseline with new line numbers
* fixed test
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
* fix: Cherry-pick Knowledge Base Improvements (le-480) into release-1.8.0 (#12052)
* fix: improve knowledge base UI consistency and pagination handling
- Change quote style from double to single quotes throughout knowledge base components
- Update "Hide Sources" button label to "Hide Configuration" for clarity
- Restructure SourceChunksPage layout to use xl:container for consistent spacing
- Add controlled page input state with validation on blur and Enter key
- Synchronize page input field with pagination controls to prevent state drift
- Reset page input to "1" when changing page
* refactor: extract page input commit logic into reusable function
Extract page input validation and commit logic from handlePageInputBlur and handlePageInputKeyDown into a shared commitPageInput function to eliminate code duplication.
* fix(ui): ensure session deletion properly clears backend and cache (#12043)
* fix(ui): ensure session deletion properly clears backend and cache
* fix: resolved PR comments and add new regression test
* fix: resolved PR comments and add new regression test
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Check template field is dict before access (#12035)
Only process dict template fields
In json_schema_from_flow, guard access to template field properties by checking isinstance(field_data, dict) before calling .get(). This replaces the previous comparison to the string "Component" and prevents attribute errors when template entries are non-dict values, ensuring only dict-type fields with show=True and not advanced are included in the generated schema.
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
* fix: hide Knowledge Ingestion component and rename Retrieval to Knowledge Base (#12054)
* fix: hide Knowledge Ingestion component and rename Retrieval to Knowledge Base
Move ingestion component to deactivated folder so it's excluded from
dynamic discovery. Rename KnowledgeRetrievalComponent to
KnowledgeBaseComponent with display_name "Knowledge Base". Update all
exports, component index, starter project, frontend sidebar filter,
and tests.
* fix: update test_ingestion import to use deactivated module path
* fix: skip deactivated KnowledgeIngestion test suite
* [autofix.ci] apply automated fixes
* fix: standardize formatting and indentation in StepperModal component
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Embedding Model Field Stuck in Infinite Loading When No Model Provider is Configured (release-1.8.0) (#12053)
* fix: add showEmptyState prop to ModelInputComponent for better UX when no models are enabled
* style: convert double quotes to single quotes in modelInputComponent
* fixes refresh and kb blocker
* style: convert double quotes to single quotes in ModelTrigger component
* style: convert double quotes to single quotes in model provider components
- Convert all double quotes to single quotes in use-get-model-providers.ts and ModelProvidersContent.tsx
- Remove try-catch block in getModelProvidersFn to let errors propagate for React Query retry and stale data preservation
- Add flex-shrink-0 to provider list container to prevent layout issues
* fix: Close model dropdown popover before refresh to prevent width glitch (#12067)
fix(test): Reduce response length assertions in flaky integration tests (#12057)
* feat: Add PDF and DOCX ingestion support for Knowledge Bases (#12064)
* add pdf and docx for knowledge bases
* ruff style checker fix
* fix jest test
* fix: Use global LLM in knowledge retrieval (#11989)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
fix(test): Reduce response length assertions in flaky integration tests (#12057)
* fix: Regenerate the knowledge retrieval template (#12070)
* fix: refactor KnowledgeBaseEmptyState to use optimistic updates hook (#12069)
* fix: refactor KnowledgeBaseEmptyState to use optimistic updates hook
* updated tst
* fix: Apply provider variable config to Agent build_config (#12050)
* Apply provider variable config to Agent build_config
Import and use apply_provider_variable_config_to_build_config in the Agent component so provider-specific variable settings (advanced/required/info/env fallbacks) are applied to the build_config. Provider-specific fields (e.g. base_url_ibm_watsonx, project_id) are hidden/disabled by default before applying the provider config. Updated embedded agent code in starter project JSONs and bumped their code_hashes accordingly.
* [autofix.ci] apply automated fixes
* update tests
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.com>
* LE-489: KB Metrics calculation batch caculator (#12049)
Fixed metric calculator to be more robust and scalable.
* [autofix.ci] apply automated fixes
* Restore merge migration to fix divergent heads
* Update model.py
* Rebuild component index and starter projects
* Update src/frontend/src/pages/FlowPage/components/flowSidebarComponent/index.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update src/frontend/src/components/ui/__tests__/dialog.test.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Always use sa column specifications in the model
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Antônio Alexandre Borges Lima <104531655+AntonioABLima@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.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: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@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: Eric Hare <ericrhare@gmail.com>
Co-authored-by: Debojit Kaushik <Kaushik.debojit@gmail.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: Janardan Singh Kavia <janardankavia@ibm.com>
Co-authored-by: Janardan S Kavia <janardanskavia@Janardans-MacBook-Pro.local>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Add ondelete flag to fk in flow version table
* set uuid nullable
* Fix alembic chain for cascade migration in release branch
* Add merge migration
* correct down path
* use randomly generated reivison id
* Add expand
* update doc
* update merge migration points
* Add basic deployment persistence migrations and types
* ruff
* Rename db fields
* Encryption updates, alembic ids, schema relationships
Critical Issues Fixed
1. is_encrypted removed — update_provider_account now always encrypts, matching create_provider_account. No more heuristic that could store plaintext keys.
2. Proper Alembic revision IDs — a1b2c3d4e5f6 → 8106300be7aa, c3d4e5f6a7b8 → 2a5defa5ddc0 (randomly generated).
3. Folder ↔ Deployment relationship — Added folder on Deployment and deployments on Folder with "all, delete, delete-orphan" cascade.
Important Issues Fixed
4. Schema layering — Added DeploymentRead, DeploymentProviderAccountCreate, DeploymentProviderAccountRead (no api_key!), DeploymentProviderAccountUpdate.
5. Cascade config — DeploymentProviderAccount.deployments now uses "all, delete, delete-orphan" (matching Folder.flows pattern).
6. UUID validation standardized — Both CRUDs now use _parse_uuid() that raises ValueError with context (field name + value). No moent return None/return 0 on bad input.
7. encrypt_api_key error context — Wrapped in try/except raising RuntimeError with clear message about encryption config.
Suggestions Fixed
8. Field validators — name, resource_key (Deployment) and provider_key, provider_url (DeploymentProviderAccount) now validated non-empty with .strip().
9. (provider_account_id, resource_key) uniqueness — Added to both model and migration.
10. account_id NULL documented — Comment explaining unique constraint behavior with NULLs.
11. or 0 removed from count_deployment_rows.
* Bit more verbose naming, but follows existing standards
* Add crud tests
* Harden validation, error handling, and test coverage for deployment persistence
- Extract shared validators (validate_non_empty_string) to database/utils.py
- Add DeploymentCreate schema with field validators
- Add _UNSET sentinel to update_provider_account for nullable field handling
- Extract _encrypt_api_key helper with broadened exception handling
- Add empty-string validation in CRUD create functions before DB round-trip
- Escalate IntegrityError and None rowcount logging to aerror with rollback
- Fix parse_uuid to chain exceptions with `from exc`
- Fix folder relationship nullability (Folder, not Folder | None)
- Add tests for 5 previously untested CRUD functions and new validation paths
* refactor: improve deployment CRUD naming, helpers, and documentation
- Rename count_deployments to count_deployments_by_provider
- Add update_deployment CRUD function and DeploymentUpdate schema
- Extract _strip_or_raise helper to deduplicate input validation
- Clarify IntegrityError messages to describe conflicts generically
- Document cascade semantics on User model relationships, double-
validation rationale in CRUD, and model_fields_set usage on
DeploymentProviderAccountUpdate
- Add missing get_deployment and update_deployment tests
* fix: harden deployment model validation, logging, and SQLAlchemy compatibility
- Validate pagination bounds (offset >= 0, limit > 0) in list_deployments_page
- Normalize blank provider_tenant_id to None on create, matching update behavior
- Centralize normalization via normalize_string_or_none utility and model validators
- Remove raw exception objects from IntegrityError log messages to avoid leaking SQL
- Reject unsupported types in parse_uuid with a clear TypeError
- Remove `from __future__ import annotations` from table models to fix SQLAlchemy
relationship mapper errors at runtime
* update parent of deployment provider account migration to flow history migration
* Add documentation and in-memory tests for deployment tables
- Add inline comment on api_key column in migration noting it is stored
encrypted
- Add comment on DeploymentProviderAccount.api_key model field
documenting encryption requirement
- Add in-memory SQLite test suite covering both deployment and
deployment_provider_account tables: unique constraints, CASCADE
deletes, relationship loading, FK enforcement, and CRUD operations
* Add missing test files
* mypy
* [autofix.ci] apply automated fixes
* remove unused test
---------
Co-authored-by: Hamza Rashid <hzarashid@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* checkout subservice implementation
* improve tests (added one, removed dead code) and handling of conflicting namespace registries
* introduce subservice types to scope and validate subservice registries by
* remove strict issubclass checks
* rename the feature to "adapter registry"
* refactor to /adapter directory
* major refactor to use shared config helpers
* refactor: align adapter registry with service manager patterns
- Use asyncio.iscoroutine for teardown (matches ServiceManager)
- Two-tier entry point error handling (warning vs debug)
- Add config load logging after adapter discovery
- Remove _get_nested_section wrapper, call shared helper directly
- Remove deployment/registry.py thin wrapper
- Export DeploymentServiceProtocol from services/__init__
- Extract test stubs into shared adapter_test_helpers module
- Revert incorrect ValueError->TypeError in schema validators
* refactor: remove adapter registry staging dict, derive config by convention
Align adapter registry with the service manager's @register_service
pattern: decorators now write directly to the AdapterRegistry singleton
instead of buffering in a module-level staging dict.
- register_adapter calls get_adapter_registry() + register_class()
directly, removing _decorator_adapter_registry and _decorator_lock
- get_adapter_registry derives entry_point_group and
config_section_path from AdapterType by convention, making them
optional parameters
- Remove _discover_from_decorators() since decorators are already
registered before discover() runs
- Fix discover_plugins docstring that incorrectly claimed decorators
had highest priority (config files do)
- Simplify _reset_registries, deps.py, test helpers, and docs
* move AdapterType enum to dedicated schema file in /adapters
* move config dir resolution to shared helper
* move import logic to a shared helper
* [autofix.ci] apply automated fixes
* Fix encapsulation, error handling, thread safety, and test gaps in adapter registry
- Encapsulate AdapterRegistry internal state behind private attrs and
read-only properties (adapter_type, entry_point_group, config_section_path,
is_discovered, has_cached_instances)
- Re-raise unexpected exceptions in register_adapter decorator instead of
silently swallowing them
- Promote entry-point discovery catch-all from debug to warning with traceback
- Wrap register_class in RLock for thread safety
- Add try/except with context logging around factory calls in get_instance
- Improve teardown_instances: preserve keys for error messages, add exc_info
- Evict stale cached instances when register_class changes the class for a key
- Narrow load_toml_config exception to ValueError (parent of TOMLDecodeError)
- Split load_object_from_import_path error handling: expected import failures
vs unexpected errors with traceback
- Guard redundant discover() calls in get_deployment_adapter via is_discovered
- Add tests for teardown exception isolation, sync teardown, and no-teardown
adapters
* [autofix.ci] apply automated fixes
* tighten up documentation
* add locking mechanisms around more functions
* [autofix.ci] apply automated fixes
* test config discovery
* Add lock around discovery
* improve teardown concurrency, add more concurrency tests, and improve protocol parity
* use kwarg lambda
* release lock before iterating with awaits
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
* Apply provider variable config to Agent build_config
Import and use apply_provider_variable_config_to_build_config in the Agent component so provider-specific variable settings (advanced/required/info/env fallbacks) are applied to the build_config. Provider-specific fields (e.g. base_url_ibm_watsonx, project_id) are hidden/disabled by default before applying the provider config. Updated embedded agent code in starter project JSONs and bumped their code_hashes accordingly.
* [autofix.ci] apply automated fixes
* update tests
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.com>
* fix: add showEmptyState prop to ModelInputComponent for better UX when no models are enabled
* style: convert double quotes to single quotes in modelInputComponent
* fixes refresh and kb blocker
* style: convert double quotes to single quotes in ModelTrigger component
* style: convert double quotes to single quotes in model provider components
- Convert all double quotes to single quotes in use-get-model-providers.ts and ModelProvidersContent.tsx
- Remove try-catch block in getModelProvidersFn to let errors propagate for React Query retry and stale data preservation
- Add flex-shrink-0 to provider list container to prevent layout issues
* fix: hide Knowledge Ingestion component and rename Retrieval to Knowledge Base
Move ingestion component to deactivated folder so it's excluded from
dynamic discovery. Rename KnowledgeRetrievalComponent to
KnowledgeBaseComponent with display_name "Knowledge Base". Update all
exports, component index, starter project, frontend sidebar filter,
and tests.
* fix: update test_ingestion import to use deactivated module path
* fix: skip deactivated KnowledgeIngestion test suite
* [autofix.ci] apply automated fixes
* fix: standardize formatting and indentation in StepperModal component
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Only process dict template fields
In json_schema_from_flow, guard access to template field properties by checking isinstance(field_data, dict) before calling .get(). This replaces the previous comparison to the string "Component" and prevents attribute errors when template entries are non-dict values, ensuring only dict-type fields with show=True and not advanced are included in the generated schema.
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>
* fix: improve knowledge base UI consistency and pagination handling
- Change quote style from double to single quotes throughout knowledge base components
- Update "Hide Sources" button label to "Hide Configuration" for clarity
- Restructure SourceChunksPage layout to use xl:container for consistent spacing
- Add controlled page input state with validation on blur and Enter key
- Synchronize page input field with pagination controls to prevent state drift
- Reset page input to "1" when changing page
* refactor: extract page input commit logic into reusable function
Extract page input validation and commit logic from handlePageInputBlur and handlePageInputKeyDown into a shared commitPageInput function to eliminate code duplication.
fix: standardize "README" title and update API key configuration notes in 3 main flow templates (#12005)
* updated for README
* chore: update secrets baseline with new line numbers
* fixed test
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
* Only process dict template fields
In json_schema_from_flow, guard access to template field properties by checking isinstance(field_data, dict) before calling .get(). This replaces the previous comparison to the string "Component" and prevents attribute errors when template entries are non-dict values, ensuring only dict-type fields with show=True and not advanced are included in the generated schema.
* Check and handle MCP server URL changes
When skipping creation of an existing MCP server for a user's starter projects, first compute the expected project URL and compare it to URLs found in the existing config args. If the URL matches, keep skipping and log that the server is correctly configured; if the URL differs (e.g., port changed on restart), log the difference and allow the flow to update the server configuration. Adds URL extraction and improved debug messages to support automatic updates when server endpoints change.
---------
Co-authored-by: Ram Gopal Srikar Katakam <44802869+RamGopalSrikar@users.noreply.github.com>