feat: add copy functionality to output modal with tooltip support#11493
feat: add copy functionality to output modal with tooltip support#11493viktoravelino merged 7 commits intomainfrom
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the
WalkthroughThis pull request adds a copy-to-clipboard feature to the output modal component. A new copy button in the modal header allows users to copy component outputs or logs, with visual feedback via icon toggling (copy to check) and success alert messages. Changes
Sequence DiagramsequenceDiagram
actor User
participant OutputModal as Output Modal<br/>(Component)
participant FlowStore as useFlowStore
participant Clipboard as Clipboard API
participant AlertStore as useAlertStore
User->>OutputModal: Click copy button
OutputModal->>FlowStore: Retrieve flowPool
FlowStore-->>OutputModal: Return latest node data
OutputModal->>OutputModal: Extract output/log content<br/>via getOutputContent
OutputModal->>Clipboard: Write content to clipboard
Clipboard-->>OutputModal: Success
OutputModal->>AlertStore: Trigger success alert
AlertStore-->>OutputModal: Display message
OutputModal->>OutputModal: Toggle isCopied state<br/>(copy → check icon)
rect rgba(100, 150, 200, 0.5)
Note over OutputModal: Wait 2 seconds
end
OutputModal->>OutputModal: Reset isCopied state
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 3 warnings)
✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
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. Comment |
Codecov Report❌ Patch coverage is
❌ Your patch status has failed because the patch coverage (0.00%) is below the target coverage (40.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #11493 +/- ##
==========================================
- Coverage 35.33% 34.84% -0.49%
==========================================
Files 1437 1421 -16
Lines 69246 68291 -955
Branches 10102 10053 -49
==========================================
- Hits 24465 23794 -671
+ Misses 43531 43264 -267
+ Partials 1250 1233 -17
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
31570e5 to
baa46dc
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx (1)
1-57: Harden clipboard flow and clear the reset timer.
navigator.clipboard.writeTextcan fail or be unavailable in certain contexts (HTTP, restricted permissions), and repeated clicks can leave multiple timers running. Guard availability before use, handle errors, and clear prior timers with cleanup on unmount—patterns already established elsewhere in the codebase.Also add
aria-labelto the icon-only button for screen reader accessibility; the tooltip alone does not substitute for it.🔧 Proposed hardening (availability guard + timer cleanup + accessibility)
-import { useState } from "react"; +import { useEffect, useRef, useState } from "react"; @@ const [activeTab, setActiveTab] = useState<"Outputs" | "Logs">("Outputs"); const [isCopied, setIsCopied] = useState(false); + const resetTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null); @@ - const handleCopy = () => { + useEffect(() => { + return () => { + if (resetTimerRef.current) clearTimeout(resetTimerRef.current); + }; + }, []); + + const handleCopy = async () => { const content = getOutputContent(); if (!content) return; - navigator.clipboard.writeText(content).then(() => { + if (!navigator.clipboard?.writeText) return; + + try { + await navigator.clipboard.writeText(content); setIsCopied(true); setSuccessData({ title: "Copied to clipboard" }); - setTimeout(() => { - setIsCopied(false); - }, 2000); - }); + if (resetTimerRef.current) clearTimeout(resetTimerRef.current); + resetTimerRef.current = setTimeout(() => { + setIsCopied(false); + }, 2000); + } catch { + setIsCopied(false); + // Consider surfacing a user-visible error via alert store. + } }; @@ <ShadTooltip content="Copy" side="bottom"> <Button variant="ghost" size="icon" className="absolute right-12 top-2 p-2" onClick={handleCopy} data-testid="copy-output-button" + aria-label="Copy output to clipboard" >
🤖 Fix all issues with AI agents
In `@src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx`:
- Around line 76-88: The icon-only copy Button (component Button with props
onClick={handleCopy} and data-testid="copy-output-button", rendering
ForwardedIconComponent and toggling via isCopied) lacks an accessible label; add
an aria-label (or aria-labelledby) to the Button so screen readers announce its
purpose (e.g., use aria-label={`Copy output${isCopied ? ' — copied' : ''}`} or
similar) and ensure the label updates based on isCopied to reflect the current
state.
In `@src/frontend/tests/extended/features/output-modal-copy-button.spec.ts`:
- Around line 4-186: Each test case in the "Output Modal Copy Button" suite
lacks a concise docstring describing purpose, scenario, and expected outcome;
add a one- or two-line descriptive comment or docstring immediately inside each
test(...) block (for the tests titled "user should be able to copy text output
from component output modal", "copy button should work with JSON output from API
Request component", and "copy button tooltip should display correctly") so the
intent is clear to readers and CI logs; place the comment at the top of each
test function body (right after the async ({ page }) => { line) and keep it
short (purpose, scenario, expected result).
- Around line 91-103: The test currently hits the real https://httpbin.org/json
when filling the API Request URL; instead, before calling
page.getByTestId("data_sourceAPI Request").hover() or before clicking
add-component-button-api-request, add a page.route(...) that intercepts requests
to "https://httpbin.org/json" and responds with a deterministic mocked JSON
payload and a 200 status so the API Request component uses the mock; ensure the
route is registered on the same Page instance used in the test and
remove/restore the route if necessary after the test to avoid cross-test
interference.
- Around line 4-8: The three Playwright tests under the "Output Modal Copy
Button" suite (the test described by test.describe and the async test callback)
lack docstrings and use brittle waitForTimeout() calls and an external HTTP
endpoint; add a concise test-level docstring at the top of each test explaining
the scenario and expected outcome, replace all hardcoded
page.waitForTimeout(...) usages with conditional waits using expect(...) with
appropriate timeouts (e.g., expect(locator).toBeVisible/hasText/waitFor with
timeout) to avoid flakiness, and for the test that fetches
https://httpbin.org/json replace the live request with a mocked network response
using Playwright's route.fulfill or test.route to return a deterministic payload
so CI/offline runs are stable; locate and update the async test function and any
helper functions interacting with the modal copy button, the external request,
or the wait calls to implement these changes.
🧹 Nitpick comments (1)
src/frontend/tests/extended/features/output-modal-copy-button.spec.ts (1)
69-72: Replace fixed sleeps with expect+timeout to reduce flakiness.
waitForTimeoutcan make tests slow and brittle. Prefer waiting on a condition with a timeout.⏱️ Suggested change
- // Wait for the icon to revert back to copy icon - await page.waitForTimeout(2500); - await expect( - copyButton.locator('[data-testid="icon-Copy"]'), - ).toBeVisible(); + // Wait for the icon to revert back to copy icon + await expect( + copyButton.locator('[data-testid="icon-Copy"]'), + ).toBeVisible({ timeout: 3000 }); @@ - // Wait for tooltip to appear - await page.waitForTimeout(500); - - // Check if the tooltip is visible - await expect(page.getByText("Copy")).toBeVisible(); + // Check if the tooltip is visible + await expect(page.getByText("Copy")).toBeVisible({ timeout: 2000 });Also applies to: 181-184
src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx
Outdated
Show resolved
Hide resolved
src/frontend/tests/extended/features/output-modal-copy-button.spec.ts
Outdated
Show resolved
Hide resolved
src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx
Outdated
Show resolved
Hide resolved
src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx
Outdated
Show resolved
Hide resolved
4f37ad5 to
a15b0e8
Compare
* bug: unable to use Other Model for 'Language Model' in Agent Component (#11506)
* fixed import issue on model provider
* addressed commments
---------
Co-authored-by: keval shah <kevalvirat@gmail.com>
* test: Fix race condition in rename flow test (#11549)
* fix: add Language Model components to Basic Prompt Chaining.json in starter_projects (#11567)
fix: add LM components to starter_projects in BPC
add Language Model components to Basic Prompt Chaining,json in starter_projects
* feat(loop): implement isolated subgraph execution for LoopComponent (#11034)
* refactor(loop): implement isolated subgraph execution for LoopComponent
- Refactor LoopComponent to execute loop body as isolated subgraph
- Add create_subgraph method to Graph class for creating isolated subgraphs
- Add loop_utils with get_loop_body_vertices helper function
- Add on_end_vertex event emission in async_start for progress tracking
- Add comprehensive tests for subgraph execution and event emission
This change enables proper vertex event streaming during loop execution
by running each iteration as an isolated subgraph with its own context.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve subgraph event streaming to UI
- Add event types to stream token event manager (end_vertex, error, build_start, build_end)
- Preserve start_component_id in async_start for proper subgraph execution
- Fix has_chat_output/has_chat_input to use vertex.base_name instead of string matching
- Add _stream_to_playground check to allow inner graph components to send events
- Fix _send_message_event to properly extract and forward message IDs
* update index
* fix: Enhance extract_loop_output to handle multiple message formats
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve intra-layer cycle detection logging in sorting function
* refactor: Update loop execution to create fresh subgraph for each iteration
* test: Add tests for subgraph isolation and state management
* fix: Update LoopComponent description for clarity on item processing
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Add warning log for missing custom_component in loop item injection
* refactor: Simplify loop event tests while preserving critical coverage
Reduced test complexity by removing excessive mocking while maintaining completeå event manager propagation coverage. Event manager tests are critical for ensuring UI updates work correctly during loop execution.
* fix: Update Google dependency version to 2.5.0 across multiple components
* fix: Update value format in Research Translation Loop JSON for clarity
* fix: Inject loop items into HandleInput fields via raw_params
HandleInput fields (type="other") were receiving None instead of loop items
because:
1. Fields with type="other" are skipped during field param processing
2. Loop->Parser edge is filtered out in subgraph creation
3. updated_raw_params flag was reset too early by multiple build_params() calls
Fix:
- Inject loop items into template before prepare()
- Inject into raw_params after prepare() using update_raw_params()
- Persist updated_raw_params flag across all build_params() calls
- Reset flag in _build_each_vertex_in_params_dict() after processing
Tests:
- Add integration test exercising execute_loop_body() code path
- Verify update_raw_params() called with correct data per iteration
- Add full Loop+Parser integration test
- Fix fieldName -> field_name in existing tests
* fix: Update done_output method to use internal event manager and improve event handling
* refactor: Update execute_loop_body to use async context manager for subgraph creation and cleanup
* fix: import json in unified_models.py
* feat: Implement subgraph tracing context management
* fix: Update code_hash and improve loop component execution logic
* fix: Update code_hash and refine LoopComponent execution logic
* [autofix.ci] apply automated fixes
* fix: Update LoopComponent subgraph execution to set event manager as instance attribute
* test: Enhance subgraph execution tests to verify event manager passing
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Missing 'Disconnect' Option in Model Providers Settings (#11373)
* added disconnect styles from design
* added motion to model provider
* revert input to make sense
* styles improved
* backend fix
* removed non used import
* fixed disconnect (design suggestion)
* added tests
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* updated templates
* updated templates
* re-run ci
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: correctly handle httpexceptions in session scope (#11542)
* Correctly handle httpexceptions in session scope
* don't assume autologin
for distributed envs, diff backends may have diff autologin
settings, so don't assume config
* [autofix.ci] apply automated fixes
* simplify conditional logic
* update comp index
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: remove authentication check on sign up endpoint (#11560)
* Remove authentication check on sign up endpoint
* [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: Apply env var fallback fix to lfx module (#11584)
Applies the fix from PR #9422 (commit 18e2ff2d2d) to the lfx module,
which was previously only applied to the backend module.
PR #9422 fixed a bug where environment variable fallback would fail when
`load_from_db=True` inputs couldn't find variables in the database.
The fix properly distinguishes between two error cases:
- "User id is not set" → always raise (authentication issue)
- "variable not found." → only raise if fallback_to_env_vars=False
However, this fix was only applied to:
- src/backend/base/langflow/interface/initialize/loading.py
And was missing from:
- src/lfx/src/lfx/interface/initialize/loading.py
PR #9902 added table field support and reorganized the test imports to
use the lfx module (which has table support). The test was updated to
use "Database connection failed" error message to work with the existing
code, rather than "variable not found." which would trigger the bug.
This commit:
1. Applies the bug fix to the lfx module's regular field handler
2. Restores the original test behavior using "variable not found."
to properly validate that the fix works
- src/lfx/src/lfx/interface/initialize/loading.py
Fixed error handling to respect fallback_to_env_vars flag
- src/backend/tests/unit/interface/initialize/test_loading.py
Restored "variable not found." error to properly validate the fix
Fixes: https://github.com/langflow-ai/langflow/issues/11422
Related: #9422, #9902
* feat: add copy functionality to output modal with tooltip support (#11493)
* feat: add copy functionality to output modal with tooltip support
* [autofix.ci] apply automated fixes
* refactor: streamline OutputModal component structure and improve readability
* refactor: remove comment
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Improve Read File and Write File storage location UX (#11589)
* advanced mode for storage
* add tests
* hide storage location
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: modal autofocus close button (#11425)
* fix: improve focus behavior in FlowLogsModal
* fix: improve focus behavior in SaveChangesModal
* refactor: extract onOpenAutoFocus handlers
* check if element exists before prevent
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Add Python flow execution support for Assistant (#11553)
* add execution .py
* fix verbose error
* remove unecessary doc
* [autofix.ci] apply automated fixes
* add coderabbit suggestion and mypy fixes
* fix mypy
* add more tests to /agents related files
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* build(deps-dev): bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 in /src/frontend (#11595)
build(deps-dev): bump @modelcontextprotocol/sdk in /src/frontend
Bumps [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) from 1.25.3 to 1.26.0.
- [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases)
- [Commits](https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.3...v1.26.0)
---
updated-dependencies:
- dependency-name: "@modelcontextprotocol/sdk"
dependency-version: 1.26.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai>
* ci: use correct labeling for nightly hash update workflow step (#11492)
* Fix merging of nightly hash update to main
* Add testing flag for just merge pr
* fix'
* try conditional logic to skip jobs
* fix conditional
* checkout new branch only pull in night hash
* add hash history back
* Remove test flag
* fix conditionals
* feat: fork branch for main (#11183)
* feat: add chat-header feature and sliding container (#11045)
Add sliding playground layout (SimpleSidebar + sliding container + store) and toolbar button integration to open it directly + chat header/session components and hooks (SessionSelector, SessionRename, ChatHeaderTitle, use-get-flow-id, playgroundStore).
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* removed changes on the tailwind config
* feat: add session management functionality (#11272)
* feat: add session management functionality
- Add session selector component
- Add session more menu component
- Add session header component
- Add session edit info hook
- Add get/add sessions hook
- Hide delete button for default session
* sync: update animated-close and simple-sidebar from pr4
* Make sidebar continue to be fullscreen after closing and opening
* [autofix.ci] apply automated fixes
* reduce max width
* Pr2 bis chat messages (#11308)
* feat: add chat messages components and infrastructure
- Add bot message component
- Add thinking message component
- Add user message component
- Add chat message wrapper component
- Add message editing functionality
- Add error message component
- Add file card wrapper
- Add message options component
- Add chat history hook
- Add thinking duration hook
- Add typing effect hook
- Add message utilities (convert files, format file name, sort messages)
- Add content block display component
- Add send message hook
* fix: remove typing animation from bot messages, show thinking immediately after user message, and use optional chaining for updateChat
* [autofix.ci] apply automated fixes
* feat: add streaming message hook and fix thinking/thought display logic
- Extract streaming logic to useStreamingMessage hook matching IOModal behavior
- Fix thinking/thought message display to use isBuilding directly from store
- Remove typing animation logic from bot messages
- Fix textarea resize to prevent growing on every keystroke with 10px threshold
- Fix ContentBlockDisplay truncate styling for tool titles
- Remove markdown bold syntax (**) from tool titles
- Fix ContentDisplay type error
* refactor: sync chat-messages from pr3 with refactored utilities
- Copy refactored chat-messages components from pr3
- Add new hooks: use-message-duration, use-tool-durations
- Add consolidated utilities: format.ts, content-blocks.ts, extract-error-message.ts
- Add Indicator icon for error messages
- Update ContentBlockDisplay to use new utilities
- Remove format-file-name.tsx (merged into format.ts)
- Update lazyIconImports to include Indicator icon
* sync: update animated-close and simple-sidebar from pr4
* Pr3 chat input (#11310)
* feat: add chat input components and improvements
- Add chat input component
- Add text area wrapper with auto-resize
- Add input wrapper component
- Add button send wrapper
- Add no-input component
- Add audio button component
- Add file preview component
- Add upload file button
- Add auto-resize text area hook
- Add audio recording hook
- Add drag and drop hook
- Update textarea UI component
- Update IOModal input wrapper
- Update constants for chat input
* feat: add file handling, UI enhancements, types, stores and dependencies
- Add file preview display component
- Add file utilities
- Add animated close component
- Add simple sidebar component
- Update sliding container with container queries support
- Update FlowPage components
- Update styles and Tailwind config
- Add chat types
- Add component types
- Add utility store types
- Add utility store
- Update package dependencies
* fix: prevent chat input from growing on every letter and make updateChat optional with proper typing
* fix: prevent chat input from growing on every letter
* fix: sync message components with PR2 (remove typing animation, fix thinking timing, use optional chaining)
* fix: sync message components with PR2 (remove typing animation, fix thinking timing, use optional chaining)
* [autofix.ci] apply automated fixes
* fix: apply message component fixes from PR2 (remove typing animation, fix thinking timing, use optional chaining)
* [autofix.ci] apply automated fixes
* fix: prevent textarea from resizing on every character by tracking previous scrollHeight
* fix: prevent textarea from resizing on every character by tracking previous scrollHeight
* fix: prevent textarea from growing on every character with 10px threshold
* fix: prevent textarea from growing on every character with 10px threshold
* Revert "fix: prevent textarea from growing on every character with 10px threshold"
This reverts commit ec3ed63fa8638a4b5d1777576aa7b4736e03c237.
* Revert "fix: prevent textarea from growing on every character with 10px threshold"
This reverts commit 93637ae4de873af2f89424d536459fda13b0f67f.
* feat: add streaming message hook and fix thinking/thought display logic
- Extract streaming logic to useStreamingMessage hook matching IOModal behavior
- Fix thinking/thought message display to use isBuilding directly from store
- Remove typing animation logic from bot messages
- Fix textarea resize to prevent growing on every keystroke with 10px threshold
- Fix ContentBlockDisplay truncate styling for tool titles
- Remove markdown bold syntax (**) from tool titles
- Fix ContentDisplay type error
* feat: add streaming message hook and fix thinking/thought display logic
- Extract streaming logic to useStreamingMessage hook matching IOModal behavior
- Fix thinking/thought message display to use isBuilding directly from store
- Remove typing animation logic from bot messages
- Fix textarea resize to prevent growing on every keystroke with 10px threshold
- Fix ContentBlockDisplay truncate styling for tool titles
- Remove markdown bold syntax (**) from tool titles
- Fix ContentDisplay type error
* fix error making the flow crashing
* resize user and bot icon and remove borders
* fix flow crash when error
* have the green duration be the sum of tool and sec part the entire thinking
* refactor: extract and consolidate chat message utilities
- Extract duration tracking logic to use-message-duration hook
- Consolidate format utilities (formatTime, formatSeconds, formatToolTitle, formatFileName) into single format.ts file
- Merge content block utilities (getContentBlockState, getContentBlockLoadingState) into content-blocks.ts
- Move component-specific logic (hasTools, shouldShowAvatar, shouldShowContentBlocks) back into components
- Move errorMarkdownComponents into error-message.tsx component
- Simplify error-message.tsx by extracting sub-components
- Add Indicator icon for error messages
- Update all imports to use consolidated utilities
* refactor: sync chat-messages and chat-input from pr4
- Copy refactored chat-messages components from pr4
- Add new hooks: use-message-duration, use-tool-durations
- Add consolidated utilities: format.ts, content-blocks.ts, extract-error-message.ts
- Add Indicator icon for error messages
- Update ContentBlockDisplay to use new utilities
- Remove format-file-name.tsx (merged into format.ts)
- Update lazyIconImports to include Indicator icon
* change duration animation
* Only allow certain file types
* feat: add file handling, UI enhancements, types, stores and dependencies (#11276)
* [autofix.ci] apply automated fixes
* feat: add clear chat option for default session in session management
- Add 'Clear chat' option to SessionMoreMenu component
- Show 'Clear chat' for default session (currentSessionId === currentFlowId)
- Show 'Delete' for other sessions (existing behavior)
- Clear chat deletes messages but keeps the session
- Delete removes the entire session
- Both options use same red color styling
* adjust radius for error message border
* show only the text An error occured
* refactor: replace Zustand with React Query for message handling
- Move all message handling logic to chat-view/utils/
- Create message-event-handler.ts to handle build events
- Create message-utils.ts for React Query cache operations
- Update buildUtils.ts to delegate message events to chat-view
- Remove MemoizedChatMessage to fix streaming updates
- Simplify use-chat-history to use session cache as single source of truth
- Support placeholder messages for immediate UI feedback
- Handle streaming tokens with proper text accumulation
* fix: improve clear chat logic to prevent double clearing
- Fix clearSessionMessages to use removeQueries instead of invalidateQueries
- Prevents refetch that brings back deleted messages
- Clear chat only works for default session, delete works for other sessions
- Handle default session messages with null session_id (legacy)
* fix padding and spacing issue on playground component
* fix: message section padding
* fix: padding
* add time persistence and build perfect timer
* [autofix.ci] apply automated fixes
* fix display time styles
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* fix: format time in seconds and fix gap between duration and message
* [autofix.ci] apply automated fixes
* fix: fetch messages in session logs modal to prevent empty display
* [autofix.ci] apply automated fixes
* fix: added gap between image and message
* fix header truncating
* fix: apply card in the background of user message in smaller view
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
---------
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
---------
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
---------
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Keval718 <kevalvirat@gmail.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* fix: frontend tests
* [autofix.ci] apply automated fixes
* fix nested agents
* [autofix.ci] apply automated fixes
* Revert "fix nested agents"
This reverts commit f230c8c6dd25a88b47739f8a83c0c8296f24778c.
* fix time on agent chain
* [autofix.ci] apply automated fixes
* fix(playground): display ChatInput default value on playground open (#11514)
* fix(playground): display ChatInput default value on playground open
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(ui): prevent layout shift when adding Chat Input with closed playground (#11531)
* fix(ui): prevent layout shift when adding Chat Input with closed playground
* fix(ui): remove unwanted import
* fix(frontend): reset playground state when navigating between flows (#11533)
reset playground state when leaving the flow
* fix(frontend): prevent Message Logs table from dropping columns with falsy values (#11540)
fix(frontend): prevent Message Logs table from dropping columns with falsy values
* fix(frontend): auto-close playground when all chat components are removed (#11537)
* fix(frontend): auto-close playground when all chat components are removed
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(frontend): prevent send button from being pushed off-screen in chat input (#11556)
* fix(frontend): prevent send button from being pushed off-screen in chat input
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(test): fix image upload process in chat input test
* fix(test): improve chat message verification in chat input test
* fix: add data-testID to ensure the testcases pass (#11573)
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
* feat(tests): add data-testid attributes for improved test targeting in chat header and session selector
* fix: session rename create new session instead of remaining existing one (#11576)
* fix(frontend): resolve session rename bugs and prevent message loss
* fix(playground): Fix session rename not showing messages immediately
* [autofix.ci] apply automated fixes
* fix(playground): Eliminate duplicate logic in session-selector
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(test): playground test
* fix: rename session and test shard 9 (#11581)
fix: pass renameLocalSession to ChatHeader to fix session rename creating new session
The session rename from the chat header's more menu was creating a new session
instead of renaming the existing one. This was because renameLocalSession was
not being passed to useEditSessionInfo in chat-header.tsx.
- Added renameLocalSession to ChatHeaderProps type
- Pass renameLocalSession from flow-page-sliding-container to ChatHeader
- Pass renameLocalSession to useEditSessionInfo in chat-header
* fix(frontend): prevent menu stacking and ensure proper close behavior (#11592)
* fix(frontend): prevent menu stacking and ensure proper close behavior
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: playground tests shard 13 (#11593)
* fix: update Basic Prompting test to use specific test IDs for playground combobox
* fix: skip voice assistant interaction test for review
* test: skip voice-assistant tests pending playground refactor
* fix: tests shard 16 (#11594)
* fix: update Basic Prompting test to use specific test IDs for playground combobox
* fix: skip voice assistant interaction test for review
* test: skip voice-assistant tests pending playground refactor
* fix: update Financial Report Parser and Image Sentiment Analysis tests
- Financial Report Parser: Use stop_building_button instead of button-stop
(which doesn't exist in playground chat input), wait for it to appear
before waiting for hidden state, and use div-chat-message instead of
.markdown selector which was matching node descriptions
- Image Sentiment Analysis: Replace unreliable dispatchEvent("drop") with
setInputFiles() for file upload, add proper flow completion wait, and
use img[alt$="chain.png"] to handle server timestamp prefix
* fix(frontend): prevent duplicate session creation when renaming in non fullscreen mode (#11596)
fix(frontend): prevent duplicate session creation when renaming in non-fullscreen mode
* fix: tests shard 18 - Memory Chatbot and Simple Agent Memory (#11597)
Memory Chatbot:
- Replace fragile selectors (getByRole, getByLabel) with data-testid
- Use chat-header-more-menu and message-logs-option for message logs
- Replace .isVisible() with proper expect().toBeVisible() assertions
- Simplify test by removing session deletion
Simple Agent Memory:
- Add waitForSelector for input before filling
- Use stop_building_button instead of getByRole("button", { name: "Stop" })
- Use proper wait pattern: visible → hidden for build completion
- Add user message verification with chat-message-User-* test IDs
- Add wait for div-chat-message before asserting
* fix: update News Aggregator test to streamline API key handling and increase timeout (#11598)
* fix: tests shard 18 - Memory Chatbot and Simple Agent Memory
Memory Chatbot:
- Replace fragile selectors (getByRole, getByLabel) with data-testid
- Use chat-header-more-menu and message-logs-option for message logs
- Replace .isVisible() with proper expect().toBeVisible() assertions
- Simplify test by removing session deletion
Simple Agent Memory:
- Add waitForSelector for input before filling
- Use stop_building_button instead of getByRole("button", { name: "Stop" })
- Use proper wait pattern: visible → hidden for build completion
- Add user message verification with chat-message-User-* test IDs
- Add wait for div-chat-message before asserting
* fix: update News Aggregator test to streamline API key handling and increase timeout
* fix: refactor Pokedex Agent test for improved readability and consistency
* fix: update Pokedex Agent test to correctly retrieve chat message output and adjust length expectation
* fix: improve Research Translation Loop test structure and readability
* fix: enhance readability and consistency in Simple Agent Memory test
* fix: generalBugs-shard-9 test
* fix: simplify file upload handling in limit-file-size-upload test
* fix: file upload test
* fix: update chat interaction test for improved sender name handling
* fix: add data-testid attribute to hidden file input for improved test targeting
* fix: refactor test structure for improved readability and maintainability
* fix: revert upload file util
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
* fix: Link visibility and 404 URL in Auto-save modal (#11476)
fix: Fix link visibility and URL in save flow modal
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
* Fix: runflow toolmode input progation (#11348)
* fix input propogation to subflow in runflow component in toolmode
refactor runflow
remove print calls
allow Data inputs and refactoring of runflow component with updated tests
misc
misc
persist tweaks in multi-input scenario
add regression tests
chore: update component index
ruff (tests)
checkout component index from main
chore: update component index
obfuscate error message
chore: update component index
chore: update component index
* [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 (attempt 2/3)
---------
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>
* bug: fix for embedding model input/output handler (#11591)
* fix for embedding model input/output
* code clean up for connect other models
* [autofix.ci] apply automated fixes
* update templates
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: Alphabetical Sorting for "Models & Agents" Components (#11489)
* fix: make sure model and agent are alphabetically sorted
* [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)
---------
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
* feat: update pre-release flow to be useable for qa (#11322)
* feat: create prerelease dedicated to qa
allow prerelease versions dedicated to qa
* chore: revert lfx dep to 0.2.1
* chore: lfx pyproject version 0.2.1 for testing
* feat: use pythin script to determine rc version
use a python script to auto incremenet rc version so we do not have to manually maintain what rc version we are on.
add it to both release.yml and docker-build-v2.yml for pypi, docker and ghrc.
* [autofix.ci] apply automated fixes
* chore: change script vars to more meaningful ones
* chore: add meaningful echos
* chore: add quotes to pass empty str if no version
* test: REVERT always pass ci REVERT
* chore: add normalization to built ver tests
* chore: remove unused uv environment set up
* chore: add back in checkout code
* chore: disable caching for ensure-lfx-published
* chore: revert changes added after merge
* fix: allow prerelase python install flag
* chore: test base and main install as 1
* chore: seperate base and main
* chore: install main using local base first
* chore: try using reinstall
* chore: create locl directory and use it first
* chore: try --no-deps
* chore: langflow-*.whl
* [autofix.ci] apply automated fixes
* fix: try using unsafe-best-match
use ./local-packages --index-strategy unsafe-best-match
* fix: add a dynamic constriant for langflow base
add a dynamic constriant for langflow base during build-main. if this works I will need to go back and remove any unneeded cross-platform test changes
* chore: revert to normal install
* fix: add pre-main option to make build
* chore: remove hyphen in make var
* chore: keep propigation wait for pre-release
* chore: revert cross-platform-test.yml changes
* chore: use else ifdef and add test echos
* chore: remove --no-soruces
* chore: use ifeq
* chore: revert lfx 0.2.1
* chore: downgrade to python 3.12
ragstack-ai-knowledge-store does not support pythong 3.13
* chore: add else to Makefile
* chore: back to ifdef
* chore: reset to Makefile to main and add pre again
* chore: revert to python 3.13
* chore: set compatability check to 3.12
hopeffuly fixes
Found 1 incompatibility
The package `ragstack-ai-knowledge-store` requires Python >=3.9, <3.13, but `3.13.11` is installed
* [autofix.ci] apply automated fixes
* fix: new flow reset.
* chore: update LFX Determine version
* fix: remove buil-lfx dep on lfx release
* chore: remove more inputs.release_lfx if statments
* fix: uv pip install --find-links
* chore: create uv venv before uv pip install
* chire: attempt for reinatll of local whls
* fix: add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES
add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES to macos cross-platform test builds
* [autofix.ci] apply automated fixes
* chore: add back in ci step
* fix(ci): correctly generate pre-release rc tags
* [autofix.ci] apply automated fixes
* feat: update pre-release flow to be useable for qa
* Revert "feat: update pre-release flow to be useable for qa"
This reverts commit 22737729a2d0ed64ea774a30af070f0010cba9e1.
* feat: update pre-release flow to be useable for qa
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* feat: update pre-release flow to be useable for qa
* feat: update pre-release flow to be useable for qa
* feat: update pre-release flow to be useable for qa
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: vijay kumar katuri <vijaykaturi@vijays-MacBook-Air.local>
Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com>
* fix: remove fe from backend image build (#11579)
* asdf
* build langflow-backend image correctly with no frontend
* Update docker/build_and_push_backend.Dockerfile
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
* Fix version check for backend image
* Add data dir
* Add npm back for mcp support
---------
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
* feat: adds inspection panel to show node inputs (#11263)
* First prototype of inspection panel
* fixed value not being set
* Hide inputs that are not handles from the node, show everything else on the inspection panel
* [autofix.ci] apply automated fixes
* Implemented close button on inspection panel
* Re-show inputs on the node
* remove code from node toolbar
* change code design on inspection panel
* create feature flag
* disable code and controls on node based on feature flag
* adjusted inspection panel size
* [autofix.ci] apply automated fixes
* disable inspection panel with feature flag
* Show only connections on component
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* Add output and logs to inspect panel
* [autofix.ci] apply automated fixes
* removed label from code button
* filter handleinputs
* added description on inspection panel header
* remove tabs from inspection panel and use inspect output on node again
* Make inspect panel have flexible height and disable its animation
* [autofix.ci] apply automated fixes
* Removed division from node name and inputs
* Reduce some gaps
* [autofix.ci] apply automated fixes
* Add docs button
* show docs just when exists
* [autofix.ci] apply automated fixes
* added custom 4.5 height and width
* Changed node text sizes and icon size
* [autofix.ci] apply automated fixes
* Added freeze always to the node toolbar
* Updated input size on inspect panel and output size on node
* [autofix.ci] apply automated fixes
* Implemented name and description editing
* Changed paddings to match design
* Added advanced fields and trigger
* fixed advanced and pencil design
* Implemented new prompt component with inline editing
* [autofix.ci] apply automated fixes
* Remove console logs
* Dont fetch data on inspection panel
* Made inputs appear to perform calculations but not show up on nodes
* Removed LanguageModel from input types of model input in basic prompting
* Changed inputs to not render when showParameter is false, in order to run the useEffects
* Change tests to select node to change model, and then unselect all
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* deleted unused file
* extract filtering logic
* [autofix.ci] apply automated fixes
* removed Made with Bob comments
* Fix error catching
* [autofix.ci] apply automated fixes
* Fixed dropdown not avoiding collisions
* Remove dead zone below the inspection panel
* Fixed prompt validation being done even if input didnt change
* Fixed handle fields appearing
* Fixed handle not showing up on minimized components
* Fixed condition for minimizing component
* fixed minimized nodes behavior to minimize when only one input is connected
* [autofix.ci] apply automated fixes
* fixed component not showing up as hidden
* changed data test id of advanced modal and advanced trigger, to fix tests
* Fixed custom component not having pink code button
* [autofix.ci] apply automated fixes
* fixed node exhibition when feature flag is disabled, fixed minimized field
* added show and hide advanced button on inspection panel
* [autofix.ci] apply automated fixes
* Fixed fit view to contain padding when a component is clicked
* fixed freeze path test
* change label
* changed gpt model test
* added separator between description and fields
* Changed advanced padding
* fixed gpt setup and image sentiment analysis
* fixed mcp server test
* fixed freeze spec
* [autofix.ci] apply automated fixes
* fixed logs setup
* Fixed stop building test
* Fixed minimization text
* changed variable name
* [autofix.ci] apply automated fixes
* Filter tool mode
* fixed prompt component unfocusing every time
* [autofix.ci] apply automated fixes
* fixed blog writer
* added select anthropic model, fixed custom component generator that didnt show the code
* fixed inspection panel advanced
* fixed tests that used advanced fields
* fixed gpt model timeout
* [autofix.ci] apply automated fixes
* fixed toolbar button collision
* always show language model input
* fixed tests
* [autofix.ci] apply automated fixes
* disabled advanced shortcut when inspection panel is enabled
* fixed tests
* [autofix.ci] apply automated fixes
* fixed flicker
* [autofix.ci] apply automated fixes
* fix tests
* [autofix.ci] apply automated fixes
* push to trigger tests
* [autofix.ci] apply automated fixes
* Update select-gpt-model and select-anthropic-model utilities
* feat: improve Inspection Panel UX
- Prevent Inspector Panel from opening when clicking input fields
- Add onMouseDown stopPropagation to input wrapper
- UX improvements for panel interactions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
* Enable node toolbar items when inspect panel is disabled, save user preference on local storage, code cleanup
* [autofix.ci] apply automated fixes
* Show handle inputs on advanced
* Adjusted description and name
* [autofix.ci] apply automated fixes
* disable select nodes on drag
* Try to fix tests that have controls open
* [autofix.ci] apply automated fixes
* fix run flow test and select gpt model
* Revert "Fixed dropdown not avoiding collisions"
This reverts commit acf21900017ad2b459340c73becde06a894adf83.
* fixed collisions on inspection panel
* [autofix.ci] apply automated fixes
* fixed select gpt model and parameter render input
* updated similarity test
* [autofix.ci] apply automated fixes
* changed playwright config
* fix test text sentiment and and elect-gpt-model
* fixed jest tests
* [autofix.ci] apply automated fixes
* Fixed tests related to the advanced modal
* [autofix.ci] apply automated fixes
* fix textAreaModalComponent test
* fix freeze test
* fix edit-name-description-node-spec
* fix edit-name-description-node-spec plus adding timeout
* fix lanflowShortcut test
* fix edit-name-description-node test
* fix userSettings test
* fixed tests
* [autofix.ci] apply automated fixes
* fixed jest tests
* fixed test
* Added unit tests for inspection panel
* [autofix.ci] apply automated fixes
* re-added code and fixed tests
* fixed header design
* [autofix.ci] apply automated fixes
* Fixed shortcuts, fixed advanced mode
* [autofix.ci] apply automated fixes
* fixed tests
* [autofix.ci] apply automated fixes
* fixed unit tests
* [autofix.ci] apply automated fixes
* fixed tests and sortable list component
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: Rodrigo Nader <rodrigonader@Mac.localdomain>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* 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>
* 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)
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* [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
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
* address review comments
* [autofix.ci] apply automated fixes
* fix ruff errors
* remove cache
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
* 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: 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: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.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: 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
* [au…
…11446) * Add full provider variable metadata and multi-variable support Enhances provider variable handling by introducing a metadata structure for all required variables per provider, including support for providers with multiple required variables (e.g., IBM WatsonX). Updates backend API to return full variable info, adapts frontend to dynamically render and save multiple variables, and adds comprehensive tests for the new API response. Also updates static mappings and introduces a new React hook for fetching provider variable metadata. * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * Refactor provider variable saving to batch mode Replaces per-variable auto-save with a batch save for all provider variables, improving UX and reducing API calls. Updates input handling to show masked values for secrets, disables save button until all required fields are filled, and provides clearer feedback for configured variables. * use decrypt only for is secret Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update unified_models.py * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * Refactor model provider metadata and validation logic Centralize MODEL_PROVIDER_METADATA in model_metadata.py and update unified_models.py to import and use it. Refactor provider validation to accept all required variables as a dictionary, supporting providers with multiple required credentials. Simplify and generalize validation logic for all providers. * Refactor provider param mappings for language models Centralizes provider-specific parameter mappings in model_metadata.py and introduces get_provider_param_mapping for reuse. Updates unified_models.py to use this mapping, reducing duplication and improving maintainability for model class, API key, and other provider-specific parameters. * Update providerConstants.ts * Refactor provider config check to include all required variables Replaces the API key-specific check with a more general configuration requirement, considering all required provider variables (not just secrets). Updates related UI logic and labels to reflect this broader configuration requirement. * Fixed overflow * [autofix.ci] apply automated fixes * Fix provider enablement to check all required variables Update logic to consider both secret and non-secret variables when determining enabled providers. Refactor to fetch all required provider variables, not just credentials, and ensure correct values are passed for validation. This improves accuracy for providers that require non-secret configuration variables. * Refactor language model config for provider flexibility Replaces provider-specific field toggling logic in starter project LanguageModelComponent definitions with a call to apply_provider_variable_config_to_build_config. This centralizes provider-specific configuration, improving maintainability and extensibility for new model providers. * Update backend to include validation on variable enable, and validation endpoint * Deleted unused files * Added required provider API calls * Refactored frontend to allow handling multiple fields on the providers * updated component index * Merge remote-tracking branch 'origin/main' into EJ/add-multi-api-support * Changed LF assistant backend to work with new variables * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) * fix: resolve merge conflicts for multi api support (#11807) * bug: unable to use Other Model for 'Language Model' in Agent Component (#11506) * fixed import issue on model provider * addressed commments --------- Co-authored-by: keval shah <kevalvirat@gmail.com> * test: Fix race condition in rename flow test (#11549) * fix: add Language Model components to Basic Prompt Chaining.json in starter_projects (#11567) fix: add LM components to starter_projects in BPC add Language Model components to Basic Prompt Chaining,json in starter_projects * feat(loop): implement isolated subgraph execution for LoopComponent (#11034) * refactor(loop): implement isolated subgraph execution for LoopComponent - Refactor LoopComponent to execute loop body as isolated subgraph - Add create_subgraph method to Graph class for creating isolated subgraphs - Add loop_utils with get_loop_body_vertices helper function - Add on_end_vertex event emission in async_start for progress tracking - Add comprehensive tests for subgraph execution and event emission This change enables proper vertex event streaming during loop execution by running each iteration as an isolated subgraph with its own context. * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) * fix: Improve subgraph event streaming to UI - Add event types to stream token event manager (end_vertex, error, build_start, build_end) - Preserve start_component_id in async_start for proper subgraph execution - Fix has_chat_output/has_chat_input to use vertex.base_name instead of string matching - Add _stream_to_playground check to allow inner graph components to send events - Fix _send_message_event to properly extract and forward message IDs * update index * fix: Enhance extract_loop_output to handle multiple message formats * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) * fix: Improve intra-layer cycle detection logging in sorting function * refactor: Update loop execution to create fresh subgraph for each iteration * test: Add tests for subgraph isolation and state management * fix: Update LoopComponent description for clarity on item processing * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) * fix: Add warning log for missing custom_component in loop item injection * refactor: Simplify loop event tests while preserving critical coverage Reduced test complexity by removing excessive mocking while maintaining completeå event manager propagation coverage. Event manager tests are critical for ensuring UI updates work correctly during loop execution. * fix: Update Google dependency version to 2.5.0 across multiple components * fix: Update value format in Research Translation Loop JSON for clarity * fix: Inject loop items into HandleInput fields via raw_params HandleInput fields (type="other") were receiving None instead of loop items because: 1. Fields with type="other" are skipped during field param processing 2. Loop->Parser edge is filtered out in subgraph creation 3. updated_raw_params flag was reset too early by multiple build_params() calls Fix: - Inject loop items into template before prepare() - Inject into raw_params after prepare() using update_raw_params() - Persist updated_raw_params flag across all build_params() calls - Reset flag in _build_each_vertex_in_params_dict() after processing Tests: - Add integration test exercising execute_loop_body() code path - Verify update_raw_params() called with correct data per iteration - Add full Loop+Parser integration test - Fix fieldName -> field_name in existing tests * fix: Update done_output method to use internal event manager and improve event handling * refactor: Update execute_loop_body to use async context manager for subgraph creation and cleanup * fix: import json in unified_models.py * feat: Implement subgraph tracing context management * fix: Update code_hash and improve loop component execution logic * fix: Update code_hash and refine LoopComponent execution logic * [autofix.ci] apply automated fixes * fix: Update LoopComponent subgraph execution to set event manager as instance attribute * test: Enhance subgraph execution tests to verify event manager passing --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * feat: Missing 'Disconnect' Option in Model Providers Settings (#11373) * added disconnect styles from design * added motion to model provider * revert input to make sense * styles improved * backend fix * removed non used import * fixed disconnect (design suggestion) * added tests * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * updated templates * updated templates * re-run ci --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: correctly handle httpexceptions in session scope (#11542) * Correctly handle httpexceptions in session scope * don't assume autologin for distributed envs, diff backends may have diff autologin settings, so don't assume config * [autofix.ci] apply automated fixes * simplify conditional logic * update comp index * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: remove authentication check on sign up endpoint (#11560) * Remove authentication check on sign up endpoint * [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: Apply env var fallback fix to lfx module (#11584) Applies the fix from PR #9422 (commit 18e2ff2d2d) to the lfx module, which was previously only applied to the backend module. PR #9422 fixed a bug where environment variable fallback would fail when `load_from_db=True` inputs couldn't find variables in the database. The fix properly distinguishes between two error cases: - "User id is not set" → always raise (authentication issue) - "variable not found." → only raise if fallback_to_env_vars=False However, this fix was only applied to: - src/backend/base/langflow/interface/initialize/loading.py And was missing from: - src/lfx/src/lfx/interface/initialize/loading.py PR #9902 added table field support and reorganized the test imports to use the lfx module (which has table support). The test was updated to use "Database connection failed" error message to work with the existing code, rather than "variable not found." which would trigger the bug. This commit: 1. Applies the bug fix to the lfx module's regular field handler 2. Restores the original test behavior using "variable not found." to properly validate that the fix works - src/lfx/src/lfx/interface/initialize/loading.py Fixed error handling to respect fallback_to_env_vars flag - src/backend/tests/unit/interface/initialize/test_loading.py Restored "variable not found." error to properly validate the fix Fixes: https://github.com/langflow-ai/langflow/issues/11422 Related: #9422, #9902 * feat: add copy functionality to output modal with tooltip support (#11493) * feat: add copy functionality to output modal with tooltip support * [autofix.ci] apply automated fixes * refactor: streamline OutputModal component structure and improve readability * refactor: remove comment --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: Improve Read File and Write File storage location UX (#11589) * advanced mode for storage * add tests * hide storage location * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: modal autofocus close button (#11425) * fix: improve focus behavior in FlowLogsModal * fix: improve focus behavior in SaveChangesModal * refactor: extract onOpenAutoFocus handlers * check if element exists before prevent * [autofix.ci] apply automated fixes --------- Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com> Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * feat: Add Python flow execution support for Assistant (#11553) * add execution .py * fix verbose error * remove unecessary doc * [autofix.ci] apply automated fixes * add coderabbit suggestion and mypy fixes * fix mypy * add more tests to /agents related files --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * build(deps-dev): bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 in /src/frontend (#11595) build(deps-dev): bump @modelcontextprotocol/sdk in /src/frontend Bumps [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) from 1.25.3 to 1.26.0. - [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases) - [Commits](https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.3...v1.26.0) --- updated-dependencies: - dependency-name: "@modelcontextprotocol/sdk" dependency-version: 1.26.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai> * ci: use correct labeling for nightly hash update workflow step (#11492) * Fix merging of nightly hash update to main * Add testing flag for just merge pr * fix' * try conditional logic to skip jobs * fix conditional * checkout new branch only pull in night hash * add hash history back * Remove test flag * fix conditionals * feat: fork branch for main (#11183) * feat: add chat-header feature and sliding container (#11045) Add sliding playground layout (SimpleSidebar + sliding container + store) and toolbar button integration to open it directly + chat header/session components and hooks (SessionSelector, SessionRename, ChatHeaderTitle, use-get-flow-id, playgroundStore). * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * removed changes on the tailwind config * feat: add session management functionality (#11272) * feat: add session management functionality - Add session selector component - Add session more menu component - Add session header component - Add session edit info hook - Add get/add sessions hook - Hide delete button for default session * sync: update animated-close and simple-sidebar from pr4 * Make sidebar continue to be fullscreen after closing and opening * [autofix.ci] apply automated fixes * reduce max width * Pr2 bis chat messages (#11308) * feat: add chat messages components and infrastructure - Add bot message component - Add thinking message component - Add user message component - Add chat message wrapper component - Add message editing functionality - Add error message component - Add file card wrapper - Add message options component - Add chat history hook - Add thinking duration hook - Add typing effect hook - Add message utilities (convert files, format file name, sort messages) - Add content block display component - Add send message hook * fix: remove typing animation from bot messages, show thinking immediately after user message, and use optional chaining for updateChat * [autofix.ci] apply automated fixes * feat: add streaming message hook and fix thinking/thought display logic - Extract streaming logic to useStreamingMessage hook matching IOModal behavior - Fix thinking/thought message display to use isBuilding directly from store - Remove typing animation logic from bot messages - Fix textarea resize to prevent growing on every keystroke with 10px threshold - Fix ContentBlockDisplay truncate styling for tool titles - Remove markdown bold syntax (**) from tool titles - Fix ContentDisplay type error * refactor: sync chat-messages from pr3 with refactored utilities - Copy refactored chat-messages components from pr3 - Add new hooks: use-message-duration, use-tool-durations - Add consolidated utilities: format.ts, content-blocks.ts, extract-error-message.ts - Add Indicator icon for error messages - Update ContentBlockDisplay to use new utilities - Remove format-file-name.tsx (merged into format.ts) - Update lazyIconImports to include Indicator icon * sync: update animated-close and simple-sidebar from pr4 * Pr3 chat input (#11310) * feat: add chat input components and improvements - Add chat input component - Add text area wrapper with auto-resize - Add input wrapper component - Add button send wrapper - Add no-input component - Add audio button component - Add file preview component - Add upload file button - Add auto-resize text area hook - Add audio recording hook - Add drag and drop hook - Update textarea UI component - Update IOModal input wrapper - Update constants for chat input * feat: add file handling, UI enhancements, types, stores and dependencies - Add file preview display component - Add file utilities - Add animated close component - Add simple sidebar component - Update sliding container with container queries support - Update FlowPage components - Update styles and Tailwind config - Add chat types - Add component types - Add utility store types - Add utility store - Update package dependencies * fix: prevent chat input from growing on every letter and make updateChat optional with proper typing * fix: prevent chat input from growing on every letter * fix: sync message components with PR2 (remove typing animation, fix thinking timing, use optional chaining) * fix: sync message components with PR2 (remove typing animation, fix thinking timing, use optional chaining) * [autofix.ci] apply automated fixes * fix: apply message component fixes from PR2 (remove typing animation, fix thinking timing, use optional chaining) * [autofix.ci] apply automated fixes * fix: prevent textarea from resizing on every character by tracking previous scrollHeight * fix: prevent textarea from resizing on every character by tracking previous scrollHeight * fix: prevent textarea from growing on every character with 10px threshold * fix: prevent textarea from growing on every character with 10px threshold * Revert "fix: prevent textarea from growing on every character with 10px threshold" This reverts commit ec3ed63fa8638a4b5d1777576aa7b4736e03c237. * Revert "fix: prevent textarea from growing on every character with 10px threshold" This reverts commit 93637ae4de873af2f89424d536459fda13b0f67f. * feat: add streaming message hook and fix thinking/thought display logic - Extract streaming logic to useStreamingMessage hook matching IOModal behavior - Fix thinking/thought message display to use isBuilding directly from store - Remove typing animation logic from bot messages - Fix textarea resize to prevent growing on every keystroke with 10px threshold - Fix ContentBlockDisplay truncate styling for tool titles - Remove markdown bold syntax (**) from tool titles - Fix ContentDisplay type error * feat: add streaming message hook and fix thinking/thought display logic - Extract streaming logic to useStreamingMessage hook matching IOModal behavior - Fix thinking/thought message display to use isBuilding directly from store - Remove typing animation logic from bot messages - Fix textarea resize to prevent growing on every keystroke with 10px threshold - Fix ContentBlockDisplay truncate styling for tool titles - Remove markdown bold syntax (**) from tool titles - Fix ContentDisplay type error * fix error making the flow crashing * resize user and bot icon and remove borders * fix flow crash when error * have the green duration be the sum of tool and sec part the entire thinking * refactor: extract and consolidate chat message utilities - Extract duration tracking logic to use-message-duration hook - Consolidate format utilities (formatTime, formatSeconds, formatToolTitle, formatFileName) into single format.ts file - Merge content block utilities (getContentBlockState, getContentBlockLoadingState) into content-blocks.ts - Move component-specific logic (hasTools, shouldShowAvatar, shouldShowContentBlocks) back into components - Move errorMarkdownComponents into error-message.tsx component - Simplify error-message.tsx by extracting sub-components - Add Indicator icon for error messages - Update all imports to use consolidated utilities * refactor: sync chat-messages and chat-input from pr4 - Copy refactored chat-messages components from pr4 - Add new hooks: use-message-duration, use-tool-durations - Add consolidated utilities: format.ts, content-blocks.ts, extract-error-message.ts - Add Indicator icon for error messages - Update ContentBlockDisplay to use new utilities - Remove format-file-name.tsx (merged into format.ts) - Update lazyIconImports to include Indicator icon * change duration animation * Only allow certain file types * feat: add file handling, UI enhancements, types, stores and dependencies (#11276) * [autofix.ci] apply automated fixes * feat: add clear chat option for default session in session management - Add 'Clear chat' option to SessionMoreMenu component - Show 'Clear chat' for default session (currentSessionId === currentFlowId) - Show 'Delete' for other sessions (existing behavior) - Clear chat deletes messages but keeps the session - Delete removes the entire session - Both options use same red color styling * adjust radius for error message border * show only the text An error occured * refactor: replace Zustand with React Query for message handling - Move all message handling logic to chat-view/utils/ - Create message-event-handler.ts to handle build events - Create message-utils.ts for React Query cache operations - Update buildUtils.ts to delegate message events to chat-view - Remove MemoizedChatMessage to fix streaming updates - Simplify use-chat-history to use session cache as single source of truth - Support placeholder messages for immediate UI feedback - Handle streaming tokens with proper text accumulation * fix: improve clear chat logic to prevent double clearing - Fix clearSessionMessages to use removeQueries instead of invalidateQueries - Prevents refetch that brings back deleted messages - Clear chat only works for default session, delete works for other sessions - Handle default session messages with null session_id (legacy) * fix padding and spacing issue on playground component * fix: message section padding * fix: padding * add time persistence and build perfect timer * [autofix.ci] apply automated fixes * fix display time styles * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * fix: format time in seconds and fix gap between duration and message * [autofix.ci] apply automated fixes * fix: fetch messages in session logs modal to prevent empty display * [autofix.ci] apply automated fixes * fix: added gap between image and message * fix header truncating * fix: apply card in the background of user message in smaller view --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Co-authored-by: Keval718 <kevalvirat@gmail.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com> Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> --------- Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> Co-authored-by: Keval718 <kevalvirat@gmail.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com> --------- Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> Co-authored-by: Keval718 <kevalvirat@gmail.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com> * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) --------- Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Keval718 <kevalvirat@gmail.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com> * fix: frontend tests * [autofix.ci] apply automated fixes * fix nested agents * [autofix.ci] apply automated fixes * Revert "fix nested agents" This reverts commit f230c8c6dd25a88b47739f8a83c0c8296f24778c. * fix time on agent chain * [autofix.ci] apply automated fixes * fix(playground): display ChatInput default value on playground open (#11514) * fix(playground): display ChatInput default value on playground open * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix(ui): prevent layout shift when adding Chat Input with closed playground (#11531) * fix(ui): prevent layout shift when adding Chat Input with closed playground * fix(ui): remove unwanted import * fix(frontend): reset playground state when navigating between flows (#11533) reset playground state when leaving the flow * fix(frontend): prevent Message Logs table from dropping columns with falsy values (#11540) fix(frontend): prevent Message Logs table from dropping columns with falsy values * fix(frontend): auto-close playground when all chat components are removed (#11537) * fix(frontend): auto-close playground when all chat components are removed * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix(frontend): prevent send button from being pushed off-screen in chat input (#11556) * fix(frontend): prevent send button from being pushed off-screen in chat input * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix(test): fix image upload process in chat input test * fix(test): improve chat message verification in chat input test * fix: add data-testID to ensure the testcases pass (#11573) Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com> * feat(tests): add data-testid attributes for improved test targeting in chat header and session selector * fix: session rename create new session instead of remaining existing one (#11576) * fix(frontend): resolve session rename bugs and prevent message loss * fix(playground): Fix session rename not showing messages immediately * [autofix.ci] apply automated fixes * fix(playground): Eliminate duplicate logic in session-selector --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix(test): playground test * fix: rename session and test shard 9 (#11581) fix: pass renameLocalSession to ChatHeader to fix session rename creating new session The session rename from the chat header's more menu was creating a new session instead of renaming the existing one. This was because renameLocalSession was not being passed to useEditSessionInfo in chat-header.tsx. - Added renameLocalSession to ChatHeaderProps type - Pass renameLocalSession from flow-page-sliding-container to ChatHeader - Pass renameLocalSession to useEditSessionInfo in chat-header * fix(frontend): prevent menu stacking and ensure proper close behavior (#11592) * fix(frontend): prevent menu stacking and ensure proper close behavior * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: playground tests shard 13 (#11593) * fix: update Basic Prompting test to use specific test IDs for playground combobox * fix: skip voice assistant interaction test for review * test: skip voice-assistant tests pending playground refactor * fix: tests shard 16 (#11594) * fix: update Basic Prompting test to use specific test IDs for playground combobox * fix: skip voice assistant interaction test for review * test: skip voice-assistant tests pending playground refactor * fix: update Financial Report Parser and Image Sentiment Analysis tests - Financial Report Parser: Use stop_building_button instead of button-stop (which doesn't exist in playground chat input), wait for it to appear before waiting for hidden state, and use div-chat-message instead of .markdown selector which was matching node descriptions - Image Sentiment Analysis: Replace unreliable dispatchEvent("drop") with setInputFiles() for file upload, add proper flow completion wait, and use img[alt$="chain.png"] to handle server timestamp prefix * fix(frontend): prevent duplicate session creation when renaming in non fullscreen mode (#11596) fix(frontend): prevent duplicate session creation when renaming in non-fullscreen mode * fix: tests shard 18 - Memory Chatbot and Simple Agent Memory (#11597) Memory Chatbot: - Replace fragile selectors (getByRole, getByLabel) with data-testid - Use chat-header-more-menu and message-logs-option for message logs - Replace .isVisible() with proper expect().toBeVisible() assertions - Simplify test by removing session deletion Simple Agent Memory: - Add waitForSelector for input before filling - Use stop_building_button instead of getByRole("button", { name: "Stop" }) - Use proper wait pattern: visible → hidden for build completion - Add user message verification with chat-message-User-* test IDs - Add wait for div-chat-message before asserting * fix: update News Aggregator test to streamline API key handling and increase timeout (#11598) * fix: tests shard 18 - Memory Chatbot and Simple Agent Memory Memory Chatbot: - Replace fragile selectors (getByRole, getByLabel) with data-testid - Use chat-header-more-menu and message-logs-option for message logs - Replace .isVisible() with proper expect().toBeVisible() assertions - Simplify test by removing session deletion Simple Agent Memory: - Add waitForSelector for input before filling - Use stop_building_button instead of getByRole("button", { name: "Stop" }) - Use proper wait pattern: visible → hidden for build completion - Add user message verification with chat-message-User-* test IDs - Add wait for div-chat-message before asserting * fix: update News Aggregator test to streamline API key handling and increase timeout * fix: refactor Pokedex Agent test for improved readability and consistency * fix: update Pokedex Agent test to correctly retrieve chat message output and adjust length expectation * fix: improve Research Translation Loop test structure and readability * fix: enhance readability and consistency in Simple Agent Memory test * fix: generalBugs-shard-9 test * fix: simplify file upload handling in limit-file-size-upload test * fix: file upload test * fix: update chat interaction test for improved sender name handling * fix: add data-testid attribute to hidden file input for improved test targeting * fix: refactor test structure for improved readability and maintainability * fix: revert upload file util --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> Co-authored-by: keval shah <kevalvirat@gmail.com> Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com> Co-authored-by: Viktor Avelino <viktor.avelino@gmail.com> Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com> Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com> Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com> * fix: Link visibility and 404 URL in Auto-save modal (#11476) fix: Fix link visibility and URL in save flow modal Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com> * Fix: runflow toolmode input progation (#11348) * fix input propogation to subflow in runflow component in toolmode refactor runflow remove print calls allow Data inputs and refactoring of runflow component with updated tests misc misc persist tweaks in multi-input scenario add regression tests chore: update component index ruff (tests) checkout component index from main chore: update component index obfuscate error message chore: update component index chore: update component index * [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 (attempt 2/3) --------- 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> * bug: fix for embedding model input/output handler (#11591) * fix for embedding model input/output * code clean up for connect other models * [autofix.ci] apply automated fixes * update templates * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: Alphabetical Sorting for "Models & Agents" Components (#11489) * fix: make sure model and agent are alphabetically sorted * [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) --------- Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com> * feat: update pre-release flow to be useable for qa (#11322) * feat: create prerelease dedicated to qa allow prerelease versions dedicated to qa * chore: revert lfx dep to 0.2.1 * chore: lfx pyproject version 0.2.1 for testing * feat: use pythin script to determine rc version use a python script to auto incremenet rc version so we do not have to manually maintain what rc version we are on. add it to both release.yml and docker-build-v2.yml for pypi, docker and ghrc. * [autofix.ci] apply automated fixes * chore: change script vars to more meaningful ones * chore: add meaningful echos * chore: add quotes to pass empty str if no version * test: REVERT always pass ci REVERT * chore: add normalization to built ver tests * chore: remove unused uv environment set up * chore: add back in checkout code * chore: disable caching for ensure-lfx-published * chore: revert changes added after merge * fix: allow prerelase python install flag * chore: test base and main install as 1 * chore: seperate base and main * chore: install main using local base first * chore: try using reinstall * chore: create locl directory and use it first * chore: try --no-deps * chore: langflow-*.whl * [autofix.ci] apply automated fixes * fix: try using unsafe-best-match use ./local-packages --index-strategy unsafe-best-match * fix: add a dynamic constriant for langflow base add a dynamic constriant for langflow base during build-main. if this works I will need to go back and remove any unneeded cross-platform test changes * chore: revert to normal install * fix: add pre-main option to make build * chore: remove hyphen in make var * chore: keep propigation wait for pre-release * chore: revert cross-platform-test.yml changes * chore: use else ifdef and add test echos * chore: remove --no-soruces * chore: use ifeq * chore: revert lfx 0.2.1 * chore: downgrade to python 3.12 ragstack-ai-knowledge-store does not support pythong 3.13 * chore: add else to Makefile * chore: back to ifdef * chore: reset to Makefile to main and add pre again * chore: revert to python 3.13 * chore: set compatability check to 3.12 hopeffuly fixes Found 1 incompatibility The package `ragstack-ai-knowledge-store` requires Python >=3.9, <3.13, but `3.13.11` is installed * [autofix.ci] apply automated fixes * fix: new flow reset. * chore: update LFX Determine version * fix: remove buil-lfx dep on lfx release * chore: remove more inputs.release_lfx if statments * fix: uv pip install --find-links * chore: create uv venv before uv pip install * chire: attempt for reinatll of local whls * fix: add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES to macos cross-platform test builds * [autofix.ci] apply automated fixes * chore: add back in ci step * fix(ci): correctly generate pre-release rc tags * [autofix.ci] apply automated fixes * feat: update pre-release flow to be useable for qa * Revert "feat: update pre-release flow to be useable for qa" This reverts commit 22737729a2d0ed64ea774a30af070f0010cba9e1. * feat: update pre-release flow to be useable for qa * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * feat: update pre-release flow to be useable for qa * feat: update pre-release flow to be useable for qa * feat: update pre-release flow to be useable for qa * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: vijay kumar katuri <vijaykaturi@vijays-MacBook-Air.local> Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com> * fix: remove fe from backend image build (#11579) * asdf * build langflow-backend image correctly with no frontend * Update docker/build_and_push_backend.Dockerfile Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com> * Fix version check for backend image * Add data dir * Add npm back for mcp support --------- Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com> * feat: adds inspection panel to show node inputs (#11263) * First prototype of inspection panel * fixed value not being set * Hide inputs that are not handles from the node, show everything else on the inspection panel * [autofix.ci] apply automated fixes * Implemented close button on inspection panel * Re-show inputs on the node * remove code from node toolbar * change code design on inspection panel * create feature flag * disable code and controls on node based on feature flag * adjusted inspection panel size * [autofix.ci] apply automated fixes * disable inspection panel with feature flag * Show only connections on component * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * Add output and logs to inspect panel * [autofix.ci] apply automated fixes * removed label from code button * filter handleinputs * added description on inspection panel header * remove tabs from inspection panel and use inspect output on node again * Make inspect panel have flexible height and disable its animation * [autofix.ci] apply automated fixes * Removed division from node name and inputs * Reduce some gaps * [autofix.ci] apply automated fixes * Add docs button * show docs just when exists * [autofix.ci] apply automated fixes * added custom 4.5 height and width * Changed node text sizes and icon size * [autofix.ci] apply automated fixes * Added freeze always to the node toolbar * Updated input size on inspect panel and output size on node * [autofix.ci] apply automated fixes * Implemented name and description editing * Changed paddings to match design * Added advanced fields and trigger * fixed advanced and pencil design * Implemented new prompt component with inline editing * [autofix.ci] apply automated fixes * Remove console logs * Dont fetch data on inspection panel * Made inputs appear to perform calculations but not show up on nodes * Removed LanguageModel from input types of model input in basic prompting * Changed inputs to not render when showParameter is false, in order to run the useEffects * Change tests to select node to change model, and then unselect all * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes * deleted unused file * extract filtering logic * [autofix.ci] apply automated fixes * removed Made with Bob comments * Fix error catching * [autofix.ci] apply automated fixes * Fixed dropdown not avoiding collisions * Remove dead zone below the inspection panel * Fixed prompt validation being done even if input didnt change * Fixed handle fields appearing * Fixed handle not showing up on minimized components * Fixed condition for minimizing component * fixed minimized nodes behavior to minimize when only one input is connected * [autofix.ci] apply automated fixes * fixed component not showing up as hidden * changed data test id of advanced modal and advanced trigger, to fix tests * Fixed custom component not having pink code button * [autofix.ci] apply automated fixes * fixed node exhibition when feature flag is disabled, fixed minimized field * added show and hide advanced button on inspection panel * [autofix.ci] apply automated fixes * Fixed fit view to contain padding when a component is clicked * fixed freeze path test * change label * changed gpt model test * added separator between description and fields * Changed advanced padding * fixed gpt setup and image sentiment analysis * fixed mcp server test * fixed freeze spec * [autofix.ci] apply automated fixes * fixed logs setup * Fixed stop building test * Fixed minimization text * changed variable name * [autofix.ci] apply automated fixes * Filter tool mode * fixed prompt component unfocusing every time * [autofix.ci] apply automated fixes * fixed blog writer * added select anthropic model, fixed custom component generator that didnt show the code * fixed inspection panel advanced * fixed tests that used advanced fields * fixed gpt model timeout * [autofix.ci] apply automated fixes * fixed toolbar button collision * always show language model input * fixed tests * [autofix.ci] apply automated fixes * disabled advanced shortcut when inspection panel is enabled * fixed tests * [autofix.ci] apply automated fixes * fixed flicker * [autofix.ci] apply automated fixes * fix tests * [autofix.ci] apply automated fixes * push to trigger tests * [autofix.ci] apply automated fixes * Update select-gpt-model and select-anthropic-model utilities * feat: improve Inspection Panel UX - Prevent Inspector Panel from opening when clicking input fields - Add onMouseDown stopPropagation to input wrapper - UX improvements for panel interactions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * [autofix.ci] apply automated fixes * Enable node toolbar items when inspect panel is disabled, save user preference on local storage, code cleanup * [autofix.ci] apply automated fixes * Show handle inputs on advanced * Adjusted description and name * [autofix.ci] apply automated fixes * disable select nodes on drag * Try to fix tests that have controls open * [autofix.ci] apply automated fixes * fix run flow test and select gpt model * Revert "Fixed dropdown not avoiding collisions" This reverts commit acf21900017ad2b459340c73becde06a894adf83. * fixed collisions on inspection panel * [autofix.ci] apply automated fixes * fixed select gpt model and parameter render input * updated similarity test * [autofix.ci] apply automated fixes * changed playwright config * fix test text sentiment and and elect-gpt-model * fixed jest tests * [autofix.ci] apply automated fixes * Fixed tests related to the advanced modal * [autofix.ci] apply automated fixes * fix textAreaModalComponent test * fix freeze test * fix edit-name-description-node-spec * fix edit-name-description-node-spec plus adding timeout * fix lanflowShortcut test * fix edit-name-description-node test * fix userSettings test * fixed tests * [autofix.ci] apply automated fixes * fixed jest tests * fixed test * Added unit tests for inspection panel * [autofix.ci] apply automated fixes * re-added code and fixed tests * fixed header design * [autofix.ci] apply automated fixes * Fixed shortcuts, fixed advanced mode * [autofix.ci] apply automated fixes * fixed tests * [autofix.ci] apply automated fixes * fixed unit tests * [autofix.ci] apply automated fixes * fixed tests and sortable list component * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com> Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: Rodrigo Nader <rodrigonader@Mac.localdomain> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> * 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> * 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) Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> * [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 Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com> * address review comments * [autofix.ci] apply automated fixes * fix ruff errors * remove cache --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com> * 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: 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: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: ogabrielluiz <24829397+ogabrielluiz@users.noreply.github.com> Co-authored-by: himavarshagoutham <himavarshajan17@gmail.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: Fix flaky Market Research test timeout on CI (#11665) * add wait for statement to prevent ra…
Jira: LE-182
Issue: #7581
This pull request adds a "Copy to clipboard" button to the component output modal, allowing users to easily copy output or log content. It includes logic to handle different output types, provides user feedback with a tooltip and success message, and adds end-to-end tests to ensure correct behavior and accessibility.
Feature: Output Modal Copy Button
OutputModalcomponent, allowing users to copy either output or log content to the clipboard, with support for both string and JSON content types. The button displays a tooltip and changes to a check icon upon successful copy, with a success message shown to the user. (src/frontend/src/CustomNodes/GenericNode/components/outputModal/index.tsx) [1] [2] [3] [4]Testing: End-to-End Coverage
src/frontend/tests/extended/features/output-modal-copy-button.spec.ts)Summary by CodeRabbit
Release Notes
✏️ Tip: You can customize this high-level summary in your review settings.
Screen.Recording.2026-01-29.at.4.55.17.PM.mov