#!/usr/bin/env bash
set -euo pipefail

if [[ $# -lt 1 ]]; then
  cat >&2 <<'USAGE'
Usage:
  jarvis-pr-draft <repo-path> [base-ref]

Examples:
  jarvis-pr-draft /home/agent/projects/FamilyDashboard main
  jarvis-pr-draft . HEAD~1
USAGE
  exit 2
fi

REPO="$1"
BASE="${2:-HEAD}"
cd "$REPO"

STATUS="$(git status --short 2>/dev/null || true)"
BRANCH="$(git branch --show-current 2>/dev/null || true)"
STAT="$(git diff --stat "$BASE" 2>/dev/null || git diff --stat 2>/dev/null || true)"
NAME_STATUS="$(git diff --name-status "$BASE" 2>/dev/null || git diff --name-status 2>/dev/null || true)"
DIFF_CHARS="$(git diff --no-ext-diff "$BASE" 2>/dev/null | wc -c | tr -d ' ' || echo 0)"
if [[ "${DIFF_CHARS:-0}" -le 30000 ]]; then
  DIFF="$(git diff --no-ext-diff "$BASE" 2>/dev/null || true)"
else
  DIFF="[DIFF_TOO_LARGE: ${DIFF_CHARS} chars. Use stat/name-status only; ask GPT 5.5 for targeted review if needed.]"
fi

PROMPT=$(cat <<EOF
Du bist der JARVIS PR-/Changelog-Draft-Worker (read-only, GPT 5.3 Codex-Spark).

Repo: $REPO
Branch: $BRANCH
Base/ref: $BASE

Regeln:
- Keine Dateien ändern, keine Commits, kein Push, kein Deploy.
- Keine Secrets ausgeben.
- Erstelle einen kompakten deutschen PR-Entwurf/Changelog.
- Trenne Fakten aus Diff von Annahmen.
- GPT 5.5/JARVIS entscheidet final und prüft vor Veröffentlichung.

Git status:
$STATUS

Diff stat:
$STAT

Name-status:
$NAME_STATUS

Diff/context:
$DIFF

Ausgabe:
## Titel
## Kurzbeschreibung
## Änderungen
## Tests/Verification
## Risiken/Rollback
EOF
)

hermes --profile code-review chat --toolsets terminal,file --max-turns 35 -q "$PROMPT"
