Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
5acfa68
Fix: MCP complex schema and error handling
iymh Dec 10, 2025
07a52a4
chore: normalize component_index.json (fix EOF/BOM)
iymh Dec 10, 2025
082d668
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 10, 2025
3208276
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 10, 2025
1dcf95d
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 10, 2025
9e23925
Merge branch 'upstream/main' into fix/mcp-complex-schema-and-error-ha…
iymh Dec 12, 2025
de65b20
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
2f8028b
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
d5bb8a0
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
272d695
fix(ci): skip autofix run if last commit is by autofix bot to prevent…
iymh Dec 12, 2025
8ad6923
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
eb4f01c
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
31af717
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
1d55ee6
chore: normalize newline at EOF for component_index.json to avoid aut…
iymh Dec 12, 2025
1e54cbf
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
a98fdbe
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
f51daa8
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
500b7af
fix(ci): robustly detect autofix bot commit using event payload
iymh Dec 12, 2025
4e30242
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
ca49fb4
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
da5dba1
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
32aaafc
fix(ci): use robust hybrid check for autofix bot detection
iymh Dec 12, 2025
72847d6
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
6d3655e
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
aceee1b
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
1dd4f1d
fix(ci): harden autofix bot detection by scanning recent history
iymh Dec 12, 2025
f0f6239
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 12, 2025
fb82d9b
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Dec 12, 2025
7bace34
[autofix.ci] apply automated fixes (attempt 3/3)
autofix-ci[bot] Dec 12, 2025
f25396c
fix(ci): increase fetch-depth to 50 for reliable bot detection
iymh Dec 12, 2025
bb6c976
Merge branch 'upstream/main' into fix/mcp-complex-schema-and-error-ha…
iymh Dec 15, 2025
e74787c
[autofix.ci] apply automated fixes
autofix-ci[bot] Dec 15, 2025
f9904a3
Merge branch 'upstream/main' into fix/mcp-complex-schema-and-error-ha…
iymh Dec 16, 2025
dcd8fba
Merge branch 'upstream/main' into fix/mcp-complex-schema-and-error-ha…
iymh Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
python-version: "3.12"
- name: Install deps for coverage check
run: |
python -m pip install --upgrade pip
Expand Down Expand Up @@ -338,6 +338,8 @@ jobs:
name: Test Docker Images
if: ${{ needs.path-filter.outputs.docker == 'true' && needs.set-ci-condition.outputs.should-run-tests == 'true' }}
uses: ./.github/workflows/docker_test.yml
with:
runs-on: ${{ (inputs['runs-on'] && startsWith(format('{0}', inputs['runs-on']), '[') && fromJSON(inputs['runs-on'])) || inputs['runs-on'] || github.event.inputs['runs-on'] || 'ubuntu-latest' }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/docker_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ name: Test Docker images

on:
workflow_call:
inputs:
runs-on:
description: "Runner to use for the tests"
required: false
type: string
default: "ubuntu-latest"
secrets:
DOCKERHUB_USERNAME:
required: true
Expand All @@ -14,9 +20,17 @@ env:

jobs:
test-docker:
runs-on: [self-hosted, linux, ARM64, langflow-ai-arm64-40gb]
runs-on: ${{ (inputs['runs-on'] && startsWith(format('{0}', inputs['runs-on']), '[') && fromJSON(inputs['runs-on'])) || inputs['runs-on'] || github.event.inputs['runs-on'] || 'ubuntu-latest' }}
name: Test docker images
steps:
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force
df -h
- uses: actions/checkout@v6
- name: Set container runtime
run: |
Expand Down
203 changes: 199 additions & 4 deletions .github/workflows/py_autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ on:
env:
PYTHON_VERSION: "3.13"


jobs:
lint:
name: Run Ruff Check and Format
if: ${{ github.actor != 'github-actions[bot]' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 50
- name: "Setup Environment"
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -25,15 +26,81 @@ jobs:
prune-cache: false
- run: uv run ruff check --fix-only .
- run: uv run ruff format . --config pyproject.toml
- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
- name: Check if last commit is from autofix bot
id: check_autofix
run: |
set -euo pipefail

# Try to get author info from the event payload first
LAST_AUTHOR_NAME=""
LAST_AUTHOR_EMAIL=""
if [ -f "$GITHUB_EVENT_PATH" ]; then
LAST_AUTHOR_NAME=$(jq -r '.head_commit.author.name // .pull_request.head.user.login // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
LAST_AUTHOR_EMAIL=$(jq -r '.head_commit.author.email // .pull_request.head.user.email // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
fi

# Fallback to git to ensure we have exact last commit author if payload is incomplete
if [ -z "${LAST_AUTHOR_NAME}" ] || [ "${LAST_AUTHOR_NAME}" = "null" ]; then
LAST_AUTHOR_NAME=$(git log -1 --pretty=format:'%an' || echo "")
fi
if [ -z "${LAST_AUTHOR_EMAIL}" ] || [ "${LAST_AUTHOR_EMAIL}" = "null" ]; then
LAST_AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae' || echo "")
fi

echo "Detected Last Author: $LAST_AUTHOR_NAME <$LAST_AUTHOR_EMAIL>"

# Known bot names / emails used by autofix action (keep these)
BOT_NAMES=("autofix-ci" "autofix-ci[bot]" "autofix-ci[bot]@users.noreply.github.com")
BOT_EMAILS=("autofix-ci[bot]@users.noreply.github.com")

skip_autofix=false

# Explicit name/email checks (existing behavior)
for b in "${BOT_NAMES[@]}"; do
if [[ "$LAST_AUTHOR_NAME" == "$b" ]] || [[ "$LAST_AUTHOR_NAME" == *"$b"* ]]; then
skip_autofix=true
fi
done
for e in "${BOT_EMAILS[@]}"; do
if [[ "$LAST_AUTHOR_EMAIL" == "$e" ]] || [[ "$LAST_AUTHOR_EMAIL" == *"$e"* ]]; then
skip_autofix=true
fi
done

# --- New: scan recent commits for any bot-like author/email or autofix references ---
RECENT_COMMITS=$(git log -n 10 --pretty=format:'%an <%ae> || %s' || true)
echo "Recent commits (last 10):"
echo "$RECENT_COMMITS"

# Patterns to treat as bot/autofix activity; extend as necessary
BOT_PATTERNS='autofix-ci|autofix.ci|autofix-ci\[bot\]|autofix-ci\[bot\]@users.noreply.github.com|autofix|autofix\.ci|github-actions\[bot\]|\[autofix\]'

if echo "$RECENT_COMMITS" | grep -Eiq "$BOT_PATTERNS"; then
echo "Detected recent autofix/bot activity in commit history. Skipping autofix to avoid repeated bot commits."
skip_autofix=true
fi

# Also catch generic [bot] no-reply email authors (covers many GitHub apps)
if echo "$RECENT_COMMITS" | grep -Eiq '\[bot\]@users.noreply.github.com'; then
echo "Detected commits from a GitHub app/bot (..[bot]@users.noreply.github.com). Skipping autofix."
skip_autofix=true
fi

if $skip_autofix; then
echo "skip_autofix=true" >> "$GITHUB_OUTPUT"
fi

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
if: steps.check_autofix.outputs.skip_autofix != 'true'

update-starter-projects:
name: Update Starter Projects
if: ${{ github.actor != 'github-actions[bot]' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 50
- name: "Setup Environment"
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -50,15 +117,81 @@ jobs:
- name: Run starter projects update
run: uv run python scripts/ci/update_starter_projects.py

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
- name: Check if last commit is from autofix bot
id: check_autofix
run: |
set -euo pipefail

# Try to get author info from the event payload first
LAST_AUTHOR_NAME=""
LAST_AUTHOR_EMAIL=""
if [ -f "$GITHUB_EVENT_PATH" ]; then
LAST_AUTHOR_NAME=$(jq -r '.head_commit.author.name // .pull_request.head.user.login // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
LAST_AUTHOR_EMAIL=$(jq -r '.head_commit.author.email // .pull_request.head.user.email // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
fi

# Fallback to git to ensure we have exact last commit author if payload is incomplete
if [ -z "${LAST_AUTHOR_NAME}" ] || [ "${LAST_AUTHOR_NAME}" = "null" ]; then
LAST_AUTHOR_NAME=$(git log -1 --pretty=format:'%an' || echo "")
fi
if [ -z "${LAST_AUTHOR_EMAIL}" ] || [ "${LAST_AUTHOR_EMAIL}" = "null" ]; then
LAST_AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae' || echo "")
fi

echo "Detected Last Author: $LAST_AUTHOR_NAME <$LAST_AUTHOR_EMAIL>"

# Known bot names / emails used by autofix action (keep these)
BOT_NAMES=("autofix-ci" "autofix-ci[bot]" "autofix-ci[bot]@users.noreply.github.com")
BOT_EMAILS=("autofix-ci[bot]@users.noreply.github.com")

skip_autofix=false

# Explicit name/email checks (existing behavior)
for b in "${BOT_NAMES[@]}"; do
if [[ "$LAST_AUTHOR_NAME" == "$b" ]] || [[ "$LAST_AUTHOR_NAME" == *"$b"* ]]; then
skip_autofix=true
fi
done
for e in "${BOT_EMAILS[@]}"; do
if [[ "$LAST_AUTHOR_EMAIL" == "$e" ]] || [[ "$LAST_AUTHOR_EMAIL" == *"$e"* ]]; then
skip_autofix=true
fi
done

# --- New: scan recent commits for any bot-like author/email or autofix references ---
RECENT_COMMITS=$(git log -n 10 --pretty=format:'%an <%ae> || %s' || true)
echo "Recent commits (last 10):"
echo "$RECENT_COMMITS"

# Patterns to treat as bot/autofix activity; extend as necessary
BOT_PATTERNS='autofix-ci|autofix.ci|autofix-ci\[bot\]|autofix-ci\[bot\]@users.noreply.github.com|autofix|autofix\.ci|github-actions\[bot\]|\[autofix\]'

if echo "$RECENT_COMMITS" | grep -Eiq "$BOT_PATTERNS"; then
echo "Detected recent autofix/bot activity in commit history. Skipping autofix to avoid repeated bot commits."
skip_autofix=true
fi

# Also catch generic [bot] no-reply email authors (covers many GitHub apps)
if echo "$RECENT_COMMITS" | grep -Eiq '\[bot\]@users.noreply.github.com'; then
echo "Detected commits from a GitHub app/bot (..[bot]@users.noreply.github.com). Skipping autofix."
skip_autofix=true
fi

if $skip_autofix; then
echo "skip_autofix=true" >> "$GITHUB_OUTPUT"
fi

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
if: steps.check_autofix.outputs.skip_autofix != 'true'

update-component-index:
name: Update Component Index
if: ${{ github.actor != 'github-actions[bot]' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 50
- name: "Setup Environment"
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -75,7 +208,69 @@ jobs:
LFX_DEV: "1"
run: make build_component_index

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
- name: Check if last commit is from autofix bot
id: check_autofix
run: |
set -euo pipefail

# Try to get author info from the event payload first
LAST_AUTHOR_NAME=""
LAST_AUTHOR_EMAIL=""
if [ -f "$GITHUB_EVENT_PATH" ]; then
LAST_AUTHOR_NAME=$(jq -r '.head_commit.author.name // .pull_request.head.user.login // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
LAST_AUTHOR_EMAIL=$(jq -r '.head_commit.author.email // .pull_request.head.user.email // ""' "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
fi

# Fallback to git to ensure we have exact last commit author if payload is incomplete
if [ -z "${LAST_AUTHOR_NAME}" ] || [ "${LAST_AUTHOR_NAME}" = "null" ]; then
LAST_AUTHOR_NAME=$(git log -1 --pretty=format:'%an' || echo "")
fi
if [ -z "${LAST_AUTHOR_EMAIL}" ] || [ "${LAST_AUTHOR_EMAIL}" = "null" ]; then
LAST_AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae' || echo "")
fi

echo "Detected Last Author: $LAST_AUTHOR_NAME <$LAST_AUTHOR_EMAIL>"

# Known bot names / emails used by autofix action (keep these)
BOT_NAMES=("autofix-ci" "autofix-ci[bot]" "autofix-ci[bot]@users.noreply.github.com")
BOT_EMAILS=("autofix-ci[bot]@users.noreply.github.com")

skip_autofix=false

# Explicit name/email checks (existing behavior)
for b in "${BOT_NAMES[@]}"; do
if [[ "$LAST_AUTHOR_NAME" == "$b" ]] || [[ "$LAST_AUTHOR_NAME" == *"$b"* ]]; then
skip_autofix=true
fi
done
for e in "${BOT_EMAILS[@]}"; do
if [[ "$LAST_AUTHOR_EMAIL" == "$e" ]] || [[ "$LAST_AUTHOR_EMAIL" == *"$e"* ]]; then
skip_autofix=true
fi
done

# --- New: scan recent commits for any bot-like author/email or autofix references ---
RECENT_COMMITS=$(git log -n 10 --pretty=format:'%an <%ae> || %s' || true)
echo "Recent commits (last 10):"
echo "$RECENT_COMMITS"

# Patterns to treat as bot/autofix activity; extend as necessary
BOT_PATTERNS='autofix-ci|autofix.ci|autofix-ci\[bot\]|autofix-ci\[bot\]@users.noreply.github.com|autofix|autofix\.ci|github-actions\[bot\]|\[autofix\]'

if echo "$RECENT_COMMITS" | grep -Eiq "$BOT_PATTERNS"; then
echo "Detected recent autofix/bot activity in commit history. Skipping autofix to avoid repeated bot commits."
skip_autofix=true
fi

# Also catch generic [bot] no-reply email authors (covers many GitHub apps)
if echo "$RECENT_COMMITS" | grep -Eiq '\[bot\]@users.noreply.github.com'; then
echo "Detected commits from a GitHub app/bot (..[bot]@users.noreply.github.com). Skipping autofix."
skip_autofix=true
fi

if $skip_autofix; then
echo "skip_autofix=true" >> "$GITHUB_OUTPUT"
fi

- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
if: steps.check_autofix.outputs.skip_autofix != 'true'

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/lfx/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ dependencies = [
"validators>=0.34.0,<1.0.0",
"filelock>=3.20.0",
"pypdf>=5.1.0",
"mcp>=1.17.0,<2.0.0",

]

[project.scripts]
Expand Down
2 changes: 1 addition & 1 deletion src/lfx/src/lfx/_assets/component_index.json

Large diffs are not rendered by default.

Loading
Loading