Files
installerscript-sh/recipes/ai/builder-agent/install.sh
2025-11-11 11:47:15 +01:00

81 lines
2.7 KiB
Bash

#!/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