diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..763c9a57 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,17 @@ +# Base image with Python 3.12 slim +FROM mcr.microsoft.com/devcontainers/python:3.12-bullseye + +# Clean apt cache and reduce layers +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + git curl wget build-essential && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# Optional: remove unwanted preinstalled Python packages to save space +RUN pip freeze | xargs pip uninstall -y || true + +# Create workspace directory +WORKDIR /workspace + +# Set default shell +SHELL ["/bin/bash", "-c"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..760d87aa --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,24 @@ +{ + "name": "Python Codespaces Starter", + "dockerFile": "Dockerfile", + "context": "..", + "features": { + "ghcr.io/devcontainers/features/python:1": { + "version": "3.12" + } + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-pyright.pyright", + "ms-python.python" + ], + "settings": { + "python.analysis.typeCheckingMode": "basic", + "python.languageServer": "Pylance" + } + } + }, + "postCreateCommand": "bash .devcontainer/setup.sh", + "remoteUser": "codespaces" +} diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100644 index 00000000..230d8346 --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Ensure script exits on error +set -e + +echo "=== Cleaning Python caches and pip cache ===" +rm -rf ~/.cache/pip +rm -rf ~/.cache/pypoetry +rm -rf ~/.local/share/virtualenvs + +echo "=== Installing project dependencies ===" +if [ -f /workspaces/requirements.txt ]; then + pip install --no-cache-dir -r /workspaces/requirements.txt +fi + +echo "=== Environment ready ===" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 77a09161..b7cb4c95 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -1,6 +1,7 @@ name: pre-commit on: + workflow_dispatch: pull_request: push: branches: [main] @@ -8,9 +9,32 @@ on: jobs: pre-commit: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 with: python-version: "3.12" - - uses: pre-commit/action@v3.0.1 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pre-commit ruff uv + + - name: Run pre-commit auto-fix + run: | + # Auto-fix all hooks including Ruff + make format + pre-commit run --all-files --show-diff-on-failure --hook-stage manual --exclude 'webui/*' + + # Configure git for GitHub Actions bot + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # Commit & push changes if any + git add . + git commit -m "Apply pre-commit fixes" || echo "No changes to commit" + git push || echo "Push failed (nothing to push)" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e57adf4b..cf9d1db5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,7 +35,7 @@ jobs: run: bash scripts/test-cov.sh - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: file: ./coverage.xml fail_ci_if_error: false diff --git a/.gitignore b/.gitignore index 45092090..fb281b40 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,12 @@ htmlcov/ .tox/ .nox/ .hypothesis/ +__pycache__/ +*.pyc +*.pyo +*.pyd +.env +.venv/ +dist/ +build/ +*.egg-info/ diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/.gitkeep b/data/usr/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/agents/.gitkeep b/data/usr/agents/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/agents/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/knowledge/.gitkeep b/data/usr/knowledge/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/knowledge/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/knowledge/main/.gitkeep b/data/usr/knowledge/main/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/knowledge/main/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/knowledge/solutions/.gitkeep b/data/usr/knowledge/solutions/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/knowledge/solutions/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/plugins/.gitkeep b/data/usr/plugins/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/plugins/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/skills/.gitkeep b/data/usr/skills/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/skills/.gitkeep @@ -0,0 +1 @@ + diff --git a/data/usr/workdir/.gitkeep b/data/usr/workdir/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/usr/workdir/.gitkeep @@ -0,0 +1 @@ + diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/logs/.gitkeep @@ -0,0 +1 @@ +