diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml
deleted file mode 100644
index 6b946ed1..00000000
--- a/.github/workflows/copilot-setup-steps.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-name: "Copilot Setup Steps"
-
-# Automatically run the setup steps when they are changed to allow for easy validation, and
-# allow manual testing through the repository's "Actions" tab
-on:
- workflow_dispatch:
- push:
- paths:
- - .github/workflows/copilot-setup-steps.yml
- pull_request:
- paths:
- - .github/workflows/copilot-setup-steps.yml
-
-jobs:
- # The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
- copilot-setup-steps:
- runs-on: ubuntu-latest
-
- # Timeout after 30 minutes (maximum is 59)
- timeout-minutes: 30
-
- # You can define any steps you want, and they will run before the agent starts.
- # If you do not check out your code, Copilot will do this for you.
- steps:
- - name: Checkout code
- uses: actions/checkout@v5
-
- - name: Set up Python 3.11
- uses: actions/setup-python@v5
- with:
- python-version: '3.11'
-
- - name: Cache pip packages
- uses: actions/cache@v4
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-pip-copilot-${{ hashFiles('**/pyproject.toml') }}
- restore-keys: |
- ${{ runner.os }}-pip-copilot-
- ${{ runner.os }}-pip-
-
- - name: Install Python dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -e ".[api]"
- pip install pytest pytest-asyncio httpx
-
- - name: Create minimal frontend stub for Copilot agent
- run: |
- mkdir -p lightrag/api/webui
- echo '
LightRAG - Copilot AgentCopilot Agent Mode
' > lightrag/api/webui/index.html
- echo "Created minimal frontend stub for Copilot agent environment"
-
- - name: Verify installation
- run: |
- python --version
- pip list | grep lightrag
- lightrag-server --help || echo "Note: Server requires .env configuration to run"
diff --git a/.github/workflows/docker-build-lite.yml b/.github/workflows/docker-build-lite.yml
deleted file mode 100644
index 9cbe6289..00000000
--- a/.github/workflows/docker-build-lite.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-name: Build Lite Docker Image
-
-on:
- workflow_dispatch:
- inputs:
- _notes_:
- description: '⚠️ Create lite Docker images only after non-trivial version releases.'
- required: false
- type: boolean
- default: false
-
-permissions:
- contents: read
- packages: write
-
-jobs:
- build-and-push-lite:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Get latest tag
- id: get_tag
- run: |
- LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
- if [ -z "$LATEST_TAG" ]; then
- LATEST_TAG="sha-$(git rev-parse --short HEAD)"
- echo "No tags found, using commit SHA: $LATEST_TAG"
- else
- echo "Latest tag found: $LATEST_TAG"
- fi
- echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT
-
- - name: Prepare lite tag
- id: lite_tag
- run: |
- LITE_TAG="${{ steps.get_tag.outputs.tag }}-lite"
- echo "Lite image tag: $LITE_TAG"
- echo "lite_tag=$LITE_TAG" >> $GITHUB_OUTPUT
-
- - name: Update version in __init__.py
- run: |
- sed -i "s/__version__ = \".*\"/__version__ = \"${{ steps.get_tag.outputs.tag }}\"/" lightrag/__init__.py
- cat lightrag/__init__.py | grep __version__
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to GitHub Container Registry
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Extract metadata for Docker
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: ghcr.io/${{ github.repository }}
- tags: |
- type=raw,value=${{ steps.lite_tag.outputs.lite_tag }}
- type=raw,value=lite
-
- - name: Build and push lite Docker image
- uses: docker/build-push-action@v5
- with:
- context: .
- file: ./Dockerfile.lite
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: type=gha
- cache-to: type=gha,mode=min
-
- - name: Output image details
- run: |
- echo "Lite Docker image built and pushed successfully!"
- echo "Image tag: ghcr.io/${{ github.repository }}:${{ steps.lite_tag.outputs.lite_tag }}"
- echo "Base Git tag used: ${{ steps.get_tag.outputs.tag }}"
diff --git a/.github/workflows/docker-build-manual.yml b/.github/workflows/docker-build-manual.yml
deleted file mode 100644
index de459d5a..00000000
--- a/.github/workflows/docker-build-manual.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-name: Build Test Docker Image manually
-
-on:
- workflow_dispatch:
- inputs:
- _notes_:
- description: '⚠️ Please create a new git tag before building the docker image.'
- required: false
- type: boolean
- default: false
-
-permissions:
- contents: read
- packages: write
-
-jobs:
- build-and-push:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # Fetch all history for tags
-
- - name: Get latest tag
- id: get_tag
- run: |
- # Get the latest tag, fallback to commit SHA if no tags exist
- LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
- if [ -z "$LATEST_TAG" ]; then
- LATEST_TAG="sha-$(git rev-parse --short HEAD)"
- echo "No tags found, using commit SHA: $LATEST_TAG"
- else
- echo "Latest tag found: $LATEST_TAG"
- fi
- echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT
- echo "image_tag=$LATEST_TAG" >> $GITHUB_OUTPUT
-
- - name: Update version in __init__.py
- run: |
- sed -i "s/__version__ = \".*\"/__version__ = \"${{ steps.get_tag.outputs.tag }}\"/" lightrag/__init__.py
- echo "Updated __init__.py with version ${{ steps.get_tag.outputs.tag }}"
- cat lightrag/__init__.py | grep __version__
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to GitHub Container Registry
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Extract metadata for Docker
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: ghcr.io/${{ github.repository }}
- tags: |
- type=raw,value=${{ steps.get_tag.outputs.tag }}
-
- - name: Build and push Docker image
- uses: docker/build-push-action@v5
- with:
- context: .
- file: ./Dockerfile
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
-
- - name: Output image details
- run: |
- echo "Docker image built and pushed successfully!"
- echo "Image tags:"
- echo " - ghcr.io/${{ github.repository }}:${{ steps.get_tag.outputs.tag }}"
- echo "Latest Git tag used: ${{ steps.get_tag.outputs.tag }}"
diff --git a/.github/workflows/linting.yaml b/.github/workflows/linting.yaml
deleted file mode 100644
index aa054369..00000000
--- a/.github/workflows/linting.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Linting and Formatting
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-jobs:
- lint-and-format:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Set up Python
- uses: actions/setup-python@v2
- with:
- python-version: '3.x'
-
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install pre-commit
-
- - name: Run pre-commit
- run: pre-commit run --all-files --show-diff-on-failure
diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml
deleted file mode 100644
index 14c2bcc5..00000000
--- a/.github/workflows/pypi-publish.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-name: Upload LightRAG-hku Package
-
-on:
- release:
- types: [published]
- workflow_dispatch:
-
-permissions:
- contents: read
-
-jobs:
- release-build:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0 # Fetch all history for tags
-
- # Build frontend WebUI
- - name: Setup Bun
- uses: oven-sh/setup-bun@v1
- with:
- bun-version: latest
-
- - name: Build Frontend WebUI
- run: |
- cd lightrag_webui
- bun install --frozen-lockfile
- bun run build
- cd ..
-
- - name: Verify Frontend Build
- run: |
- if [ ! -f "lightrag/api/webui/index.html" ]; then
- echo "❌ Error: Frontend build failed - index.html not found"
- exit 1
- fi
- echo "✅ Frontend build verified"
- echo "Frontend files:"
- ls -lh lightrag/api/webui/ | head -10
-
- - uses: actions/setup-python@v5
- with:
- python-version: "3.x"
-
- - name: Get version from tag
- id: get_version
- run: |
- TAG=$(git describe --tags --abbrev=0)
- echo "Found tag: $TAG"
- echo "Extracted version: $TAG"
- echo "version=$TAG" >> $GITHUB_OUTPUT
-
- - name: Update version in __init__.py
- run: |
- sed -i "s/__version__ = \".*\"/__version__ = \"${{ steps.get_version.outputs.version }}\"/" lightrag/__init__.py
- echo "Updated __init__.py with version ${{ steps.get_version.outputs.version }}"
- cat lightrag/__init__.py | grep __version__
-
- - name: Build release distributions
- run: |
- python -m pip install build
- python -m build
-
- - name: Upload distributions
- uses: actions/upload-artifact@v4
- with:
- name: release-dists
- path: dist/
-
- pypi-publish:
- runs-on: ubuntu-latest
- needs:
- - release-build
- permissions:
- id-token: write
-
- environment:
- name: pypi
-
- steps:
- - name: Retrieve release distributions
- uses: actions/download-artifact@v4
- with:
- name: release-dists
- path: dist/
-
- - name: Publish release distributions to PyPI
- uses: pypa/gh-action-pypi-publish@release/v1
- with:
- packages-dir: dist/
diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml
deleted file mode 100644
index 30643dda..00000000
--- a/.github/workflows/stale.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-# .github/workflows/stale.yml
-name: Mark stale issues and pull requests
-
-on:
- schedule:
- - cron: '30 22 * * *' # run at 22:30+08 every day
-
-permissions:
- issues: write
- pull-requests: write
-
-jobs:
- stale:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/stale@v9
- with:
- days-before-stale: 90 # 90 days
- days-before-close: 7 # 7 days after marked as stale
- stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
- close-issue-message: 'This issue has been automatically closed because it has not had recent activity. Please open a new issue if you still have this problem.'
- stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.'
- close-pr-message: 'This pull request has been automatically closed because it has not had recent activity.'
- # If there are specific labels, exempt them from being marked as stale, for example:
- exempt-issue-labels: 'enhancement,tracked'
- # exempt-pr-labels: 'bug,enhancement,help wanted'
- repo-token: ${{ secrets.GITHUB_TOKEN }} # token provided by GitHub
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
deleted file mode 100644
index e7d00f4a..00000000
--- a/.github/workflows/tests.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-name: Offline Unit Tests
-
-on:
- push:
- branches: [ main, dev ]
- pull_request:
- branches: [ main, dev ]
-
-jobs:
- offline-tests:
- name: Offline Tests
- runs-on: ubuntu-latest
-
- strategy:
- matrix:
- python-version: ['3.10', '3.11', '3.12']
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v5
- with:
- python-version: ${{ matrix.python-version }}
-
- - name: Cache pip packages
- uses: actions/cache@v4
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt', '**/pyproject.toml') }}
- restore-keys: |
- ${{ runner.os }}-pip-
-
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -e ".[api]"
- pip install pytest pytest-asyncio
-
- - name: Run offline tests
- run: |
- # Run only tests marked as 'offline' (no external dependencies)
- # Integration tests requiring databases/APIs are skipped by default
- pytest tests/ -m offline -v --tb=short
-
- - name: Upload test results
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: test-results-py${{ matrix.python-version }}
- path: |
- .pytest_cache/
- test-results.xml
- retention-days: 7
diff --git a/docker-build-push.sh b/docker-build-push.sh
index be51a381..7c0fd596 100755
--- a/docker-build-push.sh
+++ b/docker-build-push.sh
@@ -2,7 +2,7 @@
set -e
# Configuration
-IMAGE_NAME="ghcr.io/hkuds/lightrag"
+IMAGE_NAME="ghcr.io/clssck/lightrag"
DOCKERFILE="Dockerfile"
TAG="latest"