Skip to content

feat: make it possible to load graphs using get_graph function in scripts#9913

Merged
ogabrielluiz merged 22 commits into
mainfrom
add-get-graph-functionality
Nov 19, 2025
Merged

feat: make it possible to load graphs using get_graph function in scripts#9913
ogabrielluiz merged 22 commits into
mainfrom
add-get-graph-functionality

Conversation

@ogabrielluiz
Copy link
Copy Markdown
Contributor

@ogabrielluiz ogabrielluiz commented Sep 18, 2025

Makes how to define Graph scripts that require async calls a bit clearer

Summary by CodeRabbit

  • New Features
    • Scripts can now expose a get_graph entry point (async or sync) for building flows.
    • CLI commands seamlessly load graphs asynchronously from Python scripts or JSON, with backward compatibility for existing graph variables.
  • Refactor
    • Migrated graph-loading paths to async for more reliable initialization and tooling setup.
    • Serve command updated to support async execution without changing usage.
  • Tests
    • Converted related unit and integration tests to async to validate new loading behavior.

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.
- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.
- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.
…oading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.
- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.
- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Sep 18, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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

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

Walkthrough

The codebase shifts graph construction and loading to an asynchronous model. Scripts now expose an async get_graph() factory (fallback to module-level graph remains). CLI loaders and serve command were updated to await async paths. Unit tests were converted to async accordingly, with imports and calls adjusted.

Changes

Cohort / File(s) Summary
Async graph factory in test data script
src/backend/tests/data/simple_agent.py
Replaces module-level graph with async get_graph() that builds components, awaits URL toolkit creation, and returns Graph; removes import-time side effects.
CLI serve command async wrapper
src/lfx/src/lfx/cli/commands.py
Converts serve_command to async, decorates with syncify wrapper, and awaits load_graph_from_path/load_graph_from_script; imports updated.
Common loader async
src/lfx/src/lfx/cli/common.py
Makes load_graph_from_path async; awaits Python-script loader path; JSON path unchanged.
Run path awaiting
src/lfx/src/lfx/cli/run.py
Awaits load_graph_from_script for Python scripts; aligns with async loading.
Script loader supports get_graph
src/lfx/src/lfx/cli/script_loader.py
load_graph_from_script becomes async; detects and invokes get_graph (awaits if coroutine) or falls back to module.graph; enhances AST discovery to include get_graph metadata; validates Graph instance.
Tests: lfx common
src/lfx/tests/unit/cli/test_common.py
Marks tests async; awaits load_graph_from_path; adds verbose error assertion.
Tests: script loader
src/lfx/tests/unit/cli/test_script_loader.py
Converts tests to async; awaits loader; updates expectations; adds tests for async/sync get_graph; updates integration tests accordingly.
Tests: serve components
src/lfx/tests/unit/cli/test_serve_components.py
Converts tests to async; awaits load_graph_from_path; maintains mocks; adapts integration flow.
Unit test referencing script content
src/backend/tests/unit/test_simple_agent_in_lfx_run.py
Updates assertions to expect async get_graph(), awaiting url_component.to_toolkit(), and returning Graph inside get_graph.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant CLI as CLI (serve_command)
  participant Common as common.load_graph_from_path
  participant Loader as script_loader.load_graph_from_script
  participant Mod as Target Script Module
  participant Graph as Graph Instance

  User->>CLI: Invoke serve (path or script)
  note over CLI: serve_command is async (syncified)
  alt JSON file
    CLI->>Common: await load_graph_from_path(path)
    Common-->>CLI: Graph
  else Python script
    CLI->>Loader: await load_graph_from_script(script_path)
    alt get_graph exists
      Loader->>Mod: get_graph()
      opt async get_graph
        Loader->>Mod: await get_graph()
      end
      Mod-->>Loader: Graph
    else legacy graph variable
      Loader->>Mod: access module.graph
      Mod-->>Loader: Graph
    else none
      Loader-->>CLI: Error (no graph or get_graph)
    end
    Loader-->>CLI: Graph
  end
  CLI->>Graph: use returned Graph
  CLI-->>User: Server started with Graph
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested labels

enhancement, refactor, size:M, lgtm

Suggested reviewers

  • edwinjosechittilappilly
  • jordanrfrazier
  • mfortman11

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The PR title accurately and succinctly summarizes the main change: adding support for loading graphs via a get_graph() function in scripts, which aligns with the edits to the script loader, CLI, agent scripts, and tests that add async/sync get_graph handling.
Docstring Coverage ✅ Passed Docstring coverage is 89.29% which is sufficient. The required threshold is 80.00%.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

❤️ Share

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

@ogabrielluiz
Copy link
Copy Markdown
Contributor Author

@Cristhianzl this will fix some of the changes you made in #9901

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Sep 18, 2025
@codecov
Copy link
Copy Markdown

codecov Bot commented Sep 18, 2025

Codecov Report

❌ Patch coverage is 67.85714% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 31.61%. Comparing base (927f96b) to head (981f96e).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
src/lfx/src/lfx/cli/script_loader.py 63.15% 5 Missing and 2 partials ⚠️
src/lfx/src/lfx/cli/commands.py 83.33% 1 Missing ⚠️
src/lfx/src/lfx/cli/common.py 50.00% 1 Missing ⚠️

