#!/usr/bin/env bash set -euo pipefail ensure_root detect_pkg_manager pkg_install curl pkg_install git || true if ask_to_install "Builder-Agent"; then echo "" read -rp "Ollama Router Base-URL (z.B. http://192.168.3.21:11437): " ROUTER_URL ROUTER_URL=${ROUTER_URL:-http://localhost:11437} echo "" read -rp "Projektverzeichnis (leer = auto-detect): " PROJECT_DIR if [ -z "${PROJECT_DIR}" ]; then if git rev-parse --show-toplevel >/dev/null 2>&1; then PROJECT_DIR="$(git rev-parse --show-toplevel)" else PROJECT_DIR="$(pwd)" fi fi PROJECT_DIR="$(readlink -f "${PROJECT_DIR}")" BASE="/srv/ai/builder" $SUDO mkdir -p "${BASE}" $SUDO tee "${BASE}/builder.yml" >/dev/null <<'EOF' name: Builder-Agent language: de autonomy: soft endpoint: "${ROUTER_URL}" models: planner: "llama3.1:8b-instruct" reasoner: "huihui_ai/deepseek-r1-abliterated:14b" coder_primary: "qwen2.5-coder:14b" coder_secondary: "deepseek-coder-v2:16b" cpu_fallback: "qwen2.5-coder:7b" workspace: project_dir: "${PROJECT_DIR}" tests: enabled: true force_languages: [] prompts: system: | Du bist ein Builder-Agent (soft). Ziel: Probleme lösen mit minimaler Rückfrage. Strategie: 1) Plane kurz (ToDo-Liste), dann implementiere iterativ im Workspace. 2) Führe nach jedem Schritt Tests/Lints aus (falls verfügbar). Repariere Fehler selbstständig. 3) Schreibe klare Commits; dokumentiere Änderungen kompakt in CHANGELOG.md. 4) Nur bei sicherheitsrelevanten/zerstörerischen Aktionen Rückfrage. Liefere am Ende: TL;DR + nächste Schritte. EOF $SUDO sed -i "s|\${ROUTER_URL}|${ROUTER_URL}|g; s|\${PROJECT_DIR}|${PROJECT_DIR}|g" "${BASE}/builder.yml" $SUDO tee "${BASE}/run_tests.sh" >/dev/null <<'EOF' #!/usr/bin/env bash set -euo pipefail ROOT="${1:-.}" cd "${ROOT}" if [ -f "requirements.txt" ] || ls -1 **/requirements.txt >/dev/null 2>&1; then command -v pytest >/dev/null 2>&1 && pytest -q || true fi if [ -f "package.json" ]; then if npm run | grep -q "test"; then npm test --silent || true; fi if npm run | grep -q "lint"; then npm run lint --silent || true; fi if npm run | grep -q "typecheck"; then npm run typecheck --silent || true; fi fi if [ -f "composer.json" ]; then if [ -f "vendor/bin/pest" ]; then vendor/bin/pest || true elif [ -f "vendor/bin/phpunit" ]; then vendor/bin/phpunit || true fi fi if [ -f "Dockerfile" ]; then docker build -q -t tmp-builder-test . || true fi if command -v shellcheck >/dev/null 2>&1; then find . -type f -name "*.sh" -print0 | xargs -0 -r shellcheck || true fi EOF $SUDO chmod +x "${BASE}/run_tests.sh" echo "✅ Builder-Agent konfiguriert unter ${BASE} (Workspace: ${PROJECT_DIR})" else log "${YELLOW}⏭ Builder-Agent übersprungen.${NC}" fi