feat: replace Aider with secure mini-SWE-agent worker
Some checks failed
CI / test (push) Has been cancelled
CI / test (pull_request) Has been cancelled

This commit is contained in:
Christian Meyer
2026-08-31 02:46:58 +02:00
parent 582db3a654
commit 25ed6a8439
30 changed files with 4215 additions and 2148 deletions

View File

@@ -3,42 +3,54 @@ services:
build: .
restart: unless-stopped
environment:
FAILURE_DB_HOST: ${FAILURE_DB_HOST:-host.docker.internal}
FAILURE_DB_PORT: ${FAILURE_DB_PORT:-33060}
FAILURE_DB_NAME: ${FAILURE_DB_NAME:-laravel_ai_chat}
FAILURE_DB_USER: ${FAILURE_DB_USER:-laravel}
FAILURE_DB_PASSWORD: ${FAILURE_DB_PASSWORD:?FAILURE_DB_PASSWORD must be set}
SOURCE_REPOSITORY: ${SOURCE_REPOSITORY:-https://gitea.tisinfra.de/christian.meyer/lai.git}
SOURCE_BRANCH: ${SOURCE_BRANCH:-main}
AUTOMATION_MODE: ${AUTOMATION_MODE:-dry-run}
ALLOW_DIRECT_MAIN: ${ALLOW_DIRECT_MAIN:-false}
GITEA_URL: ${GITEA_URL:-https://gitea.tisinfra.de}
GITEA_OWNER: ${GITEA_OWNER:-christian.meyer}
GITEA_REPOSITORY: ${GITEA_REPOSITORY:-lai}
GITEA_USERNAME: ${GITEA_USERNAME:-automation-bot}
GITEA_TOKEN: ${GITEA_TOKEN:-}
AGENT_COMMAND: ${AGENT_COMMAND:-aider}
GITEA_TOKEN: ${GITEA_TOKEN:?GITEA_TOKEN must be set}
GITEA_QUEUED_LABEL: ${GITEA_QUEUED_LABEL:-ai:queued}
GITEA_RUNNING_LABEL: ${GITEA_RUNNING_LABEL:-ai:running}
GITEA_READY_LABEL: ${GITEA_READY_LABEL:-ai:ready}
GITEA_FAILED_LABEL: ${GITEA_FAILED_LABEL:-ai:failed}
AGENT_MODEL: ${AGENT_MODEL:-mistral/devstral-latest}
AGENT_MODEL_API_BASE: ${AGENT_MODEL_API_BASE:-}
AGENT_COMMAND_TIMEOUT_SECONDS: ${AGENT_COMMAND_TIMEOUT_SECONDS:-180}
AGENT_TIMEOUT_SECONDS: ${AGENT_TIMEOUT_SECONDS:-1200}
AGENT_STEP_LIMIT: ${AGENT_STEP_LIMIT:-50}
AGENT_COST_LIMIT: ${AGENT_COST_LIMIT:-5}
AGENT_USER: coder
MISTRAL_API_KEY: ${MISTRAL_API_KEY:-}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_API_BASE: ${OPENAI_API_BASE:-}
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
OLLAMA_API_BASE: ${OLLAMA_API_BASE:-}
POLL_SECONDS: ${POLL_SECONDS:-60}
MAX_AGENT_ATTEMPTS: ${MAX_AGENT_ATTEMPTS:-2}
STALE_CLAIM_MINUTES: ${STALE_CLAIM_MINUTES:-90}
TEST_COMMANDS: ${TEST_COMMANDS:-composer install --no-interaction --prefer-dist;;npm ci;;npm run build;;php artisan migrate:fresh --force;;php artisan test}
TEST_DB_HOST: ${TEST_DB_HOST:-host.docker.internal}
TEST_DB_PORT: ${TEST_DB_PORT:-33060}
SETUP_COMMANDS: ${SETUP_COMMANDS:-composer install --no-interaction --prefer-dist;;npm ci}
TEST_COMMANDS: ${TEST_COMMANDS:-npm run build;;php artisan test}
TEST_DB_HOST: ${TEST_DB_HOST:-laravel-ai-chat-mysql}
TEST_DB_PORT: ${TEST_DB_PORT:-3306}
TEST_DB_NAME: ${TEST_DB_NAME:-laravel_ai_chat_agent_test}
TEST_DB_USER: ${TEST_DB_USER:-lai_test_runner}
TEST_DB_PASSWORD: ${TEST_DB_PASSWORD:-agent_test_secret}
TEST_CUSTOMER_DB: ${TEST_CUSTOMER_DB:-customer_agent_test}
TEST_CONFIG_DB: ${TEST_CONFIG_DB:-cockpit_agent_test}
MAX_CHANGED_FILES: ${MAX_CHANGED_FILES:-12}
MAX_CHANGED_LINES: ${MAX_CHANGED_LINES:-800}
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- automation-workspaces:/workspaces
networks:
- automation
- lai_laravel_network
security_opt:
- no-new-privileges:true
pids_limit: 512
volumes:
automation-workspaces:
networks:
automation:
driver: bridge
lai_laravel_network:
external: true
name: lai_laravel-network