❌ Your project status has failed because the head coverage (38.94%) is below the target coverage (60.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #9913   +/-   ##
=======================================
  Coverage   31.61%   31.61%           
=======================================
  Files        1348     1348           
  Lines       61117    61117           
  Branches     9134     9134           
=======================================
+ Hits        19324    19325    +1     
  Misses      40878    40878           
+ Partials      915      914    -1     
Flag Coverage Δ
backend 51.77% <ø> (ø)
frontend 13.59% <ø> (ø)
lfx 38.94% <67.85%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
src/lfx/src/lfx/cli/run.py 73.85% <100.00%> (ø)
src/lfx/src/lfx/cli/commands.py 53.20% <83.33%> (ø)
src/lfx/src/lfx/cli/common.py 39.74% <50.00%> (ø)
src/lfx/src/lfx/cli/script_loader.py 81.39% <63.15%> (ø)

... and 1 file with indirect coverage changes

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

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/backend/tests/unit/test_simple_agent_in_lfx_run.py (1)

328-359: Async mismatch: to_toolkit must be awaited; make test async.

Also mark with pytest.mark.asyncio.

-    @pytest.mark.skipif(not os.getenv("OPENAI_API_KEY"), reason="OPENAI_API_KEY required for integration test")
-    def test_complete_workflow_integration(self):
+    @pytest.mark.skipif(not os.getenv("OPENAI_API_KEY"), reason="OPENAI_API_KEY required for integration test")
+    @pytest.mark.asyncio
+    async def test_complete_workflow_integration(self):
@@
-        tools = url_component.to_toolkit()
+        tools = await url_component.to_toolkit()
src/lfx/src/lfx/cli/common.py (1)

246-263: Don’t hard‑fail when no 'graph' variable; allow get_graph‑only scripts.

Current precheck raises if the script lacks a module‑level graph, which blocks the PR goal (support get_graph()). We should proceed to runtime loading and let load_graph_from_script handle get_graph() or graph. Also, tweak the log to reflect this behavior.

Apply this diff:

         if file_extension == ".py":
             verbose_print("Analyzing Python script...")
             graph_var = find_graph_variable(script_path)
             if graph_var:
                 source_info = graph_var.get("source", "Unknown")
                 type_info = graph_var.get("type", "Unknown")
                 line_no = graph_var.get("line", "Unknown")
                 verbose_print(f"✓ Found 'graph' variable at line {line_no}")
                 verbose_print(f"  Type: {type_info}")
                 verbose_print(f"  Source: {source_info}")
             else:
-                error_msg = "No 'graph' variable found in script"
-                verbose_print(f"✗ {error_msg}")
-                raise ValueError(error_msg)
+                # Don't fail fast: allow get_graph() at runtime
+                verbose_print("No static 'graph' variable detected; will attempt to resolve via get_graph() at runtime.")
 
             verbose_print("Loading graph...")
-            graph = await load_graph_from_script(script_path)
+            graph = await load_graph_from_script(script_path)
🧹 Nitpick comments (22)
src/backend/tests/data/simple_agent.py (3)

29-32: Docstring: avoid “run_until_complete” (loader now awaits).

Simplify wording to reflect that the CLI loader awaits get_graph().

-    blocking the module loading process. The script loader will detect this
-    async function and handle it appropriately using run_until_complete.
+    blocking the module loading process. The script loader detects this
+    async function and awaits it in the CLI loader.

45-48: Guard URLComponent config before awaiting to_toolkit().

If no URLs are set, tool creation may be empty or error depending on defaults. Read from env for flexibility.

-    url_component = cp.URLComponent()
-    tools = await url_component.to_toolkit()
+    url_component = cp.URLComponent()
+    urls_env = os.getenv("AGENT_URLS")
+    if urls_env:
+        url_component.set(urls=[u.strip() for u in urls_env.split(",") if u.strip()])
+    tools = await url_component.to_toolkit()

49-55: Explicit API key handling.

Consider validating OPENAI_API_KEY early to fail-fast with a clear message.

-    agent.set(
+    api_key = os.getenv("OPENAI_API_KEY")
+    # Optional: raise if missing to avoid late failures
+    # if not api_key:
+    #     raise RuntimeError("OPENAI_API_KEY not set")
+    agent.set(
         model_name="gpt-4o-mini",
         agent_llm="OpenAI",
-        api_key=os.getenv("OPENAI_API_KEY"),
+        api_key=api_key,
src/backend/tests/unit/test_simple_agent_in_lfx_run.py (3)

160-160: Mark async test with pytest.mark.asyncio.

Required by backend test guidelines for async tests.

-    async def test_agent_workflow_direct_execution(self):
+    @pytest.mark.asyncio
+    async def test_agent_workflow_direct_execution(self):

229-229: Mark async test with pytest.mark.asyncio.

-    async def test_url_component_to_toolkit_functionality(self):
+    @pytest.mark.asyncio
+    async def test_url_component_to_toolkit_functionality(self):

193-196: Missing link: ChatOutput should receive agent.message_response.

Without this, the graph lacks the final edge.

-        chat_output = cp.ChatOutput()
+        chat_output = cp.ChatOutput().set(input_value=agent.message_response)
src/lfx/src/lfx/cli/script_loader.py (3)

3-5: Module docstring: include get_graph entrypoint.

-This module provides functionality to load and validate Python scripts
-containing LFX graph variables.
+This module provides functionality to load and validate Python scripts
+containing an LFX graph variable or a get_graph() entrypoint.

95-104: Handle functions that return awaitables (decorated async).

If get_graph() returns an awaitable but isn’t defined as a coroutinefunction, await the result.

-            if inspect.iscoroutinefunction(get_graph_func):
-                graph_obj = await get_graph_func()
-            else:
-                graph_obj = get_graph_func()
+            if inspect.iscoroutinefunction(get_graph_func):
+                graph_obj = await get_graph_func()
+            else:
+                graph_obj = get_graph_func()
+                if inspect.isawaitable(graph_obj):
+                    graph_obj = await graph_obj

210-238: Simplify AST detection for get_graph (sync/async) in one branch.

-        for node in ast.walk(tree):
-            # Check for get_graph function definition
-            if isinstance(node, ast.FunctionDef) and node.name == "get_graph":
-                line_number = node.lineno
-                is_async = isinstance(node, ast.AsyncFunctionDef)
-
-                return {
-                    "line_number": line_number,
-                    "type": "function_definition",
-                    "function": "get_graph",
-                    "is_async": is_async,
-                    "arg_count": len(node.args.args),
-                    "source_line": content.split("\n")[line_number - 1].strip(),
-                }
-
-            # Check for async get_graph function definition
-            if isinstance(node, ast.AsyncFunctionDef) and node.name == "get_graph":
-                line_number = node.lineno
-
-                return {
-                    "line_number": line_number,
-                    "type": "function_definition",
-                    "function": "get_graph",
-                    "is_async": True,
-                    "arg_count": len(node.args.args),
-                    "source_line": content.split("\n")[line_number - 1].strip(),
-                }
+        for node in ast.walk(tree):
+            # get_graph function definition (sync or async)
+            if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)) and node.name == "get_graph":
+                line_number = node.lineno
+                is_async = isinstance(node, ast.AsyncFunctionDef)
+                return {
+                    "line_number": line_number,
+                    "type": "function_definition",
+                    "function": "get_graph",
+                    "is_async": is_async,
+                    "arg_count": len(node.args.args),
+                    "source_line": content.split("\n")[line_number - 1].strip(),
+                }
src/lfx/src/lfx/cli/run.py (2)

180-189: Error/verbose text should include get_graph as entrypoint.

-            if not graph_info:
-                error_msg = (
-                    "No 'graph' variable found in the script. Expected to find an assignment like: graph = Graph(...)"
-                )
+            if not graph_info:
+                error_msg = (
+                    "No 'graph' entry point found. Expected get_graph() or a 'graph = Graph(...)' assignment."
+                )
                 raise ValueError(error_msg)
-            verbose_print(f"Found 'graph' variable at line {graph_info['line_number']}")
+            entry = "get_graph()" if graph_info.get("type") == "function_definition" else "graph variable"
+            verbose_print(f"Found {entry} at line {graph_info['line_number']}")
             verbose_print(f"Type: {graph_info['type']}")
             verbose_print(f"Source: {graph_info['source_line']}")

243-249: Component types debug should use vertex.custom_component.display_name.

-            component_types = set()
-            for vertex in graph.vertices:
-                if hasattr(vertex, "display_name"):
-                    component_types.add(vertex.display_name)
+            component_types = set()
+            for vertex in graph.vertices:
+                name = getattr(getattr(vertex, "custom_component", None), "display_name", None)
+                if name:
+                    component_types.add(name)
src/lfx/tests/unit/cli/test_script_loader.py (7)

173-177: Mark async test with pytest.mark.asyncio.

-    async def test_load_graph_from_script_success(self, simple_chat_py):
+    @pytest.mark.asyncio
+    async def test_load_graph_from_script_success(self, simple_chat_py):

188-197: Mark async test with pytest.mark.asyncio.

-    async def test_load_graph_from_script_no_graph_variable(self):
+    @pytest.mark.asyncio
+    async def test_load_graph_from_script_no_graph_variable(self):

200-206: Mark async test with pytest.mark.asyncio.

-    async def test_load_graph_from_script_import_error(self):
+    @pytest.mark.asyncio
+    async def test_load_graph_from_script_import_error(self):

207-233: Mark async test with pytest.mark.asyncio.

-    async def test_load_graph_from_script_with_async_get_graph(self):
+    @pytest.mark.asyncio
+    async def test_load_graph_from_script_with_async_get_graph(self):

234-260: Mark async test with pytest.mark.asyncio.

-    async def test_load_graph_from_script_with_sync_get_graph(self):
+    @pytest.mark.asyncio
+    async def test_load_graph_from_script_with_sync_get_graph(self):

562-566: Mark async test with pytest.mark.asyncio.

-    async def test_load_and_validate_real_script(self, simple_chat_py):
+    @pytest.mark.asyncio
+    async def test_load_and_validate_real_script(self, simple_chat_py):

577-581: Mark async test with pytest.mark.asyncio.

-    async def test_execute_real_flow_with_results(self, simple_chat_py):
+    @pytest.mark.asyncio
+    async def test_execute_real_flow_with_results(self, simple_chat_py):
src/lfx/src/lfx/cli/common.py (1)

267-273: Optional: surface ValueError messages even when not in verbose mode.

Right now ValueErrors are wrapped into typer.Exit(1) without echoing. Consider echoing the message when verbose is False to avoid silent exits.

Example:

     except ValueError as e:
-        # Re-raise ValueError as typer.Exit to preserve the error message
-        raise typer.Exit(1) from e
+        if not verbose:
+            typer.echo(f"✗ {e}", err=True)
+        raise typer.Exit(1) from e
src/lfx/src/lfx/cli/commands.py (2)

9-9: Prefer explicit decorator call over functools.partial for syncify.

@syncify(raise_sync_error=False) is clearer than @partial(syncify, ...) and avoids confusion about decorator semantics.

Apply this diff:

-from functools import partial
...
-from asyncer import syncify
+from asyncer import syncify
...
-@partial(syncify, raise_sync_error=False)
+@syncify(raise_sync_error=False)
 async def serve_command(

Also applies to: 14-15, 37-38


300-313: Nested event loop risk: uvicorn.run inside a syncified async function.

Because serve_command runs under syncify (which drives an event loop), calling uvicorn.run inside it can conflict with an already running loop in some environments. In practice this often works, but it’s brittle.

  • Option A (verify): Manually run lfx serve in a context where an event loop is active (e.g., inside IPython/Jupyter) and confirm no “asyncio.run() cannot be called from a running event loop” or loop reuse errors appear.
  • Option B (refactor): Keep serve_command as a plain sync function and syncify only the loader calls:
-@syncify(raise_sync_error=False)
-async def serve_command(...):
+def serve_command(...):
     ...
-    if resolved_path.suffix == ".json":
-        graph = await load_graph_from_path(...)
+    from asyncer import syncify as _syncify
+    _load_from_path_sync = _syncify(load_graph_from_path, raise_sync_error=False)
+    _load_from_script_sync = _syncify(load_graph_from_script, raise_sync_error=False)
+    if resolved_path.suffix == ".json":
+        graph = _load_from_path_sync(resolved_path, resolved_path.suffix, verbose_print, verbose=verbose)
     elif resolved_path.suffix == ".py":
-        graph = await load_graph_from_script(resolved_path)
+        graph = _load_from_script_sync(resolved_path)
     ...
     uvicorn.run(serve_app, ...)

This limits event‑loop usage to short-lived sections before starting Uvicorn.

src/lfx/tests/unit/cli/test_serve_components.py (1)

202-205: Add a unit test covering Python scripts that only expose get_graph().

Given the feature goal, add a test that patches a temp .py script with only async def get_graph(): ... and asserts load_graph_from_path(..., ".py", ...) succeeds.

I can draft a focused test that writes a temp script exposing only get_graph() (async and sync variants) and validates both paths. Want me to add it?

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 780bc77 and 74b6875.

📒 Files selected for processing (9)
  • src/backend/tests/data/simple_agent.py (1 hunks)
  • src/backend/tests/unit/test_simple_agent_in_lfx_run.py (4 hunks)
  • src/lfx/src/lfx/cli/commands.py (3 hunks)
  • src/lfx/src/lfx/cli/common.py (2 hunks)
  • src/lfx/src/lfx/cli/run.py (1 hunks)
  • src/lfx/src/lfx/cli/script_loader.py (4 hunks)
  • src/lfx/tests/unit/cli/test_common.py (2 hunks)
  • src/lfx/tests/unit/cli/test_script_loader.py (4 hunks)
  • src/lfx/tests/unit/cli/test_serve_components.py (5 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
{src/backend/**/*.py,tests/**/*.py,Makefile}

📄 CodeRabbit inference engine (.cursor/rules/backend_development.mdc)

{src/backend/**/*.py,tests/**/*.py,Makefile}: Run make format_backend to format Python code before linting or committing changes
Run make lint to perform linting checks on backend Python code

Files:

  • src/backend/tests/unit/test_simple_agent_in_lfx_run.py
  • src/backend/tests/data/simple_agent.py
src/backend/tests/unit/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/backend_development.mdc)

Test component integration within flows using create_flow, build_flow, and get_build_events utilities

Files:

  • src/backend/tests/unit/test_simple_agent_in_lfx_run.py
src/backend/tests/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/testing.mdc)

src/backend/tests/**/*.py: Unit tests for backend code must be located in the 'src/backend/tests/' directory, with component tests organized by component subdirectory under 'src/backend/tests/unit/components/'.
Test files should use the same filename as the component under test, with an appropriate test prefix or suffix (e.g., 'my_component.py' → 'test_my_component.py').
Use the 'client' fixture (an async httpx.AsyncClient) for API tests in backend Python tests, as defined in 'src/backend/tests/conftest.py'.
When writing component tests, inherit from the appropriate base class in 'src/backend/tests/base.py' (ComponentTestBase, ComponentTestBaseWithClient, or ComponentTestBaseWithoutClient) and provide the required fixtures: 'component_class', 'default_kwargs', and 'file_names_mapping'.
Each test in backend Python test files should have a clear docstring explaining its purpose, and complex setups or mocks should be well-commented.
Test both sync and async code paths in backend Python tests, using '@pytest.mark.asyncio' for async tests.
Mock external dependencies appropriately in backend Python tests to isolate unit tests from external services.
Test error handling and edge cases in backend Python tests, including using 'pytest.raises' and asserting error messages.
Validate input/output behavior and test component initialization and configuration in backend Python tests.
Use the 'no_blockbuster' pytest marker to skip the blockbuster plugin in tests when necessary.
Be aware of ContextVar propagation in async tests; test both direct event loop execution and 'asyncio.to_thread' scenarios to ensure proper context isolation.
Test error handling by mocking internal functions using monkeypatch in backend Python tests.
Test resource cleanup in backend Python tests by using fixtures that ensure proper initialization and cleanup of resources.
Test timeout and performance constraints in backend Python tests using 'asyncio.wait_for' and timing assertions.
Test Langflow's Messag...

Files:

  • src/backend/tests/unit/test_simple_agent_in_lfx_run.py
  • src/backend/tests/data/simple_agent.py
🧠 Learnings (6)
📚 Learning: 2025-07-21T14:16:14.125Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/testing.mdc:0-0
Timestamp: 2025-07-21T14:16:14.125Z
Learning: Applies to src/backend/tests/**/*.py : Test both sync and async code paths in backend Python tests, using 'pytest.mark.asyncio' for async tests.

Applied to files:

  • src/lfx/tests/unit/cli/test_common.py
  • src/lfx/tests/unit/cli/test_script_loader.py
  • src/lfx/tests/unit/cli/test_serve_components.py
📚 Learning: 2025-07-21T14:16:14.125Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/testing.mdc:0-0
Timestamp: 2025-07-21T14:16:14.125Z
Learning: Applies to src/backend/tests/**/*.py : Use 'anyio' and 'aiofiles' for async file operations in backend Python tests that involve file handling.

Applied to files:

  • src/lfx/tests/unit/cli/test_common.py
  • src/lfx/tests/unit/cli/test_serve_components.py
📚 Learning: 2025-07-18T18:25:54.486Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/backend_development.mdc:0-0
Timestamp: 2025-07-18T18:25:54.486Z
Learning: Applies to src/backend/base/langflow/components/**/*.py : Implement async component methods using async def and await for asynchronous operations

Applied to files:

  • src/lfx/tests/unit/cli/test_serve_components.py
📚 Learning: 2025-07-21T14:16:14.125Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/testing.mdc:0-0
Timestamp: 2025-07-21T14:16:14.125Z
Learning: Applies to src/backend/tests/**/*.py : Test Langflow's REST API endpoints in backend Python tests using the async client fixture and asserting response codes and payloads.

Applied to files:

  • src/lfx/tests/unit/cli/test_serve_components.py
📚 Learning: 2025-07-18T18:25:54.487Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/backend_development.mdc:0-0
Timestamp: 2025-07-18T18:25:54.487Z
Learning: Applies to src/backend/tests/unit/**/*.py : Test component integration within flows using create_flow, build_flow, and get_build_events utilities

Applied to files:

  • src/lfx/tests/unit/cli/test_serve_components.py
📚 Learning: 2025-08-05T22:51:27.961Z
Learnt from: edwinjosechittilappilly
PR: langflow-ai/langflow#0
File: :0-0
Timestamp: 2025-08-05T22:51:27.961Z
Learning: The TestComposioComponentAuth test in src/backend/tests/unit/components/bundles/composio/test_base_composio.py demonstrates proper integration testing patterns for external API components, including real API calls with mocking for OAuth completion, comprehensive resource cleanup, and proper environment variable handling with pytest.skip() fallbacks.

Applied to files:

  • src/lfx/tests/unit/cli/test_serve_components.py
🧬 Code graph analysis (7)
src/lfx/src/lfx/cli/run.py (1)
src/lfx/src/lfx/cli/script_loader.py (1)
  • load_graph_from_script (75-120)
src/lfx/tests/unit/cli/test_common.py (2)
src/lfx/tests/unit/cli/test_serve_components.py (9)
  • test_load_graph_from_path_success (204-218)
  • verbose_print (186-187)
  • verbose_print (196-197)
  • verbose_print (213-214)
  • verbose_print (230-231)
  • verbose_print (265-266)
  • verbose_print (280-281)
  • verbose_print (301-302)
  • verbose_print (449-450)
src/lfx/src/lfx/cli/common.py (1)
  • load_graph_from_path (227-274)
src/backend/tests/data/simple_agent.py (2)
src/lfx/src/lfx/custom/custom_component/component.py (1)
  • to_toolkit (1314-1335)
src/backend/base/langflow/__main__.py (1)
  • api_key (847-895)
src/lfx/src/lfx/cli/common.py (1)
src/lfx/src/lfx/cli/script_loader.py (1)
  • load_graph_from_script (75-120)
src/lfx/tests/unit/cli/test_script_loader.py (1)
src/lfx/src/lfx/cli/script_loader.py (1)
  • load_graph_from_script (75-120)
src/lfx/tests/unit/cli/test_serve_components.py (2)
src/lfx/tests/unit/cli/test_common.py (1)
  • test_load_graph_from_path_success (172-186)
src/lfx/src/lfx/cli/common.py (1)
  • load_graph_from_path (227-274)
src/lfx/src/lfx/cli/commands.py (2)
src/lfx/src/lfx/cli/common.py (1)
  • load_graph_from_path (227-274)
src/lfx/src/lfx/cli/script_loader.py (1)
  • load_graph_from_script (75-120)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Lint Backend / Run Mypy (3.10)
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 4
  • GitHub Check: Lint Backend / Run Mypy (3.11)
  • GitHub Check: Lint Backend / Run Mypy (3.12)
  • GitHub Check: Lint Backend / Run Mypy (3.13)
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 5
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 2
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 3
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 1
  • GitHub Check: Test Starter Templates
  • GitHub Check: Run Backend Tests / Integration Tests - Python 3.10
🔇 Additional comments (9)
src/backend/tests/data/simple_agent.py (1)

56-58: LGTM: graph construction and wiring look correct.

src/backend/tests/unit/test_simple_agent_in_lfx_run.py (2)

115-120: Script content assertions: good coverage of async get_graph path.


1-1: Backend test hygiene — run format + lint.

Verification failed here: /bin/bash: line 3: make: command not found. Run make format_backend and make lint locally or in CI and commit any resulting fixes (target: src/backend/tests/unit/test_simple_agent_in_lfx_run.py).

src/lfx/tests/unit/cli/test_common.py (2)

171-173: Async test conversion looks correct.

Awaiting load_graph_from_path and marking the test with pytest.mark.asyncio matches the new async API. Assertions for verbose behavior and disable_logs are solid.

Also applies to: 181-181


188-190: Failure-path assertions are accurate.

Mocking the loader to raise and asserting Typer exit + error log ensures the async error path is covered.

Also applies to: 196-201

src/lfx/src/lfx/cli/commands.py (1)

201-209: LGTM: async awaits for loaders in serve path.

Awaiting both JSON and Python script loaders matches the new async interfaces and keeps logs consistent.

src/lfx/tests/unit/cli/test_serve_components.py (3)

203-205: Async migration of success test is correct.

Awaiting load_graph_from_path and asserting disable_logs=False when verbose=True is spot on.

Also applies to: 216-216


221-223: Error-path test updated correctly.

Awaiting the async loader and asserting disable_logs=True verifies the quiet mode path.

Also applies to: 233-235


435-436: Integration test aligns with async API.

End‑to‑end uses of load_graph_from_path are consistent and validate flow ID + app wiring.

Also applies to: 453-454

…alization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Sep 18, 2025
@sonarqubecloud
Copy link
Copy Markdown

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Sep 18, 2025
@ogabrielluiz ogabrielluiz requested a review from mpawlow October 8, 2025 16:31
Comment thread src/lfx/README.md
)
chat_output = cp.ChatOutput().set(input_value=agent.message_response)

