#!/usr/bin/env bash set -euo pipefail export PATH="$PATH:$HOME/.local/bin" unset ANTIGRAVITY_LS_ADDRESS ANTIGRAVITY_CSRF_TOKEN ANTIGRAVITY_AGENT SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)" TEMPLATE_FILE="$SCRIPT_DIR/205_followup_prompt.template.txt" PARSER_SCRIPT="$SCRIPT_DIR/parse_205_runner_output.py" MODEL="gemini-3.6-flash-high" MODE="${AGY_MODE:-plan}" PRINT_TIMEOUT="${AGY_PRINT_TIMEOUT:-20m}" AGY_LOG_FILE="${AGY_LOG_FILE:-}" if command -v agy-ultra &>/dev/null; then EXEC_BIN="agy-ultra" elif command -v agy &>/dev/null; then EXEC_BIN="agy" else echo "ERROR: agy CLI binary not found in PATH" >&2 exit 1 fi INPUT_TEXT="" if [ ! -t 0 ]; then INPUT_TEXT="$(cat -)" fi if [ -f "$TEMPLATE_FILE" ]; then TEMPLATE_CONTENT="$(cat "$TEMPLATE_FILE")" if [ -n "$INPUT_TEXT" ]; then if [[ "$TEMPLATE_CONTENT" == *"{TASK_INPUT}"* ]]; then PROMPT="${TEMPLATE_CONTENT//\{TASK_INPUT\}/$INPUT_TEXT}" else PROMPT="${TEMPLATE_CONTENT}"$'\n\n'"${INPUT_TEXT}" fi else PROMPT="${TEMPLATE_CONTENT}" fi else if [ -n "$INPUT_TEXT" ]; then PROMPT="$INPUT_TEXT" else PROMPT="Leggi AGENTS.md e CURRENT-205.md, verifica lo stato del sistema e rispondi con l'esito del task nel formato standard 205." fi fi CMD_ARGS=( -p "$PROMPT" --model "$MODEL" --mode "$MODE" --print-timeout "$PRINT_TIMEOUT" --add-dir "$REPO_DIR" ) if [ -n "$AGY_LOG_FILE" ]; then CMD_ARGS+=(--log-file "$AGY_LOG_FILE") fi set +e RAW_OUTPUT="$( "$EXEC_BIN" "${CMD_ARGS[@]}" 2>&1 )" AGY_EXIT=$? set -e if [[ $AGY_EXIT -ne 0 ]]; then printf '%s\n' "$RAW_OUTPUT" >&2 exit "$AGY_EXIT" fi if [[ -z "${RAW_OUTPUT//[[:space:]]/}" ]]; then echo "ERROR: agy produced empty output" >&2 exit 1 fi LOWER_OUTPUT="$(echo "$RAW_OUTPUT" | tr '[:upper:]' '[:lower:]')" if [[ "$LOWER_OUTPUT" == *"jetski: no output produced"* ]] || \ [[ "$LOWER_OUTPUT" == *"quota reached"* ]] || \ [[ "$LOWER_OUTPUT" == *"permission auto-denied"* ]]; then echo "ERROR: agy output contains invalid execution condition (jetski/quota/permission)" >&2 printf '%s\n' "$RAW_OUTPUT" >&2 exit 1 fi REAL_REPO="$(git -C "$REPO_DIR" config --get remote.origin.url)" REAL_BRANCH="$(git -C "$REPO_DIR" rev-parse --abbrev-ref HEAD)" REAL_COMMIT="$(git -C "$REPO_DIR" rev-parse HEAD)" set +e PARSER_OUT="$(python3 "$PARSER_SCRIPT" --expected-repo "$REAL_REPO" --expected-branch "$REAL_BRANCH" --expected-commit "$REAL_COMMIT" <<< "$RAW_OUTPUT")" PARSER_EXIT=$? set -e printf '%s\n' "$PARSER_OUT" exit $PARSER_EXIT