return Graph(chat_input, chat_output, log_config=log_config)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Nice. Tested this locally, works great.

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 17, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 17, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 17, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 17, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 18, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 18, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 18, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 18, 2025
@ogabrielluiz ogabrielluiz added this pull request to the merge queue Nov 19, 2025
Merged via the queue into main with commit 3388fe3 Nov 19, 2025
85 of 89 checks passed
@ogabrielluiz ogabrielluiz deleted the add-get-graph-functionality branch November 19, 2025 13:19
andifilhohub pushed a commit to andifilhohub/langflow that referenced this pull request Nov 19, 2025
…cripts (langflow-ai#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
andifilhohub pushed a commit to andifilhohub/langflow that referenced this pull request Nov 19, 2025
…cripts (langflow-ai#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
github-merge-queue Bot pushed a commit that referenced this pull request Dec 11, 2025
…parse errors (#10508)

* feat: Add ALTK Agent with tool validation and comprehensive tests (#10587)

* Add ALTK Agent with tool validation and comprehensive tests

- Added agent-lifecycle-toolkit~=0.4.1 dependency to pyproject.toml
- Implemented ALTKBaseAgent with comprehensive error handling and tool validation
- Added ALTKToolWrappers for SPARC integration and tool execution safety
- Created ALTK Agent component with proper LangChain integration
- Added comprehensive test suite covering tool validation, conversation context, and edge cases
- Fixed docstring formatting to comply with ruff linting standards

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* minor fix to execute_tool that was left out.

* Fixes following coderabbitai comments.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add custom message to dict conversion in ValidatedTool

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: Koren Lazar <koren.lazar@ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: Implement dynamic model discovery system (#10523)

* add dynamic model request

* add description to groq

* add cache folder to store cache models json

* change git ignore description

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add comprehensive tests for Groq dynamic model discovery

- Add 101 unit tests covering success, error, and edge cases
- Test model discovery, caching, tool calling detection
- Test fallback models and backward compatibility
- Add support for real GROQ_API_KEY from environment
- Fix all lint errors and improve code quality

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix Python 3.10 compatibility - replace UTC with timezone.utc

Python 3.10 doesn't have datetime.UTC, need to use timezone.utc instead

* fix pytest hook signature - use config instead of _config

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* fix conftest config.py

* fix timezone UTC on tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/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>

* feat: remove `code` from Transactions to reduce clutter in logs (#10400)

* refactor: remove code from transaction model inputs

* refactor: remove code from transaction model inputs

* tests: add tests to make sure code is not added to transactions data

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: improve code removal from logs with explicit dict copying

---------

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

* feat: new release for cuga component (#10591)

* feat: new release of cuga

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: address review

* fix: fixed more bugs

* fix: build component index

* [autofix.ci] apply automated fixes

* fix: update test

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

---------

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

* feat: adds Component Inputs telemetry (#10254)

* feat: Introduce telemetry tracking for sensitive field types

Added a new set of field types that should not be tracked in telemetry due to their sensitive nature, including PASSWORD, AUTH, FILE, CONNECTION, and MCP. Updated relevant input classes to ensure telemetry tracking is disabled for these sensitive fields, enhancing data privacy and security.

* feat: Enhance telemetry payloads with additional fields and serialization support

Added new fields to the ComponentPayload and ComponentInputsPayload classes, including component_id and component_run_id, to improve telemetry data tracking. Introduced a serialize_input_values function to handle JSON serialization of component input values, ensuring robust handling of input data for telemetry purposes.

* feat: Implement telemetry input tracking and caching

Added functionality to track and cache telemetry input values within the Component class. Introduced a method to determine if inputs should be tracked based on sensitivity and an accessor for retrieving cached telemetry data, enhancing the robustness of telemetry handling.

* feat: Add logging for component input telemetry

Introduced a new method, log_package_component_inputs, to the TelemetryService for logging telemetry data related to component inputs. This enhancement improves the tracking capabilities of the telemetry system, allowing for more detailed insights into component interactions.

* feat: Enhance telemetry logging for component execution

Added functionality to log component input telemetry both during successful execution and error cases. Introduced a unique component_run_id for each execution to improve tracking. This update ensures comprehensive telemetry data collection, enhancing the robustness of the telemetry system.

* feat: Extend telemetry payload tests and enhance serialization

Added tests for the new component_id and component_run_id fields in ComponentPayload and ComponentInputsPayload classes. Introduced a new test suite for ComponentInputTelemetry, covering serialization of various data types and handling of edge cases. This update improves the robustness and coverage of telemetry data handling in the system.

* fix: Update default telemetry tracking behavior in BaseInputMixin

Changed the default value of track_in_telemetry from True to False in the BaseInputMixin class. Updated documentation to clarify that telemetry tracking is now opt-in and can be explicitly enabled for individual input types, enhancing data privacy and control.

* fix: Update telemetry tracking defaults for input types

Modified the default value of `track_in_telemetry` for various input classes to enhance data privacy. Regular inputs now default to False, while safe inputs like `IntInput` and `BoolInput` default to True, ensuring explicit opt-in for telemetry tracking. Updated related tests to reflect these changes.

* feat: add chunk_index and total_chunks fields to ComponentInputsPayload

This commit adds two new optional fields to ComponentInputsPayload:
- chunk_index: Index of this chunk in a split payload sequence
- total_chunks: Total number of chunks in the split sequence

Both fields default to None and use camelCase aliases for serialization.
This is Task 1 of the telemetry query parameter splitting implementation.

Tests included:
- Verify fields exist and can be set
- Verify camelCase serialization aliases work correctly
- Verify fields default to None when not provided

Generated with Claude Code (https://claude.com/claude-code)

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

* refactor: update ComponentInputsPayload to support automatic splitting of oversized inputs

This commit enhances the ComponentInputsPayload class by implementing functionality to automatically split input values into multiple chunks if they exceed the maximum URL size limit. Key changes include:

- Added methods for calculating URL size, truncating oversized values, and splitting payloads.
- Updated component_inputs field to accept a dictionary instead of a string for better handling of input values.
- Improved documentation for the ComponentInputsPayload class to reflect the new splitting behavior and usage examples.

These changes aim to improve telemetry data handling and ensure compliance with URL length restrictions.

* refactor: enhance log_package_component_inputs to handle oversized payloads

This commit updates the log_package_component_inputs method in the TelemetryService class to split component input payloads into multiple requests if they exceed the maximum URL size limit. Key changes include:

- Added logic to split the payload using the new split_if_needed method.
- Each chunk is queued separately for telemetry logging.

These improvements ensure better handling of telemetry data while adhering to URL length restrictions.

* refactor: centralize maximum telemetry URL size constant

This commit introduces a centralized constant, MAX_TELEMETRY_URL_SIZE, to define the maximum URL length for telemetry GET requests. Key changes include:

- Added MAX_TELEMETRY_URL_SIZE constant to schema.py for better maintainability.
- Updated split_if_needed method in ComponentInputsPayload to use the new constant instead of a hardcoded value.
- Adjusted the TelemetryService to reference the centralized constant for URL size limits.

These changes enhance code clarity and ensure consistent handling of URL size limits across the telemetry service.

* refactor: update ComponentInputsPayload tests to use dictionary inputs

This commit modifies the tests for ComponentInputsPayload to utilize a dictionary for component inputs instead of a serialized JSON string. Key changes include:

- Renamed the test method to reflect the new input type.
- Removed unnecessary serialization steps and assertions related to JSON strings.
- Added assertions to verify the correct handling of dictionary inputs.

These changes streamline the testing process and improve clarity in how component inputs are represented.

* test: add integration tests for telemetry service payload splitting

This commit introduces integration tests for the TelemetryService to verify its handling of large and small payloads. Key changes include:

- Added tests to ensure large payloads are split into multiple chunks and queued correctly.
- Implemented a test to confirm that small payloads are not split and result in a single queued event.
- Created a mock settings service for testing purposes.

These tests enhance the reliability of the telemetry service by ensuring proper payload management.

* test: enhance ComponentInputsPayload tests with additional scenarios

This commit expands the test suite for ComponentInputsPayload by adding various scenarios to ensure robust handling of input payloads. Key changes include:

- Introduced tests for calculating URL size, ensuring it returns a positive integer and accounts for encoding.
- Added tests to verify the splitting logic for large payloads, including checks for chunk metadata and preservation of fixed fields.
- Implemented property-based tests using Hypothesis to validate that all chunks respect the maximum URL size and preserve original data.

These enhancements improve the reliability and coverage of the ComponentInputsPayload tests, ensuring proper functionality under various conditions.

* [autofix.ci] apply automated fixes

* optimize query param encoding

Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>

* refactor: extract telemetry logging logic into a separate function

This commit introduces a new function, _log_component_input_telemetry, to centralize the logic for logging component input telemetry. The function is called in two places within the generate_flow_events function, improving code readability and maintainability by reducing duplication. This change enhances the clarity of telemetry handling in the flow generation process.

* refactor: optimize truncation logic in ComponentInputsPayload

This commit refines the truncation logic for input values in the ComponentInputsPayload class. The previous binary search method for string values has been simplified, allowing for direct truncation of both string and non-string values. This change enhances code clarity and maintains functionality while ensuring optimal handling of oversized inputs.

* refactor: update telemetry tracking logic to respect opt-in flag

This commit modifies the telemetry tracking logic in the Component class to change the default behavior of the `track_in_telemetry` attribute from True to False. This adjustment enhances user privacy by requiring explicit consent for tracking input objects in telemetry. The change ensures that sensitive field types are still auto-excluded from tracking, maintaining the integrity of the telemetry data.

* refactor: update tests to use dictionary format for component inputs

This commit modifies the integration tests for telemetry payload validation and component input telemetry to utilize dictionaries for component inputs instead of serialized JSON strings. Key changes include:

- Updated assertions to compare dictionary inputs directly.
- Enhanced clarity and maintainability of the test cases by removing unnecessary serialization steps.

These changes improve the representation of component inputs in tests, aligning with recent refactoring efforts.

* [autofix.ci] apply automated fixes

* refactor: specify type for current_chunk_inputs in ComponentInputsPayload

This commit updates the type annotation for the current_chunk_inputs variable in the ComponentInputsPayload class to explicitly define it as a dictionary. This change enhances code clarity and maintainability by providing better type information for developers working with the code.

* test: add component_id to ComponentPayload tests

This commit enhances the test cases for the ComponentPayload class by adding a component_id parameter to various initialization tests. The updates ensure that the component_id is properly tested across different scenarios, including valid parameters, error messages, and edge cases. This change improves the robustness of the tests and aligns with recent updates to the ComponentPayload structure.

* [autofix.ci] apply automated fixes

* feat: add component_id to ComponentPayload in build_vertex function

* fix: update MAX_TELEMETRY_URL_SIZE to 2048 and adjust related tests

This commit increases the maximum URL size for telemetry GET requests from 2000 to 2048 bytes to align with Scarf's specifications. Corresponding test assertions have been updated to reference the new constant, ensuring consistency across the codebase.

* [autofix.ci] apply automated fixes

* feat(telemetry): add track_in_telemetry field to starter project configurations

* refactor(telemetry): remove unused blank line in test imports

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update starter templates

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

* feat: Add gpt-5.1 model to Language models (#10590)

* Add gpt-5.1 model to starter projects

Added 'gpt-5.1' to the list of available models in all starter project JSON files to support the new model version. This update ensures users can select gpt-5.1 in agent configurations.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Use the proper Embeddings import for Qdrant vector store (#10613)

* Use the proper Embeddings import for Qdrant vector store

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Ensure split text test is more robust (#10622)

* fix: Ensure split text test is more robust

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: use issubclass in the pool creation (#10232)

* use issubclass in the pool creation

* [autofix.ci] apply automated fixes

* add poolclass pytests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>

* feat: make it possible to load graphs using `get_graph` function in scripts (#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* feat: Add ALTK Agent with tool validation and comprehensive tests (#10587)

* Add ALTK Agent with tool validation and comprehensive tests

- Added agent-lifecycle-toolkit~=0.4.1 dependency to pyproject.toml
- Implemented ALTKBaseAgent with comprehensive error handling and tool validation
- Added ALTKToolWrappers for SPARC integration and tool execution safety
- Created ALTK Agent component with proper LangChain integration
- Added comprehensive test suite covering tool validation, conversation context, and edge cases
- Fixed docstring formatting to comply with ruff linting standards

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* minor fix to execute_tool that was left out.

* Fixes following coderabbitai comments.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add custom message to dict conversion in ValidatedTool

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: Koren Lazar <koren.lazar@ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: Implement dynamic model discovery system (#10523)

* add dynamic model request

* add description to groq

* add cache folder to store cache models json

* change git ignore description

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add comprehensive tests for Groq dynamic model discovery

- Add 101 unit tests covering success, error, and edge cases
- Test model discovery, caching, tool calling detection
- Test fallback models and backward compatibility
- Add support for real GROQ_API_KEY from environment
- Fix all lint errors and improve code quality

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix Python 3.10 compatibility - replace UTC with timezone.utc

Python 3.10 doesn't have datetime.UTC, need to use timezone.utc instead

* fix pytest hook signature - use config instead of _config

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* fix conftest config.py

* fix timezone UTC on tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/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>

* feat: remove `code` from Transactions to reduce clutter in logs (#10400)

* refactor: remove code from transaction model inputs

* refactor: remove code from transaction model inputs

* tests: add tests to make sure code is not added to transactions data

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: improve code removal from logs with explicit dict copying

---------

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

* feat: new release for cuga component (#10591)

* feat: new release of cuga

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: address review

* fix: fixed more bugs

* fix: build component index

* [autofix.ci] apply automated fixes

* fix: update test

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

---------

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

* feat: adds Component Inputs telemetry (#10254)

* feat: Introduce telemetry tracking for sensitive field types

Added a new set of field types that should not be tracked in telemetry due to their sensitive nature, including PASSWORD, AUTH, FILE, CONNECTION, and MCP. Updated relevant input classes to ensure telemetry tracking is disabled for these sensitive fields, enhancing data privacy and security.

* feat: Enhance telemetry payloads with additional fields and serialization support

Added new fields to the ComponentPayload and ComponentInputsPayload classes, including component_id and component_run_id, to improve telemetry data tracking. Introduced a serialize_input_values function to handle JSON serialization of component input values, ensuring robust handling of input data for telemetry purposes.

* feat: Implement telemetry input tracking and caching

Added functionality to track and cache telemetry input values within the Component class. Introduced a method to determine if inputs should be tracked based on sensitivity and an accessor for retrieving cached telemetry data, enhancing the robustness of telemetry handling.

* feat: Add logging for component input telemetry

Introduced a new method, log_package_component_inputs, to the TelemetryService for logging telemetry data related to component inputs. This enhancement improves the tracking capabilities of the telemetry system, allowing for more detailed insights into component interactions.

* feat: Enhance telemetry logging for component execution

Added functionality to log component input telemetry both during successful execution and error cases. Introduced a unique component_run_id for each execution to improve tracking. This update ensures comprehensive telemetry data collection, enhancing the robustness of the telemetry system.

* feat: Extend telemetry payload tests and enhance serialization

Added tests for the new component_id and component_run_id fields in ComponentPayload and ComponentInputsPayload classes. Introduced a new test suite for ComponentInputTelemetry, covering serialization of various data types and handling of edge cases. This update improves the robustness and coverage of telemetry data handling in the system.

* fix: Update default telemetry tracking behavior in BaseInputMixin

Changed the default value of track_in_telemetry from True to False in the BaseInputMixin class. Updated documentation to clarify that telemetry tracking is now opt-in and can be explicitly enabled for individual input types, enhancing data privacy and control.

* fix: Update telemetry tracking defaults for input types

Modified the default value of `track_in_telemetry` for various input classes to enhance data privacy. Regular inputs now default to False, while safe inputs like `IntInput` and `BoolInput` default to True, ensuring explicit opt-in for telemetry tracking. Updated related tests to reflect these changes.

* feat: add chunk_index and total_chunks fields to ComponentInputsPayload

This commit adds two new optional fields to ComponentInputsPayload:
- chunk_index: Index of this chunk in a split payload sequence
- total_chunks: Total number of chunks in the split sequence

Both fields default to None and use camelCase aliases for serialization.
This is Task 1 of the telemetry query parameter splitting implementation.

Tests included:
- Verify fields exist and can be set
- Verify camelCase serialization aliases work correctly
- Verify fields default to None when not provided

Generated with Claude Code (https://claude.com/claude-code)

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

* refactor: update ComponentInputsPayload to support automatic splitting of oversized inputs

This commit enhances the ComponentInputsPayload class by implementing functionality to automatically split input values into multiple chunks if they exceed the maximum URL size limit. Key changes include:

- Added methods for calculating URL size, truncating oversized values, and splitting payloads.
- Updated component_inputs field to accept a dictionary instead of a string for better handling of input values.
- Improved documentation for the ComponentInputsPayload class to reflect the new splitting behavior and usage examples.

These changes aim to improve telemetry data handling and ensure compliance with URL length restrictions.

* refactor: enhance log_package_component_inputs to handle oversized payloads

This commit updates the log_package_component_inputs method in the TelemetryService class to split component input payloads into multiple requests if they exceed the maximum URL size limit. Key changes include:

- Added logic to split the payload using the new split_if_needed method.
- Each chunk is queued separately for telemetry logging.

These improvements ensure better handling of telemetry data while adhering to URL length restrictions.

* refactor: centralize maximum telemetry URL size constant

This commit introduces a centralized constant, MAX_TELEMETRY_URL_SIZE, to define the maximum URL length for telemetry GET requests. Key changes include:

- Added MAX_TELEMETRY_URL_SIZE constant to schema.py for better maintainability.
- Updated split_if_needed method in ComponentInputsPayload to use the new constant instead of a hardcoded value.
- Adjusted the TelemetryService to reference the centralized constant for URL size limits.

These changes enhance code clarity and ensure consistent handling of URL size limits across the telemetry service.

* refactor: update ComponentInputsPayload tests to use dictionary inputs

This commit modifies the tests for ComponentInputsPayload to utilize a dictionary for component inputs instead of a serialized JSON string. Key changes include:

- Renamed the test method to reflect the new input type.
- Removed unnecessary serialization steps and assertions related to JSON strings.
- Added assertions to verify the correct handling of dictionary inputs.

These changes streamline the testing process and improve clarity in how component inputs are represented.

* test: add integration tests for telemetry service payload splitting

This commit introduces integration tests for the TelemetryService to verify its handling of large and small payloads. Key changes include:

- Added tests to ensure large payloads are split into multiple chunks and queued correctly.
- Implemented a test to confirm that small payloads are not split and result in a single queued event.
- Created a mock settings service for testing purposes.

These tests enhance the reliability of the telemetry service by ensuring proper payload management.

* test: enhance ComponentInputsPayload tests with additional scenarios

This commit expands the test suite for ComponentInputsPayload by adding various scenarios to ensure robust handling of input payloads. Key changes include:

- Introduced tests for calculating URL size, ensuring it returns a positive integer and accounts for encoding.
- Added tests to verify the splitting logic for large payloads, including checks for chunk metadata and preservation of fixed fields.
- Implemented property-based tests using Hypothesis to validate that all chunks respect the maximum URL size and preserve original data.

These enhancements improve the reliability and coverage of the ComponentInputsPayload tests, ensuring proper functionality under various conditions.

* [autofix.ci] apply automated fixes

* optimize query param encoding

Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>

* refactor: extract telemetry logging logic into a separate function

This commit introduces a new function, _log_component_input_telemetry, to centralize the logic for logging component input telemetry. The function is called in two places within the generate_flow_events function, improving code readability and maintainability by reducing duplication. This change enhances the clarity of telemetry handling in the flow generation process.

* refactor: optimize truncation logic in ComponentInputsPayload

This commit refines the truncation logic for input values in the ComponentInputsPayload class. The previous binary search method for string values has been simplified, allowing for direct truncation of both string and non-string values. This change enhances code clarity and maintains functionality while ensuring optimal handling of oversized inputs.

* refactor: update telemetry tracking logic to respect opt-in flag

This commit modifies the telemetry tracking logic in the Component class to change the default behavior of the `track_in_telemetry` attribute from True to False. This adjustment enhances user privacy by requiring explicit consent for tracking input objects in telemetry. The change ensures that sensitive field types are still auto-excluded from tracking, maintaining the integrity of the telemetry data.

* refactor: update tests to use dictionary format for component inputs

This commit modifies the integration tests for telemetry payload validation and component input telemetry to utilize dictionaries for component inputs instead of serialized JSON strings. Key changes include:

- Updated assertions to compare dictionary inputs directly.
- Enhanced clarity and maintainability of the test cases by removing unnecessary serialization steps.

These changes improve the representation of component inputs in tests, aligning with recent refactoring efforts.

* [autofix.ci] apply automated fixes

* refactor: specify type for current_chunk_inputs in ComponentInputsPayload

This commit updates the type annotation for the current_chunk_inputs variable in the ComponentInputsPayload class to explicitly define it as a dictionary. This change enhances code clarity and maintainability by providing better type information for developers working with the code.

* test: add component_id to ComponentPayload tests

This commit enhances the test cases for the ComponentPayload class by adding a component_id parameter to various initialization tests. The updates ensure that the component_id is properly tested across different scenarios, including valid parameters, error messages, and edge cases. This change improves the robustness of the tests and aligns with recent updates to the ComponentPayload structure.

* [autofix.ci] apply automated fixes

* feat: add component_id to ComponentPayload in build_vertex function

* fix: update MAX_TELEMETRY_URL_SIZE to 2048 and adjust related tests

This commit increases the maximum URL size for telemetry GET requests from 2000 to 2048 bytes to align with Scarf's specifications. Corresponding test assertions have been updated to reference the new constant, ensuring consistency across the codebase.

* [autofix.ci] apply automated fixes

* feat(telemetry): add track_in_telemetry field to starter project configurations

* refactor(telemetry): remove unused blank line in test imports

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update starter templates

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

* feat: Add gpt-5.1 model to Language models (#10590)

* Add gpt-5.1 model to starter projects

Added 'gpt-5.1' to the list of available models in all starter project JSON files to support the new model version. This update ensures users can select gpt-5.1 in agent configurations.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Use the proper Embeddings import for Qdrant vector store (#10613)

* Use the proper Embeddings import for Qdrant vector store

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Ensure split text test is more robust (#10622)

* fix: Ensure split text test is more robust

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: use issubclass in the pool creation (#10232)

* use issubclass in the pool creation

* [autofix.ci] apply automated fixes

* add poolclass pytests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>

* feat: make it possible to load graphs using `get_graph` function in scripts (#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: prevent UI from getting stuck when switching to cURL mode after parse errors

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Koren Lazar <44236526+korenLazar@users.noreply.github.com>
Co-authored-by: Koren Lazar <koren.lazar@ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Sami Marreed <sami.marreed@ibm.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Madhavan <msmygit@users.noreply.github.com>
Co-authored-by: Madhavan <cxo@ibm.com>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
Co-authored-by: ming <itestmycode@gmail.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Kabilan-16 added a commit to SaravanakumarR2018/DragDropAIAgentBuilder that referenced this pull request Jan 21, 2026
* docs: Improve README Quickstart section and add dark mode logo (#10358)

* Improve README Quickstart section and reorganize installation options

- Add prominent Desktop download section before Quickstart
- Remove $ symbols from shell commands to fix copy button functionality
- Add clear 'Run from source' option with make run_cli for developers
- Improve Docker installation instructions with usage details
- Move security warnings to after installation options for better flow
- Remove redundant star/issues badges

These changes address common user confusion when trying to run Langflow,
especially for developers who clone the repo first and then struggle with
the package installation instructions.

🤖 Generated with [Claude Code](https://claude.ai/code)

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

* Add dark mode logo support

- Added picture element for automatic dark/light mode logo switching
- Dark mode shows blue background logo, light mode shows black logo

🤖 Generated with [Claude Code](https://claude.ai/code)

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

* Final README improvements

- Made 'Other install options' a proper section with emoji
- Updated deployment section with rocket emoji
- Fixed single-line formatting for subsections
- Added new star animation gif
- Changed 'tool' to 'platform' in description

* Improve Desktop download section messaging

- Made text more concise and action-oriented
- Changed download emoji from arrow to inbox
- Removed redundant 'built-in' and bold formatting
- Cleaner parenthetical for OS availability

* Revise README for Langflow Desktop and deployment info

Updated sections for clarity and added details about Langflow Desktop and deployment options.

* Revert star gif to GitHub attachment URL

Testing if local file path issue or markdown previewer issue

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* readme-changes

* Apply suggestion from @mendonk

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* fix: require active user for monitor endpoints (#10568)

Require active user for monitor endpoints

* refactor: Reorganize sidebar categories (#10180)

* Reorganize sidebar categories

* finishing touches

* templates

* ruff check fix

* merge fix

* filter out knowledge when ff'd off

* BE tests

* [autofix.ci] apply automated fixes

* more test fixes

* integration test fix

* Unit tests

* more test fixes

* reorg tests

* [autofix.ci] apply automated fixes

* update ui tests

* [autofix.ci] apply automated fixes

* mcp and playwright tests

* [autofix.ci] apply automated fixes

* BE test fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* test fix

---------

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

* fix(agent): handle missing message id for disconnected agents (#10560)

* fix(agent): handle missing message id for disconnected agents

* [autofix.ci] apply automated fixes

* will this update comp index

* comp index

---------

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

* fix: Langflow logo on home page when s3 is enabled  (#10352)

* fixed and added tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix(playground): preserve timer start time when playground is reopened (#10516)

* Fix playground timer

* add jest unit tests

---------

Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>

* fix: MCP component auto reset issue in non Tool Mode (#10440)

* Optimize tool dropdown handling and output processing

Improves logic for updating tool dropdown options by checking if the server has changed and whether tool mode is active, reducing unnecessary updates. Adds a process_output_item method to parse tool output as JSON when appropriate, enhancing output handling.

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

* Update component_index.json

* Update Nvidia Remix.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* use cache enabled even for the no tool mode

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update Nvidia Remix.json

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

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: add selector to let dropdown load

add Select a tool selector to let dropdown load before interacting

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update MCPToolsComponent code and metadata

Updated the code and code_hash for MCPToolsComponent in Nvidia Remix starter project and synchronized the component_index.json to reflect the latest code and metadata. This ensures consistency and includes recent improvements or fixes to the MCPToolsComponent implementation.

---------

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

* fix: Switch to browser-compatible MathJax import (#10563)

add browser support to rehype package build

* feat: patch icons to support dark theme and Composio Slack component fix. (#10577)

* feat: add Composio Components & logos tweak

* Display name consistency

* update init

* fix: format

* fix: suggested changes by Mike

* feat: add Composio Components & logos tweak

* Display name consistency

* update init

* fix: format

* fix: suggested changes by Mike

* updates components JSON

* fix: format

* updates components JSON

* Remove unnecessary blank lines in __init__.py

Cleaned up formatting by deleting extra blank lines in the _dynamic_imports dictionary for improved readability.

* Update component_index.json

* Update component_index.json

* Update component_index.json

* Update component_index.json

* fix: Slack component issue

* fix: icons update to support dark theme

* fix: Klaviyo imports

* Update component_index.json

---------

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: add toolkit_versions and updated composio and composio_langchain versions. (#10578)

* feat: added toolkit versions and updated composio and composio_langchain packages

* fix: format

---------

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* fix: marked required fields for fields with MultilineInput input types. (#10579)

fix: marked required fields with MultilineInputs

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: replaced initiate method with link method. (#10580)

feat: replaced .initiate() with .link()

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: Add ALTK Agent with tool validation and comprehensive tests (#10587)

* Add ALTK Agent with tool validation and comprehensive tests

- Added agent-lifecycle-toolkit~=0.4.1 dependency to pyproject.toml
- Implemented ALTKBaseAgent with comprehensive error handling and tool validation
- Added ALTKToolWrappers for SPARC integration and tool execution safety
- Created ALTK Agent component with proper LangChain integration
- Added comprehensive test suite covering tool validation, conversation context, and edge cases
- Fixed docstring formatting to comply with ruff linting standards

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* minor fix to execute_tool that was left out.

* Fixes following coderabbitai comments.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add custom message to dict conversion in ValidatedTool

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: Koren Lazar <koren.lazar@ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>

* feat: Add MCP server config sanitization for sensitive data (#10552)

add clean mcp config function

* feat: Implement dynamic model discovery system (#10523)

* add dynamic model request

* add description to groq

* add cache folder to store cache models json

* change git ignore description

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add comprehensive tests for Groq dynamic model discovery

- Add 101 unit tests covering success, error, and edge cases
- Test model discovery, caching, tool calling detection
- Test fallback models and backward compatibility
- Add support for real GROQ_API_KEY from environment
- Fix all lint errors and improve code quality

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix Python 3.10 compatibility - replace UTC with timezone.utc

Python 3.10 doesn't have datetime.UTC, need to use timezone.utc instead

* fix pytest hook signature - use config instead of _config

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* fix conftest config.py

* fix timezone UTC on tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/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>

* feat: remove `code` from Transactions to reduce clutter in logs (#10400)

* refactor: remove code from transaction model inputs

* refactor: remove code from transaction model inputs

* tests: add tests to make sure code is not added to transactions data

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: improve code removal from logs with explicit dict copying

---------

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

* refactor(service_manager): implement lazy initalization of service manager (#8828)

* refactor: implement lazy initialization for ServiceManager with thread safety

- Replaced direct instantiation of ServiceManager with a lazy initialization approach using a global variable and threading lock.
- Updated the public API to expose `get_service_manager` for retrieving the singleton instance.
- Ensured thread-safe access to the ServiceManager instance to prevent issues during module import.

* refactor: update service manager imports to use get_service_manager

- Replaced direct imports of service_manager with get_service_manager in multiple files to ensure consistent access to the singleton instance.
- This change enhances code clarity and maintains the lazy initialization approach for the ServiceManager.

* refactor: remove deprecated Enhanced ServiceManager implementation

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: implement thread-safe lazy initialization for ServiceManager

* feat: add filelock dependency in lfx

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* feat: new release for cuga component (#10591)

* feat: new release of cuga

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: address review

* fix: fixed more bugs

* fix: build component index

* [autofix.ci] apply automated fixes

* fix: update test

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

---------

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

* ci: upgrade playwright to 1.56 and fix second time imports (#10284)

* chore: update Playwright and related dependencies to version 1.56.0 in package.json and package-lock.json

* refactor: update addLegacyComponents function to improve selector checks

- Replaced the expect assertion with a waitForSelector call to ensure the sidebar legacy switch is checked, enhancing reliability in tests.
- Updated import statement for Page from "@playwright/test" for consistency with current practices.

* fix playwright imports

* chore: update Playwright version in CI workflow to 1.56.0 for consistency with project dependencies

* refactor: enhance lockFlow and unlockFlow functions for improved visibility checks

- Replaced isVisible calls with waitFor to ensure elements are visible before proceeding, enhancing test reliability.
- Removed unnecessary waitForTimeout calls to streamline the flow execution process.

* test(playwright): add validation for settings menu header text

* refactor(playwright): improve lock flow test with expect assertions

* refactor(playwright): simplify legacy component toggle validation

* feat: adds Component Inputs telemetry (#10254)

* feat: Introduce telemetry tracking for sensitive field types

Added a new set of field types that should not be tracked in telemetry due to their sensitive nature, including PASSWORD, AUTH, FILE, CONNECTION, and MCP. Updated relevant input classes to ensure telemetry tracking is disabled for these sensitive fields, enhancing data privacy and security.

* feat: Enhance telemetry payloads with additional fields and serialization support

Added new fields to the ComponentPayload and ComponentInputsPayload classes, including component_id and component_run_id, to improve telemetry data tracking. Introduced a serialize_input_values function to handle JSON serialization of component input values, ensuring robust handling of input data for telemetry purposes.

* feat: Implement telemetry input tracking and caching

Added functionality to track and cache telemetry input values within the Component class. Introduced a method to determine if inputs should be tracked based on sensitivity and an accessor for retrieving cached telemetry data, enhancing the robustness of telemetry handling.

* feat: Add logging for component input telemetry

Introduced a new method, log_package_component_inputs, to the TelemetryService for logging telemetry data related to component inputs. This enhancement improves the tracking capabilities of the telemetry system, allowing for more detailed insights into component interactions.

* feat: Enhance telemetry logging for component execution

Added functionality to log component input telemetry both during successful execution and error cases. Introduced a unique component_run_id for each execution to improve tracking. This update ensures comprehensive telemetry data collection, enhancing the robustness of the telemetry system.

* feat: Extend telemetry payload tests and enhance serialization

Added tests for the new component_id and component_run_id fields in ComponentPayload and ComponentInputsPayload classes. Introduced a new test suite for ComponentInputTelemetry, covering serialization of various data types and handling of edge cases. This update improves the robustness and coverage of telemetry data handling in the system.

* fix: Update default telemetry tracking behavior in BaseInputMixin

Changed the default value of track_in_telemetry from True to False in the BaseInputMixin class. Updated documentation to clarify that telemetry tracking is now opt-in and can be explicitly enabled for individual input types, enhancing data privacy and control.

* fix: Update telemetry tracking defaults for input types

Modified the default value of `track_in_telemetry` for various input classes to enhance data privacy. Regular inputs now default to False, while safe inputs like `IntInput` and `BoolInput` default to True, ensuring explicit opt-in for telemetry tracking. Updated related tests to reflect these changes.

* feat: add chunk_index and total_chunks fields to ComponentInputsPayload

This commit adds two new optional fields to ComponentInputsPayload:
- chunk_index: Index of this chunk in a split payload sequence
- total_chunks: Total number of chunks in the split sequence

Both fields default to None and use camelCase aliases for serialization.
This is Task 1 of the telemetry query parameter splitting implementation.

Tests included:
- Verify fields exist and can be set
- Verify camelCase serialization aliases work correctly
- Verify fields default to None when not provided

Generated with Claude Code (https://claude.com/claude-code)

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

* refactor: update ComponentInputsPayload to support automatic splitting of oversized inputs

This commit enhances the ComponentInputsPayload class by implementing functionality to automatically split input values into multiple chunks if they exceed the maximum URL size limit. Key changes include:

- Added methods for calculating URL size, truncating oversized values, and splitting payloads.
- Updated component_inputs field to accept a dictionary instead of a string for better handling of input values.
- Improved documentation for the ComponentInputsPayload class to reflect the new splitting behavior and usage examples.

These changes aim to improve telemetry data handling and ensure compliance with URL length restrictions.

* refactor: enhance log_package_component_inputs to handle oversized payloads

This commit updates the log_package_component_inputs method in the TelemetryService class to split component input payloads into multiple requests if they exceed the maximum URL size limit. Key changes include:

- Added logic to split the payload using the new split_if_needed method.
- Each chunk is queued separately for telemetry logging.

These improvements ensure better handling of telemetry data while adhering to URL length restrictions.

* refactor: centralize maximum telemetry URL size constant

This commit introduces a centralized constant, MAX_TELEMETRY_URL_SIZE, to define the maximum URL length for telemetry GET requests. Key changes include:

- Added MAX_TELEMETRY_URL_SIZE constant to schema.py for better maintainability.
- Updated split_if_needed method in ComponentInputsPayload to use the new constant instead of a hardcoded value.
- Adjusted the TelemetryService to reference the centralized constant for URL size limits.

These changes enhance code clarity and ensure consistent handling of URL size limits across the telemetry service.

* refactor: update ComponentInputsPayload tests to use dictionary inputs

This commit modifies the tests for ComponentInputsPayload to utilize a dictionary for component inputs instead of a serialized JSON string. Key changes include:

- Renamed the test method to reflect the new input type.
- Removed unnecessary serialization steps and assertions related to JSON strings.
- Added assertions to verify the correct handling of dictionary inputs.

These changes streamline the testing process and improve clarity in how component inputs are represented.

* test: add integration tests for telemetry service payload splitting

This commit introduces integration tests for the TelemetryService to verify its handling of large and small payloads. Key changes include:

- Added tests to ensure large payloads are split into multiple chunks and queued correctly.
- Implemented a test to confirm that small payloads are not split and result in a single queued event.
- Created a mock settings service for testing purposes.

These tests enhance the reliability of the telemetry service by ensuring proper payload management.

* test: enhance ComponentInputsPayload tests with additional scenarios

This commit expands the test suite for ComponentInputsPayload by adding various scenarios to ensure robust handling of input payloads. Key changes include:

- Introduced tests for calculating URL size, ensuring it returns a positive integer and accounts for encoding.
- Added tests to verify the splitting logic for large payloads, including checks for chunk metadata and preservation of fixed fields.
- Implemented property-based tests using Hypothesis to validate that all chunks respect the maximum URL size and preserve original data.

These enhancements improve the reliability and coverage of the ComponentInputsPayload tests, ensuring proper functionality under various conditions.

* [autofix.ci] apply automated fixes

* optimize query param encoding

Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>

* refactor: extract telemetry logging logic into a separate function

This commit introduces a new function, _log_component_input_telemetry, to centralize the logic for logging component input telemetry. The function is called in two places within the generate_flow_events function, improving code readability and maintainability by reducing duplication. This change enhances the clarity of telemetry handling in the flow generation process.

* refactor: optimize truncation logic in ComponentInputsPayload

This commit refines the truncation logic for input values in the ComponentInputsPayload class. The previous binary search method for string values has been simplified, allowing for direct truncation of both string and non-string values. This change enhances code clarity and maintains functionality while ensuring optimal handling of oversized inputs.

* refactor: update telemetry tracking logic to respect opt-in flag

This commit modifies the telemetry tracking logic in the Component class to change the default behavior of the `track_in_telemetry` attribute from True to False. This adjustment enhances user privacy by requiring explicit consent for tracking input objects in telemetry. The change ensures that sensitive field types are still auto-excluded from tracking, maintaining the integrity of the telemetry data.

* refactor: update tests to use dictionary format for component inputs

This commit modifies the integration tests for telemetry payload validation and component input telemetry to utilize dictionaries for component inputs instead of serialized JSON strings. Key changes include:

- Updated assertions to compare dictionary inputs directly.
- Enhanced clarity and maintainability of the test cases by removing unnecessary serialization steps.

These changes improve the representation of component inputs in tests, aligning with recent refactoring efforts.

* [autofix.ci] apply automated fixes

* refactor: specify type for current_chunk_inputs in ComponentInputsPayload

This commit updates the type annotation for the current_chunk_inputs variable in the ComponentInputsPayload class to explicitly define it as a dictionary. This change enhances code clarity and maintainability by providing better type information for developers working with the code.

* test: add component_id to ComponentPayload tests

This commit enhances the test cases for the ComponentPayload class by adding a component_id parameter to various initialization tests. The updates ensure that the component_id is properly tested across different scenarios, including valid parameters, error messages, and edge cases. This change improves the robustness of the tests and aligns with recent updates to the ComponentPayload structure.

* [autofix.ci] apply automated fixes

* feat: add component_id to ComponentPayload in build_vertex function

* fix: update MAX_TELEMETRY_URL_SIZE to 2048 and adjust related tests

This commit increases the maximum URL size for telemetry GET requests from 2000 to 2048 bytes to align with Scarf's specifications. Corresponding test assertions have been updated to reference the new constant, ensuring consistency across the codebase.

* [autofix.ci] apply automated fixes

* feat(telemetry): add track_in_telemetry field to starter project configurations

* refactor(telemetry): remove unused blank line in test imports

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update starter templates

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

* fix(telemetry): resolve cyclic import in telemetry service (#10598)

* fix(telemetry): resolve cyclic import by moving get_email_model

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

* feat: Add gpt-5.1 model to Language models (#10590)

* Add gpt-5.1 model to starter projects

Added 'gpt-5.1' to the list of available models in all starter project JSON files to support the new model version. This update ensures users can select gpt-5.1 in agent configurations.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Use the proper Embeddings import for Qdrant vector store (#10613)

* Use the proper Embeddings import for Qdrant vector store

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: Ensure split text test is more robust (#10622)

* fix: Ensure split text test is more robust

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* docs: security notice (#10555)

* docs-security-notice

* Apply suggestions from code review

Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>

* code-review

* link-to-security-bulletin

* Apply suggestions from code review

Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>

---------

Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>

* fix: use issubclass in the pool creation (#10232)

* use issubclass in the pool creation

* [autofix.ci] apply automated fixes

* add poolclass pytests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>

* docs: OpenAPI spec version upgraded from 1.6.5 to 1.6.8 (#10627)

Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>

* chore: Fix indentation on bundles-docling.mdx (#10640)

* feat: make it possible to load graphs using `get_graph` function in scripts (#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* feat: Add custom download node function (#10659)

* add custom download node

* use download node

* feat: Add type check before issubclass in service discovery (#10636)

* Add type check before issubclass in service discovery

Added an isinstance(obj, type) check before issubclass to prevent errors when inspecting module members for Service and ServiceFactory subclasses. This improves robustness when dynamically importing services and factories.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

---------

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

* docs: readme update  (#10657)

* dep-management

* are

* fix: minor redesign of guardrails for disabling components in LF Astra cloud (#10662)

* create cloud validation util file

disable local_db if in astra cloud

disable split_video if in astra cloud

disable video_file component if in astra cloud

ruff (video_file.py)

correct the error message in video_file.py

disable mem0 and composio in astra cloud

update astra disable component util fn name to be more descriptive

add tests for disabling components

minor docs patch

remove component disable check in places that interact with building the component index

replace init test with execution in composio unit test suite

remove dotenv from validate_cloud

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: prevent autofix workflow loop from bot commits (#10673)

fix(ci): prevent autofix workflow loop from bot commits

* fix(lfx-dev): reload specific modules while preserving index cache (#10629)

* fix(lfx-dev): reload specific modules while preserving index cache

* refactor: restructure component loading with strategy pattern for dev mode

* fix: improve cache loading error handling in component index loading

* refactor: reorganize CUGA and ALTK components into single-element bundles (#10671)

* moved cuga and altk

* reverted starter templates

* [autofix.ci] apply automated fixes

* updated import

* [autofix.ci] apply automated fixes

* revert starter templates

* fixed some python tests

* fix: update import assertions for backward compatibility in dynamic import tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: update import paths for set_advanced_true and get_parent_agent_inputs in test_helper_functions

---------

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

* feat: fix cuga component with new release (#10646)

* bufix(cuga_agent): fixed no output chat bug

* fix: remove structured output feature

* fix: stablize component

* fix: chat output component not working

* fix: add strategy flag

* fix: update cuga version

* feat: add component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update some imports to use lfx

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: update review

* chore: build component index

* chore: build component

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix(cuga): ensure message id exists when not connected to output

* fix: component result id on chat output

* chore: fix component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Revert test_agent_component.py back to origin/main

* fix: remove unwanted tests

* chore: new build index

* [autofix.ci] apply automated fixes

* fix: update test

* chore: build index

* [autofix.ci] apply automated fixes

* fix: update package of cuga

* chore: build component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update comp index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* trying comp index again?

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Offer Akrabi <offer.akrabi@il.ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>

* fix: Add IBM watsonx.ai support to EmbeddingModel (#10677)

* Add IBM watsonx.ai support to EmbeddingModel

Added IBM watsonx.ai as a supported provider in EmbeddingModelComponent, updated dependencies and code to integrate ibm_watsonx_ai and pydantic. Updated starter project and component index metadata to reflect new dependencies and code changes.

* update watsonx default models

* update index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_embedding_model_component.py

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: rename LLM router to LLM selector (#10650)

* fix: rename LLM router to LLM selector

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: rename LLMRouter component to LLMSelector

* fix: resolved merge conflicts

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolved merge conflicts

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: refactor file name

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolve merge conflict

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolve merge conflict

* [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: add environment variable flag to log alembic to stdout (#10620)

* fix: add flag to log alembic to stdout

fix indentation

refine docs

mypy (db service.py)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* fix: move sql database to data source category (#10651)

* fix: move sql database to data source category

* [autofix.ci] apply automated fixes

* fix: resolve merge conflict

---------

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

* fix: fixes YouTube Icon name in lazyloadingMapping (#10628)

* fix lazyloadingMapping component name

* fix: merge conflicts

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes

* fix: resolve merge conflict

---------

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

* Fix: rename sidebar category flow controls to flow control (#10649)

* rename sidebar category flow controls to flow control

* fix: addressed PR comments

* fix: expose logger functions at module level for backwards comp (#10670)

* Expose logger functions at module level for backwards comp

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

---------

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

* feat: agentic UX (#10567)

* Add empty __init__.py files for agentic modules

Created empty __init__.py files in agentic, core, tools, and utils directories to initialize them as Python packages.

* Add agentic template search utilities and tests

Introduces a new agentic utilities module for Langflow, including template search, tag extraction, and template count functions. Adds a README, demo script, and comprehensive unit tests for template search functionality.

* Add Langflow Agentic MCP server with FastMCP tools

Introduces a new MCP (Model Context Protocol) server for Langflow agentic tools using FastMCP. Adds server, CLI, example usage, tests, and comprehensive documentation. Exposes four MCP tools: search_templates, get_template, list_all_tags, and count_templates, enabling AI assistants to query and filter Langflow templates programmatically.

* Handle unparameterized list types in schema inputs

Adds support for unparameterized list annotations by treating them as lists of strings when converting schemas to Langflow inputs. This ensures nullable array schemas without explicit item types are handled gracefully.

* Refactor search_templates to simplify parameters

Removed the 'tags' parameter from the search_templates function and set a default value for 'fields'. Updated the call to list_templates to match the new signature, streamlining template search functionality.

* Add output item processing for tool results

Introduced process_output_item to handle tool output items, attempting to parse text-type items as JSON. This improves downstream handling of tool outputs by converting JSON strings to dictionaries when possible.

* Refactor knowledge base path initialization

Replaces direct settings access with a lazy-loading function for the knowledge bases root path in Knowledge Ingestion and Knowledge Retrieval starter projects. This improves reliability and consistency when accessing the knowledge base directory, and updates all usages to the new helper function.

* Update component_index.json

* Add IBM watsonx.ai support to starter projects

Introduces IBM watsonx.ai as a selectable model provider in multiple starter project JSONs. Adds new input fields for 'base_url', 'project_id', and 'max_output_tokens' to support IBM watsonx.ai integration. Updates agent component code to handle new provider and its required parameters.

* Add Ollama to supported LLM providers in starter projects

Ollama has been added as a supported provider alongside Anthropic, Google Generative AI, OpenAI, and IBM watsonx.ai in all starter project JSON files. This expands the available options for LLM integration in initial setup templates.

* Update Ollama model input constants and logic

Refactored model_input_constants.py to update the OLLAMA_MODEL_INPUTS and OLLAMA_MODEL_INPUTS_MAP. Modified ollama.py to use the new input mapping and improved input handling for Ollama components.

* Add flow creation from template MCP tool

Introduces a new MCP tool for creating flows from starter templates in Langflow Agentic. Adds the utility function `create_flow_from_template_and_get_link` and exposes it via the FastMCP server, allowing users to create flows by template id and receive a UI link. Updates imports and documentation accordingly.

* Add component search utilities and MCP tools to server

Introduces new component search and retrieval tools to the MCP server, including endpoints for searching, listing, and counting components. Adds support functions in support.py for data normalization and a new component_search.py utility module. Updates the Nvidia Remix starter project to use the latest MCPToolsComponent code.

* Add flow graph visualization utilities

Introduces async utility functions for generating ASCII and text representations of flow graphs, as well as metadata summaries. These utilities support fetching flows by ID or name, error handling, and integration with Langflow's graph and logging modules.

* Add flow component operations utilities and MCP tools

Introduces flow component management utilities in `flow_component.py` for retrieving, updating, and listing component field values. Exposes new MCP tools in `server.py` for accessing component details, field values, updating fields, and listing all fields within a flow component.

* Add SystemMessageGen flow and update MCPTools

Introduces SystemMessageGen.json flow for agentic system message generation and updates MCPTools component logic in flow_component.py to support new flow structure and tool handling.

* feat: init aiButton

create an aiButton that opens the prompt modal for demoing
add multiinput mixin

* Update component_index.json

* Refactor SystemMessageGen flow and remove unused init files

Updated SystemMessageGen.json to support custom instructions, OpenAI model configuration, and improved agent settings. Removed unused __init__.py files from agentic, core, tools, and utils directories to clean up the codebase.

* update to the mcp component

* Add verify_ssl option to MCPToolsComponent

Introduces a 'verify_ssl' boolean input to MCPToolsComponent for controlling SSL certificate verification in HTTPS connections. The option is added to the server config if not present, allowing users to disable verification for development or testing with self-signed certificates.

* Optimize tool dropdown handling and output processing

Improves logic for updating tool dropdown options by checking if the server has changed and whether tool mode is active, reducing unnecessary updates. Adds a process_output_item method to parse tool output as JSON when appropriate, enhancing output handling.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* feat: init onclick assistant prompt generation

first pass at on button click generate input and auto fill a field

* Replace MCPTools with Prompt Template in SystemMessageGen flow

Updated the SystemMessageGen.json flow to use the Prompt Template and Parser components instead of MCPTools. Adjusted edges, nodes, and component configurations to reflect the new prompt-based workflow, removing tool selection and execution logic in favor of prompt generation and parsing.

* Update SystemMessageGen flow and frontend dependencies

Refactored edge connections and metadata in SystemMessageGen.json to improve flow logic and updated endpoint name. Added new optional and peer dependencies to package-lock.json, including @mapbox/node-pre-gyp and related packages, to support canvas and other modules.

* Update user authentication in simplified_run_flow endpoint

Replaces the dependency on api_key_security with CurrentActiveUser for the api_key_user parameter in the simplified_run_flow endpoint. This change is part of a TODO to create a new endpoint and may affect how user authentication is handled.

* feat: hook everything up and have onclick prompt

hook up commit

* Add auto-configuration for Agentic MCP server

Introduces utilities and startup logic to automatically configure the Langflow Agentic MCP server for all users when the agentic experience is enabled. Adds a new settings flag `agentic_experience` to control this feature, and updates the main server startup to trigger configuration. This enables agentic tools for flow/component operations, template search, and graph visualization in MCP clients.

* Enable agentic MCP server and improve initialization

Set agentic_experience to True by default in settings. Refactor agentic MCP server initialization in main.py to run in the background with a delay and retry logic, improving startup reliability. Update function calls to use 'current_user' instead of 'user' in agentic_mcp.py for consistency.

* Update user authentication in simplified_run_flow

Modified the api_key_user parameter to accept either CurrentActiveUser or UserRead from api_key_security, supporting both Bearer and session authentication methods.

* revert the apikeu_user changes

* test new api endpoint

* Refactor agent flow and update component inputs

Updated SystemMessageGen.json to refactor edge connections and node IDs for agentic flow. Added 'base_url' as a required input, enabled 'ai_enabled' for agent description, and replaced static memory input handling with dynamic retrieval via get_base_inputs(). Also improved tool callback setup and updated code hash and last_updated metadata.

* Improve agentic flow creation and updating logic

Enhances the agentic flow setup to extract flow_id and endpoint_name from JSON, update existing flows by ID or endpoint_name, and create new flows if they don't exist. Adds detailed logging and ensures flows are up-to-date in the user's Langflow Assistant folder.

* chore: aibutton clean up

* chore: add assistant store

* Update SystemMessageGen.json

* Update agentic_mcp.py

* Update component_index.json

* Fix agent input extraction from Message objects

Agents now correctly extract and use the text content from Message objects, rather than passing the entire object or its string representation. This resolves issues where agents received verbose message representations instead of just the intended string input, and includes improved handling for multimodal content. Corresponding unit and integration tests have been added to verify this behavior for both OpenAI and Anthropic agents.

* Add TemplateAssistant Langflow flow definition

Introduces TemplateAssistant.json, a comprehensive Langflow flow configuration for agentic workflows. This flow integrates AstraDB, MCP Tools, and user input/output nodes, enabling document ingestion, search, and tool orchestration within the Langflow backend.

* Improve MCPToolsComponent server/tool config refresh

Refactored MCPToolsComponent to better handle tool and server config refreshes, especially when the MCP server changes. Added logic to avoid unnecessary clearing of tool inputs and options, and improved caching and UI update behavior for tool selection. Also updated related flow and starter project JSON files to reflect these changes.

* auto add Global Variables for Agentic Experience

* chore: clean up and get button working again

* cleanup .md

* fix:ruff, Refactor agentic utils and improve error handling

Introduces shared default field lists for template/component search, refactors exception handling to use logger and add finally/else blocks, and improves type hinting with TYPE_CHECKING. Updates file opening to use Path objects, enhances error logging in template search, and removes the unused test_template_search.py file.

* fix:ruff Expand exception handling in agentic MCP utilities

Broadened exception handling in agentic MCP server and variable management functions to catch specific errors such as HTTPException, SQLAlchemyError, and common system exceptions. This improves robustness and error logging during server configuration, removal, and variable initialization.

* aka-clean-up-1

* Remove duplicate process_output_item method

Deleted two redundant definitions of the process_output_item method from MCPToolsComponent to clean up the code and prevent confusion.

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

* [autofix.ci] apply automated fixes

* Refactor service usage and improve project deletion logging

Refactored login API to reuse a single settings service instance. Enhanced logging and error messaging when attempting to delete the Langflow Assistant folder. Minor variable usage cleanup in agentic flows setup and agent component test.

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update test_template_search.py

* Handle specific exceptions in agentic flow loading

Updated the exception handling in load_agentic_flows to catch only OSError and orjson.JSONDecodeError instead of all exceptions, improving error specificity and logging.

* Update component_index.json

* [autofix.ci] apply automated fixes

* revert loading setting service

* Update login.py

* Update SystemMessageGen.json

* Update TemplateAssistant.json

* [autofix.ci] apply automated fixes

* Update constants.py

* chore: seperate templateassistant and sysmessgen

seperate templateassistant and sysmessgen frontend queries

* chore: add header feature flag

* use feature flag for all ui

* [autofix.ci] apply automated fixes

* package-lcok update

* [autofix.ci] apply automated fixes

* chore: LANGFLOW_AGENTIC_EXPERIENCE fe ff name

* Update login.py

* lint fix

* [autofix.ci] apply automated fixes

* Update component_index.json

* chore: fix adjust-screan-view click

* chore: same force issue as adjust-screen-view

* chore: playwright pass 2

* revert package-lock

* add type to langflow_modules

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* Handle TypeError in class-based serialization

Adds a try-except block to catch TypeError when checking issubclass for objects that are types but not proper classes, such as typing special forms. This prevents serialization errors for generic aliases and similar constructs.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Refactor type handling in field update and serialization

Changed 'new_value' parameter type to str in update_flow_component_field for stricter typing. Simplified exception handling in serialize by removing unnecessary try/except around issubclass checks for class-based Pydantic types.

---------

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

* ci: bump actions/checkout to v6 (#10697)

* feat: Improve OAuth error handling and frontend sync behavior (#10626)

* updates for version comp

* migrate mcp composer fix to main

* migrate mcp composer fix to main

* version constraints

* go back to pydantic 2.11

* remove logging

* directly pin to new version

* add instant feedback on error

* improve callback function behavior ux

* fix tests and mypy issues

* bump mcp composer version

* fixed latest version mcp

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

* revert pydantic changes

* computed models pydantic fix

* [autofix.ci] apply automated fixes

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Hamza Rashid <hzarashid@gmail.com>

* fix: Fix TypeError when LANGFLOW_ENABLE_LOG_RETRIEVAL is enabled (#10681)

* fix serialize issue when LANGFLOW_ENABLE_LOG_RETRIEVAL is true

* add logger tests

* [autofix.ci] apply automated fixes

* add multiple buffer checker

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

* use serialize instead

* [autofix.ci] apply automated fixes

---------

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

* docs: update component documentation links to individual pages

* Revert "docs: update component documentation links to individual pages"

This reverts commit 1da51d4ccba9458506da6ff5b1ab7af23f09c2b6.

* test: catch import errors upfront (#10632)

* Convert to async and ruff-friendly print

* Implement the checking into existing test file itself

* Remove the newly introduced lfx test which is now incorporated into existing tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Run make build_component_index after merging latest from main

* [autofix.ci] apply automated fixes

* Revert "docs: update component documentation links to individual pages"

This reverts commit 1da51d4ccba9458506da6ff5b1ab7af23f09c2b6.

* build component index after origin/main merge into feature branch

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Madhavan <cxo@ibm.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>

* feat: Support appending files when saving (#10631)

* feat: Support appending files when saving

* Update save_file.py

* Update News Aggregator.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update save_file.py

* Update save_file.py

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes

* Overwrite existing file if append mode is true

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_mcp_servers_file.py

* [autofix.ci] apply automated fixes

* Update save_file.py

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

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

* chore: Update pip and setuptools version constraints (#10708)

* update setuptools and pip

* remove from lfx pypoetry

* feat: Display node name in download error message (#10707)

add component name on download error

* feat: Add Message Support for Input of Loop Component (#10160)

* feat: Add support for messages in Loop Component

* feat: Add Message support for input of Loop Component

* [autofix.ci] apply automated fixes

* Update src/frontend/src/utils/reactflowUtils.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* [autofix.ci] apply automated fixes

* More cleanup of looping

* Fix ruff errors

* [autofix.ci] apply automated fixes

* Update loop-component.spec.ts

* Make loop types generic

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Fixes from gabriel review

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* fix: Support tool mode in File Component properly (#10520)

* Support tool mode in dynamic outputs

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Tool mode and ruff fixes

* Template updates

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_mcp_servers_file.py

* Revert "Update test_mcp_servers_file.py"

This reverts commit 25f24d0d8aa5a7c95c913f862d86513749195ad1.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add possibility for the agent to access the processed output file

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>

* docs: include regex for sanitized input types (#10712)

include-regex-for-sanitized-input

* feat: Version 1.2 - comprehensive database migration guidelines using… (#10519)

* feat: Version 1.2 - comprehensive database migration guidelines using the Expand-Contract pattern

* Update src/backend/base/langflow/alembic/DB-MIGRATION-GUIDE.MD

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: Cleanup text and typos

* feat: Implement migration validation workflow and add migration validator scripts

* Update src/backend/base/langflow/alembic/migration_validator.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/backend/base/langflow/alembic/migration_validator.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/backend/base/langflow/alembic/migration_validator.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: moved the test_migrations directory to under tests

* feat: Added migration validator to pre-commit check.

* fix: improved test performance.

* fix: optimized attribute resolution in migration validator

* feat: add comprehensive tests for migration validator and guidelines

* fix: Lint is complaining about shebang declared but not being used.

* fix: Shebang reinstated.

* Update src/backend/base/langflow/alembic/DB-MIGRATION-GUIDE.MD

Co-authored-by: Copilot <175728472+Copilot@users.…
SaravanakumarR2018 pushed a commit to SaravanakumarR2018/DragDropAIAgentBuilder that referenced this pull request Jan 22, 2026
* docs: Improve README Quickstart section and add dark mode logo (#10358)

* Improve README Quickstart section and reorganize installation options

- Add prominent Desktop download section before Quickstart
- Remove $ symbols from shell commands to fix copy button functionality
- Add clear 'Run from source' option with make run_cli for developers
- Improve Docker installation instructions with usage details
- Move security warnings to after installation options for better flow
- Remove redundant star/issues badges

These changes address common user confusion when trying to run Langflow,
especially for developers who clone the repo first and then struggle with
the package installation instructions.

🤖 Generated with [Claude Code](https://claude.ai/code)



* Add dark mode logo support

- Added picture element for automatic dark/light mode logo switching
- Dark mode shows blue background logo, light mode shows black logo

🤖 Generated with [Claude Code](https://claude.ai/code)



* Final README improvements

- Made 'Other install options' a proper section with emoji
- Updated deployment section with rocket emoji
- Fixed single-line formatting for subsections
- Added new star animation gif
- Changed 'tool' to 'platform' in description

* Improve Desktop download section messaging

- Made text more concise and action-oriented
- Changed download emoji from arrow to inbox
- Removed redundant 'built-in' and bold formatting
- Cleaner parenthetical for OS availability

* Revise README for Langflow Desktop and deployment info

Updated sections for clarity and added details about Langflow Desktop and deployment options.

* Revert star gif to GitHub attachment URL

Testing if local file path issue or markdown previewer issue

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* Apply suggestion from @mendonk

* readme-changes

* Apply suggestion from @mendonk

---------





* fix: require active user for monitor endpoints (#10568)

Require active user for monitor endpoints

* refactor: Reorganize sidebar categories (#10180)

* Reorganize sidebar categories

* finishing touches

* templates

* ruff check fix

* merge fix

* filter out knowledge when ff'd off

* BE tests

* [autofix.ci] apply automated fixes

* more test fixes

* integration test fix

* Unit tests

* more test fixes

* reorg tests

* [autofix.ci] apply automated fixes

* update ui tests

* [autofix.ci] apply automated fixes

* mcp and playwright tests

* [autofix.ci] apply automated fixes

* BE test fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* test fix

---------




* fix(agent): handle missing message id for disconnected agents (#10560)

* fix(agent): handle missing message id for disconnected agents

* [autofix.ci] apply automated fixes

* will this update comp index

* comp index

---------




* fix: Langflow logo on home page when s3 is enabled  (#10352)

* fixed and added tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* fix(playground): preserve timer start time when playground is reopened (#10516)

* Fix playground timer

* add jest unit tests

---------



* fix: MCP component auto reset issue in non Tool Mode (#10440)

* Optimize tool dropdown handling and output processing

Improves logic for updating tool dropdown options by checking if the server has changed and whether tool mode is active, reducing unnecessary updates. Adds a process_output_item method to parse tool output as JSON when appropriate, enhancing output handling.

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

* Update component_index.json

* Update Nvidia Remix.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* use cache enabled even for the no tool mode

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update Nvidia Remix.json

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

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: add selector to let dropdown load

add Select a tool selector to let dropdown load before interacting

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update MCPToolsComponent code and metadata

Updated the code and code_hash for MCPToolsComponent in Nvidia Remix starter project and synchronized the component_index.json to reflect the latest code and metadata. This ensures consistency and includes recent improvements or fixes to the MCPToolsComponent implementation.

---------




* fix: Switch to browser-compatible MathJax import (#10563)

add browser support to rehype package build

* feat: patch icons to support dark theme and Composio Slack component fix. (#10577)

* feat: add Composio Components & logos tweak

* Display name consistency

* update init

* fix: format

* fix: suggested changes by Mike

* feat: add Composio Components & logos tweak

* Display name consistency

* update init

* fix: format

* fix: suggested changes by Mike

* updates components JSON

* fix: format

* updates components JSON

* Remove unnecessary blank lines in __init__.py

Cleaned up formatting by deleting extra blank lines in the _dynamic_imports dictionary for improved readability.

* Update component_index.json

* Update component_index.json

* Update component_index.json

* Update component_index.json

* fix: Slack component issue

* fix: icons update to support dark theme

* fix: Klaviyo imports

* Update component_index.json

---------



* feat: add toolkit_versions and updated composio and composio_langchain versions. (#10578)

* feat: added toolkit versions and updated composio and composio_langchain packages

* fix: format

---------



* fix: marked required fields for fields with MultilineInput input types. (#10579)

fix: marked required fields with MultilineInputs



* feat: replaced initiate method with link method. (#10580)

feat: replaced .initiate() with .link()



* feat: Add ALTK Agent with tool validation and comprehensive tests (#10587)

* Add ALTK Agent with tool validation and comprehensive tests

- Added agent-lifecycle-toolkit~=0.4.1 dependency to pyproject.toml
- Implemented ALTKBaseAgent with comprehensive error handling and tool validation
- Added ALTKToolWrappers for SPARC integration and tool execution safety
- Created ALTK Agent component with proper LangChain integration
- Added comprehensive test suite covering tool validation, conversation context, and edge cases
- Fixed docstring formatting to comply with ruff linting standards

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* minor fix to execute_tool that was left out.

* Fixes following coderabbitai comments.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add custom message to dict conversion in ValidatedTool

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Add Notion integration components to index

Updated component_index.json to include new Notion integration components: AddContentToPage, NotionDatabaseProperties, NotionListPages, NotionPageContent, NotionPageCreator, NotionPageUpdate, and NotionSearch. These components provide functionality for interacting with Notion databases and pages, including querying, creating, updating, and retrieving content.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------





* feat: Add MCP server config sanitization for sensitive data (#10552)

add clean mcp config function

* feat: Implement dynamic model discovery system (#10523)

* add dynamic model request

* add description to groq

* add cache folder to store cache models json

* change git ignore description

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add comprehensive tests for Groq dynamic model discovery

- Add 101 unit tests covering success, error, and edge cases
- Test model discovery, caching, tool calling detection
- Test fallback models and backward compatibility
- Add support for real GROQ_API_KEY from environment
- Fix all lint errors and improve code quality

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix Python 3.10 compatibility - replace UTC with timezone.utc

Python 3.10 doesn't have datetime.UTC, need to use timezone.utc instead

* fix pytest hook signature - use config instead of _config

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* fix conftest config.py

* fix timezone UTC on tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------



* feat: remove `code` from Transactions to reduce clutter in logs (#10400)

* refactor: remove code from transaction model inputs

* refactor: remove code from transaction model inputs

* tests: add tests to make sure code is not added to transactions data

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: improve code removal from logs with explicit dict copying

---------




* refactor(service_manager): implement lazy initalization of service manager (#8828)

* refactor: implement lazy initialization for ServiceManager with thread safety

- Replaced direct instantiation of ServiceManager with a lazy initialization approach using a global variable and threading lock.
- Updated the public API to expose `get_service_manager` for retrieving the singleton instance.
- Ensured thread-safe access to the ServiceManager instance to prevent issues during module import.

* refactor: update service manager imports to use get_service_manager

- Replaced direct imports of service_manager with get_service_manager in multiple files to ensure consistent access to the singleton instance.
- This change enhances code clarity and maintains the lazy initialization approach for the ServiceManager.

* refactor: remove deprecated Enhanced ServiceManager implementation

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* refactor: implement thread-safe lazy initialization for ServiceManager

* feat: add filelock dependency in lfx

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* feat: new release for cuga component (#10591)

* feat: new release of cuga

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix: address review

* fix: fixed more bugs

* fix: build component index

* [autofix.ci] apply automated fixes

* fix: update test

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

---------



* ci: upgrade playwright to 1.56 and fix second time imports (#10284)

* chore: update Playwright and related dependencies to version 1.56.0 in package.json and package-lock.json

* refactor: update addLegacyComponents function to improve selector checks

- Replaced the expect assertion with a waitForSelector call to ensure the sidebar legacy switch is checked, enhancing reliability in tests.
- Updated import statement for Page from "@playwright/test" for consistency with current practices.

* fix playwright imports

* chore: update Playwright version in CI workflow to 1.56.0 for consistency with project dependencies

* refactor: enhance lockFlow and unlockFlow functions for improved visibility checks

- Replaced isVisible calls with waitFor to ensure elements are visible before proceeding, enhancing test reliability.
- Removed unnecessary waitForTimeout calls to streamline the flow execution process.

* test(playwright): add validation for settings menu header text

* refactor(playwright): improve lock flow test with expect assertions

* refactor(playwright): simplify legacy component toggle validation

* feat: adds Component Inputs telemetry (#10254)

* feat: Introduce telemetry tracking for sensitive field types

Added a new set of field types that should not be tracked in telemetry due to their sensitive nature, including PASSWORD, AUTH, FILE, CONNECTION, and MCP. Updated relevant input classes to ensure telemetry tracking is disabled for these sensitive fields, enhancing data privacy and security.

* feat: Enhance telemetry payloads with additional fields and serialization support

Added new fields to the ComponentPayload and ComponentInputsPayload classes, including component_id and component_run_id, to improve telemetry data tracking. Introduced a serialize_input_values function to handle JSON serialization of component input values, ensuring robust handling of input data for telemetry purposes.

* feat: Implement telemetry input tracking and caching

Added functionality to track and cache telemetry input values within the Component class. Introduced a method to determine if inputs should be tracked based on sensitivity and an accessor for retrieving cached telemetry data, enhancing the robustness of telemetry handling.

* feat: Add logging for component input telemetry

Introduced a new method, log_package_component_inputs, to the TelemetryService for logging telemetry data related to component inputs. This enhancement improves the tracking capabilities of the telemetry system, allowing for more detailed insights into component interactions.

* feat: Enhance telemetry logging for component execution

Added functionality to log component input telemetry both during successful execution and error cases. Introduced a unique component_run_id for each execution to improve tracking. This update ensures comprehensive telemetry data collection, enhancing the robustness of the telemetry system.

* feat: Extend telemetry payload tests and enhance serialization

Added tests for the new component_id and component_run_id fields in ComponentPayload and ComponentInputsPayload classes. Introduced a new test suite for ComponentInputTelemetry, covering serialization of various data types and handling of edge cases. This update improves the robustness and coverage of telemetry data handling in the system.

* fix: Update default telemetry tracking behavior in BaseInputMixin

Changed the default value of track_in_telemetry from True to False in the BaseInputMixin class. Updated documentation to clarify that telemetry tracking is now opt-in and can be explicitly enabled for individual input types, enhancing data privacy and control.

* fix: Update telemetry tracking defaults for input types

Modified the default value of `track_in_telemetry` for various input classes to enhance data privacy. Regular inputs now default to False, while safe inputs like `IntInput` and `BoolInput` default to True, ensuring explicit opt-in for telemetry tracking. Updated related tests to reflect these changes.

* feat: add chunk_index and total_chunks fields to ComponentInputsPayload

This commit adds two new optional fields to ComponentInputsPayload:
- chunk_index: Index of this chunk in a split payload sequence
- total_chunks: Total number of chunks in the split sequence

Both fields default to None and use camelCase aliases for serialization.
This is Task 1 of the telemetry query parameter splitting implementation.

Tests included:
- Verify fields exist and can be set
- Verify camelCase serialization aliases work correctly
- Verify fields default to None when not provided

Generated with Claude Code (https://claude.com/claude-code)



* refactor: update ComponentInputsPayload to support automatic splitting of oversized inputs

This commit enhances the ComponentInputsPayload class by implementing functionality to automatically split input values into multiple chunks if they exceed the maximum URL size limit. Key changes include:

- Added methods for calculating URL size, truncating oversized values, and splitting payloads.
- Updated component_inputs field to accept a dictionary instead of a string for better handling of input values.
- Improved documentation for the ComponentInputsPayload class to reflect the new splitting behavior and usage examples.

These changes aim to improve telemetry data handling and ensure compliance with URL length restrictions.

* refactor: enhance log_package_component_inputs to handle oversized payloads

This commit updates the log_package_component_inputs method in the TelemetryService class to split component input payloads into multiple requests if they exceed the maximum URL size limit. Key changes include:

- Added logic to split the payload using the new split_if_needed method.
- Each chunk is queued separately for telemetry logging.

These improvements ensure better handling of telemetry data while adhering to URL length restrictions.

* refactor: centralize maximum telemetry URL size constant

This commit introduces a centralized constant, MAX_TELEMETRY_URL_SIZE, to define the maximum URL length for telemetry GET requests. Key changes include:

- Added MAX_TELEMETRY_URL_SIZE constant to schema.py for better maintainability.
- Updated split_if_needed method in ComponentInputsPayload to use the new constant instead of a hardcoded value.
- Adjusted the TelemetryService to reference the centralized constant for URL size limits.

These changes enhance code clarity and ensure consistent handling of URL size limits across the telemetry service.

* refactor: update ComponentInputsPayload tests to use dictionary inputs

This commit modifies the tests for ComponentInputsPayload to utilize a dictionary for component inputs instead of a serialized JSON string. Key changes include:

- Renamed the test method to reflect the new input type.
- Removed unnecessary serialization steps and assertions related to JSON strings.
- Added assertions to verify the correct handling of dictionary inputs.

These changes streamline the testing process and improve clarity in how component inputs are represented.

* test: add integration tests for telemetry service payload splitting

This commit introduces integration tests for the TelemetryService to verify its handling of large and small payloads. Key changes include:

- Added tests to ensure large payloads are split into multiple chunks and queued correctly.
- Implemented a test to confirm that small payloads are not split and result in a single queued event.
- Created a mock settings service for testing purposes.

These tests enhance the reliability of the telemetry service by ensuring proper payload management.

* test: enhance ComponentInputsPayload tests with additional scenarios

This commit expands the test suite for ComponentInputsPayload by adding various scenarios to ensure robust handling of input payloads. Key changes include:

- Introduced tests for calculating URL size, ensuring it returns a positive integer and accounts for encoding.
- Added tests to verify the splitting logic for large payloads, including checks for chunk metadata and preservation of fixed fields.
- Implemented property-based tests using Hypothesis to validate that all chunks respect the maximum URL size and preserve original data.

These enhancements improve the reliability and coverage of the ComponentInputsPayload tests, ensuring proper functionality under various conditions.

* [autofix.ci] apply automated fixes

* optimize query param encoding



* refactor: extract telemetry logging logic into a separate function

This commit introduces a new function, _log_component_input_telemetry, to centralize the logic for logging component input telemetry. The function is called in two places within the generate_flow_events function, improving code readability and maintainability by reducing duplication. This change enhances the clarity of telemetry handling in the flow generation process.

* refactor: optimize truncation logic in ComponentInputsPayload

This commit refines the truncation logic for input values in the ComponentInputsPayload class. The previous binary search method for string values has been simplified, allowing for direct truncation of both string and non-string values. This change enhances code clarity and maintains functionality while ensuring optimal handling of oversized inputs.

* refactor: update telemetry tracking logic to respect opt-in flag

This commit modifies the telemetry tracking logic in the Component class to change the default behavior of the `track_in_telemetry` attribute from True to False. This adjustment enhances user privacy by requiring explicit consent for tracking input objects in telemetry. The change ensures that sensitive field types are still auto-excluded from tracking, maintaining the integrity of the telemetry data.

* refactor: update tests to use dictionary format for component inputs

This commit modifies the integration tests for telemetry payload validation and component input telemetry to utilize dictionaries for component inputs instead of serialized JSON strings. Key changes include:

- Updated assertions to compare dictionary inputs directly.
- Enhanced clarity and maintainability of the test cases by removing unnecessary serialization steps.

These changes improve the representation of component inputs in tests, aligning with recent refactoring efforts.

* [autofix.ci] apply automated fixes

* refactor: specify type for current_chunk_inputs in ComponentInputsPayload

This commit updates the type annotation for the current_chunk_inputs variable in the ComponentInputsPayload class to explicitly define it as a dictionary. This change enhances code clarity and maintainability by providing better type information for developers working with the code.

* test: add component_id to ComponentPayload tests

This commit enhances the test cases for the ComponentPayload class by adding a component_id parameter to various initialization tests. The updates ensure that the component_id is properly tested across different scenarios, including valid parameters, error messages, and edge cases. This change improves the robustness of the tests and aligns with recent updates to the ComponentPayload structure.

* [autofix.ci] apply automated fixes

* feat: add component_id to ComponentPayload in build_vertex function

* fix: update MAX_TELEMETRY_URL_SIZE to 2048 and adjust related tests

This commit increases the maximum URL size for telemetry GET requests from 2000 to 2048 bytes to align with Scarf's specifications. Corresponding test assertions have been updated to reference the new constant, ensuring consistency across the codebase.

* [autofix.ci] apply automated fixes

* feat(telemetry): add track_in_telemetry field to starter project configurations

* refactor(telemetry): remove unused blank line in test imports

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update starter templates

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

---------





* fix(telemetry): resolve cyclic import in telemetry service (#10598)

* fix(telemetry): resolve cyclic import by moving get_email_model

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------



* feat: Add gpt-5.1 model to Language models (#10590)

* Add gpt-5.1 model to starter projects

Added 'gpt-5.1' to the list of available models in all starter project JSON files to support the new model version. This update ensures users can select gpt-5.1 in agent configurations.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update component_index.json

* [autofix.ci] apply automated fixes

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* fix: Use the proper Embeddings import for Qdrant vector store (#10613)

* Use the proper Embeddings import for Qdrant vector store

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------




* fix: Ensure split text test is more robust (#10622)

* fix: Ensure split text test is more robust

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* docs: security notice (#10555)

* docs-security-notice

* Apply suggestions from code review



* code-review

* link-to-security-bulletin

* Apply suggestions from code review



---------



* fix: use issubclass in the pool creation (#10232)

* use issubclass in the pool creation

* [autofix.ci] apply automated fixes

* add poolclass pytests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------





* docs: OpenAPI spec version upgraded from 1.6.5 to 1.6.8 (#10627)




* chore: Fix indentation on bundles-docling.mdx (#10640)

* feat: make it possible to load graphs using `get_graph` function in scripts (#9913)

* feat: Enhance graph loading functionality to support async retrieval

- Updated `load_graph_from_script` to be an async function, allowing for the retrieval of the graph via an async `get_graph` function if available.
- Implemented fallback to the existing `graph` variable for backward compatibility.
- Enhanced `find_graph_variable` to identify both `get_graph` function definitions and `graph` variable assignments, improving flexibility in script handling.

* feat: Update load_graph_from_script to support async graph retrieval

- Refactored `load_graph_from_script` to be an async function, enabling the use of an async `get_graph` function for graph retrieval.
- Implemented a fallback mechanism to access the `graph` variable for backward compatibility.
- Enhanced error handling to provide clearer messages when neither `graph` nor `get_graph()` is found in the script.

* feat: Refactor simple_agent.py to support async graph creation

- Introduced an async `get_graph` function to handle the initialization of components and graph creation without blocking.
- Updated the logging configuration and component setup to be part of the async function, improving the overall flow and responsiveness.
- Enhanced documentation for the `get_graph` function to clarify its purpose and return type.

* feat: Update serve_command and run functions to support async graph loading

- Refactored `serve_command` to be an async function using `syncify`, allowing for non-blocking execution.
- Updated calls to `load_graph_from_path` and `load_graph_from_script` within `serve_command` and `run` to await their results, enhancing performance and responsiveness.
- Improved overall async handling in the CLI commands for better integration with async workflows.

* feat: Refactor load_graph_from_path to support async execution

- Changed `load_graph_from_path` to an async function, enabling non-blocking graph loading.
- Updated the call to `load_graph_from_script` to use await, improving performance during graph retrieval.
- Enhanced the overall async handling in the CLI for better integration with async workflows.

* feat: Enhance async handling in simple_agent and related tests

- Updated `get_graph` function in `simple_agent.py` to utilize async component initialization for improved responsiveness.
- Modified test cases in `test_simple_agent_in_lfx_run.py` to validate the async behavior of `get_graph`.
- Refactored various test functions across multiple files to support async execution, ensuring compatibility with the new async workflows.
- Improved documentation for async functions to clarify their purpose and usage.

* docs: Implement async get_graph function for improved component initialization

- Introduced an async `get_graph` function in `README.md` to facilitate non-blocking component initialization.
- Enhanced the logging configuration and component setup within the async function, ensuring a smoother flow.
- Updated documentation to clarify the purpose and return type of the `get_graph` function, aligning with the async handling improvements.

* refactor: reorder imports in simple_agent test file

* style: reorder imports in simple_agent test file

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* feat: Add custom download node function (#10659)

* add custom download node

* use download node

* feat: Add type check before issubclass in service discovery (#10636)

* Add type check before issubclass in service discovery

Added an isinstance(obj, type) check before issubclass to prevent errors when inspecting module members for Service and ServiceFactory subclasses. This improves robustness when dynamically importing services and factories.

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

---------



* docs: readme update  (#10657)

* dep-management

* are

* fix: minor redesign of guardrails for disabling components in LF Astra cloud (#10662)

* create cloud validation util file

disable local_db if in astra cloud

disable split_video if in astra cloud

disable video_file component if in astra cloud

ruff (video_file.py)

correct the error message in video_file.py

disable mem0 and composio in astra cloud

update astra disable component util fn name to be more descriptive

add tests for disabling components

minor docs patch

remove component disable check in places that interact with building the component index

replace init test with execution in composio unit test suite

remove dotenv from validate_cloud

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* fix: prevent autofix workflow loop from bot commits (#10673)

fix(ci): prevent autofix workflow loop from bot commits

* fix(lfx-dev): reload specific modules while preserving index cache (#10629)

* fix(lfx-dev): reload specific modules while preserving index cache

* refactor: restructure component loading with strategy pattern for dev mode

* fix: improve cache loading error handling in component index loading

* refactor: reorganize CUGA and ALTK components into single-element bundles (#10671)

* moved cuga and altk

* reverted starter templates

* [autofix.ci] apply automated fixes

* updated import

* [autofix.ci] apply automated fixes

* revert starter templates

* fixed some python tests

* fix: update import assertions for backward compatibility in dynamic import tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: update import paths for set_advanced_true and get_parent_agent_inputs in test_helper_functions

---------



* feat: fix cuga component with new release (#10646)

* bufix(cuga_agent): fixed no output chat bug

* fix: remove structured output feature

* fix: stablize component

* fix: chat output component not working

* fix: add strategy flag

* fix: update cuga version

* feat: add component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update some imports to use lfx

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: update review

* chore: build component index

* chore: build component

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fix(cuga): ensure message id exists when not connected to output

* fix: component result id on chat output

* chore: fix component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Revert test_agent_component.py back to origin/main

* fix: remove unwanted tests

* chore: new build index

* [autofix.ci] apply automated fixes

* fix: update test

* chore: build index

* [autofix.ci] apply automated fixes

* fix: update package of cuga

* chore: build component index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* update comp index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* trying comp index again?

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

---------





* fix: Add IBM watsonx.ai support to EmbeddingModel (#10677)

* Add IBM watsonx.ai support to EmbeddingModel

Added IBM watsonx.ai as a supported provider in EmbeddingModelComponent, updated dependencies and code to integrate ibm_watsonx_ai and pydantic. Updated starter project and component index metadata to reflect new dependencies and code changes.

* update watsonx default models

* update index

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_embedding_model_component.py

* Update component_index.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* fix: rename LLM router to LLM selector (#10650)

* fix: rename LLM router to LLM selector

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: rename LLMRouter component to LLMSelector

* fix: resolved merge conflicts

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolved merge conflicts

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: refactor file name

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolve merge conflict

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* fix: resolve merge conflict

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------



* Fix: add environment variable flag to log alembic to stdout (#10620)

* fix: add flag to log alembic to stdout

fix indentation

refine docs

mypy (db service.py)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* fix: move sql database to data source category (#10651)

* fix: move sql database to data source category

* [autofix.ci] apply automated fixes

* fix: resolve merge conflict

---------



* fix: fixes YouTube Icon name in lazyloadingMapping (#10628)

* fix lazyloadingMapping component name

* fix: merge conflicts

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes

* fix: resolve merge conflict

---------



* Fix: rename sidebar category flow controls to flow control (#10649)

* rename sidebar category flow controls to flow control

* fix: addressed PR comments

* fix: expose logger functions at module level for backwards comp (#10670)

* Expose logger functions at module level for backwards comp

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

---------



* feat: agentic UX (#10567)

* Add empty __init__.py files for agentic modules

Created empty __init__.py files in agentic, core, tools, and utils directories to initialize them as Python packages.

* Add agentic template search utilities and tests

Introduces a new agentic utilities module for Langflow, including template search, tag extraction, and template count functions. Adds a README, demo script, and comprehensive unit tests for template search functionality.

* Add Langflow Agentic MCP server with FastMCP tools

Introduces a new MCP (Model Context Protocol) server for Langflow agentic tools using FastMCP. Adds server, CLI, example usage, tests, and comprehensive documentation. Exposes four MCP tools: search_templates, get_template, list_all_tags, and count_templates, enabling AI assistants to query and filter Langflow templates programmatically.

* Handle unparameterized list types in schema inputs

Adds support for unparameterized list annotations by treating them as lists of strings when converting schemas to Langflow inputs. This ensures nullable array schemas without explicit item types are handled gracefully.

* Refactor search_templates to simplify parameters

Removed the 'tags' parameter from the search_templates function and set a default value for 'fields'. Updated the call to list_templates to match the new signature, streamlining template search functionality.

* Add output item processing for tool results

Introduced process_output_item to handle tool output items, attempting to parse text-type items as JSON. This improves downstream handling of tool outputs by converting JSON strings to dictionaries when possible.

* Refactor knowledge base path initialization

Replaces direct settings access with a lazy-loading function for the knowledge bases root path in Knowledge Ingestion and Knowledge Retrieval starter projects. This improves reliability and consistency when accessing the knowledge base directory, and updates all usages to the new helper function.

* Update component_index.json

* Add IBM watsonx.ai support to starter projects

Introduces IBM watsonx.ai as a selectable model provider in multiple starter project JSONs. Adds new input fields for 'base_url', 'project_id', and 'max_output_tokens' to support IBM watsonx.ai integration. Updates agent component code to handle new provider and its required parameters.

* Add Ollama to supported LLM providers in starter projects

Ollama has been added as a supported provider alongside Anthropic, Google Generative AI, OpenAI, and IBM watsonx.ai in all starter project JSON files. This expands the available options for LLM integration in initial setup templates.

* Update Ollama model input constants and logic

Refactored model_input_constants.py to update the OLLAMA_MODEL_INPUTS and OLLAMA_MODEL_INPUTS_MAP. Modified ollama.py to use the new input mapping and improved input handling for Ollama components.

* Add flow creation from template MCP tool

Introduces a new MCP tool for creating flows from starter templates in Langflow Agentic. Adds the utility function `create_flow_from_template_and_get_link` and exposes it via the FastMCP server, allowing users to create flows by template id and receive a UI link. Updates imports and documentation accordingly.

* Add component search utilities and MCP tools to server

Introduces new component search and retrieval tools to the MCP server, including endpoints for searching, listing, and counting components. Adds support functions in support.py for data normalization and a new component_search.py utility module. Updates the Nvidia Remix starter project to use the latest MCPToolsComponent code.

* Add flow graph visualization utilities

Introduces async utility functions for generating ASCII and text representations of flow graphs, as well as metadata summaries. These utilities support fetching flows by ID or name, error handling, and integration with Langflow's graph and logging modules.

* Add flow component operations utilities and MCP tools

Introduces flow component management utilities in `flow_component.py` for retrieving, updating, and listing component field values. Exposes new MCP tools in `server.py` for accessing component details, field values, updating fields, and listing all fields within a flow component.

* Add SystemMessageGen flow and update MCPTools

Introduces SystemMessageGen.json flow for agentic system message generation and updates MCPTools component logic in flow_component.py to support new flow structure and tool handling.

* feat: init aiButton

create an aiButton that opens the prompt modal for demoing
add multiinput mixin

* Update component_index.json

* Refactor SystemMessageGen flow and remove unused init files

Updated SystemMessageGen.json to support custom instructions, OpenAI model configuration, and improved agent settings. Removed unused __init__.py files from agentic, core, tools, and utils directories to clean up the codebase.

* update to the mcp component

* Add verify_ssl option to MCPToolsComponent

Introduces a 'verify_ssl' boolean input to MCPToolsComponent for controlling SSL certificate verification in HTTPS connections. The option is added to the server config if not present, allowing users to disable verification for development or testing with self-signed certificates.

* Optimize tool dropdown handling and output processing

Improves logic for updating tool dropdown options by checking if the server has changed and whether tool mode is active, reducing unnecessary updates. Adds a process_output_item method to parse tool output as JSON when appropriate, enhancing output handling.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* feat: init onclick assistant prompt generation

first pass at on button click generate input and auto fill a field

* Replace MCPTools with Prompt Template in SystemMessageGen flow

Updated the SystemMessageGen.json flow to use the Prompt Template and Parser components instead of MCPTools. Adjusted edges, nodes, and component configurations to reflect the new prompt-based workflow, removing tool selection and execution logic in favor of prompt generation and parsing.

* Update SystemMessageGen flow and frontend dependencies

Refactored edge connections and metadata in SystemMessageGen.json to improve flow logic and updated endpoint name. Added new optional and peer dependencies to package-lock.json, including @mapbox/node-pre-gyp and related packages, to support canvas and other modules.

* Update user authentication in simplified_run_flow endpoint

Replaces the dependency on api_key_security with CurrentActiveUser for the api_key_user parameter in the simplified_run_flow endpoint. This change is part of a TODO to create a new endpoint and may affect how user authentication is handled.

* feat: hook everything up and have onclick prompt

hook up commit

* Add auto-configuration for Agentic MCP server

Introduces utilities and startup logic to automatically configure the Langflow Agentic MCP server for all users when the agentic experience is enabled. Adds a new settings flag `agentic_experience` to control this feature, and updates the main server startup to trigger configuration. This enables agentic tools for flow/component operations, template search, and graph visualization in MCP clients.

* Enable agentic MCP server and improve initialization

Set agentic_experience to True by default in settings. Refactor agentic MCP server initialization in main.py to run in the background with a delay and retry logic, improving startup reliability. Update function calls to use 'current_user' instead of 'user' in agentic_mcp.py for consistency.

* Update user authentication in simplified_run_flow

Modified the api_key_user parameter to accept either CurrentActiveUser or UserRead from api_key_security, supporting both Bearer and session authentication methods.

* revert the apikeu_user changes

* test new api endpoint

* Refactor agent flow and update component inputs

Updated SystemMessageGen.json to refactor edge connections and node IDs for agentic flow. Added 'base_url' as a required input, enabled 'ai_enabled' for agent description, and replaced static memory input handling with dynamic retrieval via get_base_inputs(). Also improved tool callback setup and updated code hash and last_updated metadata.

* Improve agentic flow creation and updating logic

Enhances the agentic flow setup to extract flow_id and endpoint_name from JSON, update existing flows by ID or endpoint_name, and create new flows if they don't exist. Adds detailed logging and ensures flows are up-to-date in the user's Langflow Assistant folder.

* chore: aibutton clean up

* chore: add assistant store

* Update SystemMessageGen.json

* Update agentic_mcp.py

* Update component_index.json

* Fix agent input extraction from Message objects

Agents now correctly extract and use the text content from Message objects, rather than passing the entire object or its string representation. This resolves issues where agents received verbose message representations instead of just the intended string input, and includes improved handling for multimodal content. Corresponding unit and integration tests have been added to verify this behavior for both OpenAI and Anthropic agents.

* Add TemplateAssistant Langflow flow definition

Introduces TemplateAssistant.json, a comprehensive Langflow flow configuration for agentic workflows. This flow integrates AstraDB, MCP Tools, and user input/output nodes, enabling document ingestion, search, and tool orchestration within the Langflow backend.

* Improve MCPToolsComponent server/tool config refresh

Refactored MCPToolsComponent to better handle tool and server config refreshes, especially when the MCP server changes. Added logic to avoid unnecessary clearing of tool inputs and options, and improved caching and UI update behavior for tool selection. Also updated related flow and starter project JSON files to reflect these changes.

* auto add Global Variables for Agentic Experience

* chore: clean up and get button working again

* cleanup .md

* fix:ruff, Refactor agentic utils and improve error handling

Introduces shared default field lists for template/component search, refactors exception handling to use logger and add finally/else blocks, and improves type hinting with TYPE_CHECKING. Updates file opening to use Path objects, enhances error logging in template search, and removes the unused test_template_search.py file.

* fix:ruff Expand exception handling in agentic MCP utilities

Broadened exception handling in agentic MCP server and variable management functions to catch specific errors such as HTTPException, SQLAlchemyError, and common system exceptions. This improves robustness and error logging during server configuration, removal, and variable initialization.

* aka-clean-up-1

* Remove duplicate process_output_item method

Deleted two redundant definitions of the process_output_item method from MCPToolsComponent to clean up the code and prevent confusion.

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

* [autofix.ci] apply automated fixes

* Refactor service usage and improve project deletion logging

Refactored login API to reuse a single settings service instance. Enhanced logging and error messaging when attempting to delete the Langflow Assistant folder. Minor variable usage cleanup in agentic flows setup and agent component test.

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update test_template_search.py

* Handle specific exceptions in agentic flow loading

Updated the exception handling in load_agentic_flows to catch only OSError and orjson.JSONDecodeError instead of all exceptions, improving error specificity and logging.

* Update component_index.json

* [autofix.ci] apply automated fixes

* revert loading setting service

* Update login.py

* Update SystemMessageGen.json

* Update TemplateAssistant.json

* [autofix.ci] apply automated fixes

* Update constants.py

* chore: seperate templateassistant and sysmessgen

seperate templateassistant and sysmessgen frontend queries

* chore: add header feature flag

* use feature flag for all ui

* [autofix.ci] apply automated fixes

* package-lcok update

* [autofix.ci] apply automated fixes

* chore: LANGFLOW_AGENTIC_EXPERIENCE fe ff name

* Update login.py

* lint fix

* [autofix.ci] apply automated fixes

* Update component_index.json

* chore: fix adjust-screan-view click

* chore: same force issue as adjust-screen-view

* chore: playwright pass 2

* revert package-lock

* add type to langflow_modules

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* Handle TypeError in class-based serialization

Adds a try-except block to catch TypeError when checking issubclass for objects that are types but not proper classes, such as typing special forms. This prevents serialization errors for generic aliases and similar constructs.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Refactor type handling in field update and serialization

Changed 'new_value' parameter type to str in update_flow_component_field for stricter typing. Simplified exception handling in serialize by removing unnecessary try/except around issubclass checks for class-based Pydantic types.

---------




* ci: bump actions/checkout to v6 (#10697)

* feat: Improve OAuth error handling and frontend sync behavior (#10626)

* updates for version comp

* migrate mcp composer fix to main

* migrate mcp composer fix to main

* version constraints

* go back to pydantic 2.11

* remove logging

* directly pin to new version

* add instant feedback on error

* improve callback function behavior ux

* fix tests and mypy issues

* bump mcp composer version

* fixed latest version mcp

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

* revert pydantic changes

* computed models pydantic fix

* [autofix.ci] apply automated fixes

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------





* fix: Fix TypeError when LANGFLOW_ENABLE_LOG_RETRIEVAL is enabled (#10681)

* fix serialize issue when LANGFLOW_ENABLE_LOG_RETRIEVAL is true

* add logger tests

* [autofix.ci] apply automated fixes

* add multiple buffer checker

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

* use serialize instead

* [autofix.ci] apply automated fixes

---------




* docs: update component documentation links to individual pages

* Revert "docs: update component documentation links to individual pages"

This reverts commit 1da51d4ccba9458506da6ff5b1ab7af23f09c2b6.

* test: catch import errors upfront (#10632)

* Convert to async and ruff-friendly print

* Implement the checking into existing test file itself

* Remove the newly introduced lfx test which is now incorporated into existing tests

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Run make build_component_index after merging latest from main

* [autofix.ci] apply automated fixes

* Revert "docs: update component documentation links to individual pages"

This reverts commit 1da51d4ccba9458506da6ff5b1ab7af23f09c2b6.

* build component index after origin/main merge into feature branch

* [autofix.ci] apply automated fixes

---------





* feat: Support appending files when saving (#10631)

* feat: Support appending files when saving

* Update save_file.py

* Update News Aggregator.json

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update save_file.py

* Update save_file.py

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes

* Overwrite existing file if append mode is true

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_mcp_servers_file.py

* [autofix.ci] apply automated fixes

* Update save_file.py

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

* [autofix.ci] apply automated fixes (attempt 3/3)

---------



* chore: Update pip and setuptools version constraints (#10708)

* update setuptools and pip

* remove from lfx pypoetry

* feat: Display node name in download error message (#10707)

add component name on download error

* feat: Add Message Support for Input of Loop Component (#10160)

* feat: Add support for messages in Loop Component

* feat: Add Message support for input of Loop Component

* [autofix.ci] apply automated fixes

* Update src/frontend/src/utils/reactflowUtils.ts



* [autofix.ci] apply automated fixes

* More cleanup of looping

* Fix ruff errors

* [autofix.ci] apply automated fixes

* Update loop-component.spec.ts

* Make loop types generic

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Fixes from gabriel review

* [autofix.ci] apply automated fixes

---------





* fix: Support tool mode in File Component properly (#10520)

* Support tool mode in dynamic outputs

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* Tool mode and ruff fixes

* Template updates

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* Update test_mcp_servers_file.py

* Revert "Update test_mcp_servers_file.py"

This reverts commit 25f24d0d8aa5a7c95c913f862d86513749195ad1.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

* add possibility for the agent to access the processed output file

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

* [autofix.ci] apply automated fixes (attempt 3/3)

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* [autofix.ci] apply automated fixes (attempt 3/3)

---------





* docs: include regex for sanitized input types (#10712)

include-regex-for-sanitized-input

* feat: Version 1.2 - comprehensive database migration guidelines using… (#10519)

* feat: Version 1.2 - comprehensive database migration guidelines using the Expand-Contract pattern

* Update src/backend/base/langflow/alembic/DB-MIGRATION-GUIDE.MD



* fix: Cleanup text and typos

* feat: Implement migration validation workflow and add migration validator scripts

* Update src/backend/base/langflow/alembic/migration_validator.py



* Update src/backend/base/langflow/alembic/migration_validator.py



* Update src/backend/base/langflow/alembic/migration_validator.py



* fix: moved the test_migrations directory to under tests

* feat: Added migration validator to pre-commit check.

* fix: improved test performance.

* fix: optimized attribute resolution in migration validator

* feat: add comprehensive tests for migration validator and guidelines

* fix: Lint is complaining about shebang declared but not being used.

* fix: Shebang reinstated.

* Update src/backend/base/langflow/alembic/DB-MIGRATION-GUIDE.MD

Co-authored-by: Copilot <175728472+Copilot@users.…

Co-authored-by: Rodrigo Nader <rodrigosilvanader@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
Co-authored-by: Mike Fortman <michael.fortman@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: Tejas Kumar <tejas.kumar@datastax.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com>
Co-authored-by: Uday Sidagana <129588963+Uday-sidagana@users.noreply.github.com>
Co-authored-by: Koren Lazar <44236526+korenLazar@users.noreply.github.com>
Co-authored-by: Koren Lazar <koren.lazar@ibm.com>
Co-authored-by: Sami Marreed <sami.marreed@ibm.com>
Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Madhavan <msmygit@users.noreply.github.com>
Co-authored-by: Madhavan <cxo@ibm.com>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
Co-authored-by: ming <itestmycode@gmail.com>
Co-authored-by: Hamza Rashid <74062092+HzaRashid@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
Co-authored-by: Offer Akrabi <offer.akrabi@il.ibm.com>
Co-authored-by: keval shah <kevalvirat@gmail.com>
Co-authored-by: Rej Ect <99460023+rejected-l@users.noreply.github.com>
Co-authored-by: Hamza Rashid <hzarashid@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Carlos Coelho <80289056+carlosrcoelho@users.noreply.github.com>
Co-authored-by: Rico Furtado <hfurtado@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin <criszl@192.168.15.88>
Co-authored-by: Wallgau <46035189+Wallgau@users.noreply.github.com>
Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local>
Co-authored-by: Cristhian Zanforlin <criszl@MacBook-Pro-di-Cristhian.local>
Co-authored-by: Olfa Maslah <olfamaslah@macbookpro.war.can.ibm.com>
Co-authored-by: kiran-kate <40038037+kiran-kate@users.noreply.github.com>
Co-authored-by: olayinkaadelakun <olayinka.adelakun@ibm.com>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@Olayinkas-MacBook-Pro.local>
Co-authored-by: Olayinka Adelakun <olayinkaadelakun@mac.war.can.ibm.com>
Co-authored-by: Joao Paulo Ramos <joao.oramos11@gmail.com>
Co-authored-by: phact <estevezsebastian@gmail.com>
Co-authored-by: Steve Haertel <stevehaertel@users.noreply.github.com>
Co-authored-by: Steve Haertel <shaertel@ca.ibm.com>
Co-authored-by: Simon Steinbeiß <simon.steinbeiss@elfenbeinturm.at>
Co-authored-by: Mike Pawlowski <mpawlow@ca.ibm.com>
Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com>
Co-authored-by: himavarshagoutham <himavarshajan17@gmail.com>
Co-authored-by: Jason Tsay <jsntsay@gmail.com>
Co-authored-by: andifilhohub <115162146+andifilhohub@users.noreply.github.com>
Co-authored-by: Ali Saleh <saleh.a@turing.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: phact <1313220+phact@users.noreply.github.com>
Co-authored-by: avonian <ara@soundstage.fm>
Co-authored-by: Ara Kevonian <avonian@users.noreply.github.com>
Co-authored-by: Adam-Aghili <149833988+Adam-Aghili@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Lucas Democh <ldgoularte@gmail.com>
Co-authored-by: Jason Tsay <jason.tsay@ibm.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Janardan Singh Kavia <janardankavia@ibm.com>
Co-authored-by: Janardan S Kavia <janardanskavia@mac.myfiosgateway.com>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: Rodrigo Nader <rodrigonader@MacBook-Pro-de-Rodrigo.local>
Co-authored-by: Janardan S Kavia <janardanskavia@Janardans-MacBook-Pro.local>
Co-authored-by: Janardan S Kavia <janardanskavia@mac.war.can.ibm.com>
Co-authored-by: Antônio Alexandre Borges Lima <104531655+AntonioABLima@users.noreply.github.com>
Co-authored-by: Antônio Alexandre Borges Lima <antonio@Antonios-MacBook-Pro.local>
Co-authored-by: Debojit Kaushik <Kaushik.debojit@gmail.com>
Co-authored-by: Debojit Kaushik <debojitkaushik@Debojits-MacBook-Pro.local>
Co-authored-by: necrophcodr <necrophcodr@users.noreply.github.com>
Co-authored-by: Phil Nash <philnash@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants